5

几天来我一直在努力解决一个问题,我不知道如何解决这个问题。我正在使用由 android sdk 提供的 Android 工具编译的 Android 库项目。在项目内部,我遵循一个 android 项目的标准结构(我的 jar 文件位于项目的 libs 目录中:

在此处输入图像描述

我发现当我使用 Ant 编译项目时:

<target name="compile-payment-lib" depends="prepare,init-profile">
    <delete file="../payment-lib/project.properties"/>
    <exec executable="${android.tool}" dir="../payment-lib" failonerror="true">
        <arg value="update"/>
        <arg value="lib-project"/>
        <arg value="-p"/>
        <arg value="${basedir}/../payment-lib"/>
        <arg value="-t"/>
        <arg value="${android.target.version}"/>
    </exec>
    <echo file="../payment-lib/project.properties" message="android.library=true" append="true"/>
    <ant dir="../payment-lib" target="release"/>
</target>

它不包括 jar 文件,因此当我们尝试收集这些类并使用它们时,它会在运行时丢失引用。我正在使用最新版本的 android 工具 rev20 进行编译。

我试图解决这些参考的一些事情:

  1. 解压 Jar 文件并将文件放入 bin 目录,然后将这些文件添加到我们的主 jar 文件中
  2. 尝试将 jar 编译到 classes.dex 中(不知道如何在构建时使用此文件)
  3. 尝试修改项目的类路径以包含库的 jar 文件

如果有人知道我可能做错了什么,请告诉我。

我应该提到的一件事是,这是一个特定项目与另一个项目一起使用,即实际应用程序项目。这个项目特别是一个带有 jar 依赖项的库项目。

另一件事是这是一个 Adob​​e Air 应用程序,在 android 中有一些本机扩展。因此,为了完成我们的任务,我们创建了一个带有主 jar 文件的 ANE,其中包含我们使用这样的 ant 任务的所有引用:

<target name="master-jar" depends="prepare">
    <delete dir="target/uber-jar" />
    <mkdir dir="target/uber-jar"/>

    <antcall target="expand-3rdparty-jars" />

    <jar destfile="${basedir}/target/master.jar">
        <fileset dir="../game/gamelobby/bin/classes" includes="**/*"/>
        <fileset dir="../payment-lib/bin/classes" includes="**/*" excludes="**/R*.class" />
        <fileset dir="../crosscell_ad_lib/bin/classes" includes="**/*" excludes="**/R*.class" />
        <fileset dir="src" includes="config/**/*"/>
        <fileset dir="${basedir}/target/uber-jar" includes="**/*"/>
    </jar>
</target>
4

0 回答 0