我几天来一直在努力解决问题而且我对如何解决这个问题感到茫然。我正在使用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进行编译。
我试图解决这些问题的一些事情:
如果有人知道我可能做错了什么,请告诉我。
我应该提到的一件事是,这是一个特定的项目与另一个项目一起使用,该项目是实际的应用程序项目。这个项目特别是一个带有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>