使用jar依赖项构建一个android库项目

时间:2012-11-11 01:52:16

标签: android ant build air compilation

我几天来一直在努力解决问题而且我对如何解决这个问题感到茫然。我正在使用Android sdk提供的Android工具编译的Android库项目。在项目内部,我遵循一个android项目的标准结构(我的jar文件在项目的libs目录中找到:

enter image description here

我发现当我使用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. 尝试修改项目的类路径以包含libs的jar文件
  4. 如果有人知道我可能做错了什么,请告诉我。

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

    另一件事是这是一个Adobe 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>
    

0 个答案:

没有答案