[英]How to add external jar libraries to an android project from the command line
我正在尝试构建一个具有一些依赖关系的Android项目。 jar文件位于lib /目录中。 我可以通过将这些jar文件添加到我的类路径来构建项目,但当然它在模拟器中强制关闭,因为这些库不存在。
我是从命令行使用ant( 不是在eclipse中)这样做的。 如何从命令行中将它包含在apk中?
Jay K的答案在撰写本文时是对的,但现在SDK已经改变了,这是实现它的新方法:
ant.properties
添加到ant.properties
:
jar.libs.dir=lib
仅供将来参考:目前SDK中存在一个错误,无法使用jar.libs.dir: http : //code.google.com/p/android/issues/detail? id = 33194
一个简单的解决方案是再次使用jar.libs.dir(等待修复bug),就是在build.xml文件中添加这个目标:
<target name="-pre-compile">
<path id="project.all.jars.path">
<path path="${toString:project.all.jars.path}"/>
<fileset dir="${jar.libs.dir}">
<include name="*.jar"/>
</fileset>
</path>
</target>
在编译时这样做:
javac -encoding ascii -target 1.5 -d bin/classes \
-bootclasspath $SDKDIR/android.jar src/some/project/* -classpath=libs/*.jar
而且,当您为Dalvik生成字节码时:
dx --dex --output=bin/classes.dex bin/classes libs/*.jar
此外,当您打包APK文件时:
apkbuilder bin/something.apk -z bin/projectname.ap_ \
-f bin/classes.dex -rf src -rj libs
我假设你使用Linux ...在Windows上几乎是一样的。
回答我自己的问题:
我创建了一个文件“build.properties”并添加了该行
external.libs.dir=lib
这真是一个幸运的猜测。
上面的例子不太合适。 您无法覆盖project.all.jars.path内联。 以下是一个工作示例:
<target name="-pre-compile">
<!-- HACK to add the android-support-v4.jar to the classpath directly from the SDK -->
<echo>ORIGINAL jars.path : ${toString:project.all.jars.path}</echo>
<path id="project.all.jars.path.hacked">
<path path="${toString:project.all.jars.path}"/>
<path path="${sdk.dir}/extras/android/support/v4/android-support-v4.jar"/>
</path>
<path id="project.all.jars.path">
<path path="${toString:project.all.jars.path.hacked}"/>
</path>
<echo>HACKED jars.path : ${toString:project.all.jars.path}</echo>
</target>
如果将库存储在$ {basedir} / libs中,则ant脚本将能够找到它们。
我查看了当前的ant脚本($ {sdk.dir} /tools/ant/build.xml),并将jar.libs.dir定义为“libs”。
仅供参考,蚂蚁脚本有良好的文档记录,因此很容易追踪。
如果你移动libs,一定要编辑你的.classpath文件,以防止eclipse用户不必要地遭受痛苦。
external.libs.dir=lib
经过2个小时的搜索,这对我有用。 我的libs目录中的jar文件最终编译并与APK捆绑在一起。
将jar放在${YOUR_PROJECT}/libs
目录中
该jar.libs.dir
属性是一个目录。 它不像CLASSPATH,它是以冒号/分号分隔的列表。 在jar.libs.dir中拥有多个目录的方法是不直接设置它; 让它默认为libs
并转到libs并创建所需的.jar文件所需的软链接。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.