这是一个奇怪的。我的-pre-compile
中有一个custom_rules.xml
目标。在这里,一些JAR被复制到libs
文件夹中。
如果我执行干净构建,它会在运行时失败,因为这些库不会包含在.apk中。查看ant -v ...
的输出,Dx不处理这些库。因此,虽然正在针对这些库编译项目,但它们不包括在Dx阶段。
如果我随后做了一个非干净的ant debug
,一切都很好,因为-pre-compile
复制的JAR在构建开始时已经存在。
任何想法我做错了什么?
答案 0 :(得分:0)
我最终通过从SDK中.../tools/ant/build.xml
精心添加echo语句来解决这个问题。
.../libs
任务中定义了包含-setup
中Dx库的路径。这是在-pre-compile
或-pre-build
之前的链中,因此如果您将JAR复制到.../libs
文件夹中的任何一个点,那就太晚了。
我最终覆盖了-setup
任务,因此,
<target name="-setup" depends="-prepare-libs, android_rules.-setup"/>
<target name="-prepare-libs">
... build / copy libs in to .../libs here
</target>
请注意调用已覆盖的-setup
任务的语法...在project
标记中定义的项目名称附加了任务名称,如build.xml
中导入的{{1}}中所定义SDK。