我正试图在控制台上使用make/ant在Windows上构建Hedgewars的Android端口。经过一些尝试和错误,我设法完成了整个构建过程,但构建的应用程序不会启动。logcat揭示了原因是Android支持库中的类丢失。
然而,这个库(android-support-v13.jar)存在于android项目的"libs"目录中,在构建过程中显然会使用它,因为在编译java源代码时删除它会导致错误。我检查了classes.dex文件,其中应该添加库类(据我所知),但它们似乎不在那里。
那么,是什么原因导致.apk中没有包含支持库呢?libs/armeabi中的其他(本机)库也包括在内。构建是使用ant执行的,build.xml基本上只设置变量sdk.dir
和target
(android-13),然后导入${sdk.dir}/tools/ant/build.xml
。
为了澄清,我知道如何使用eclipse进行构建。问题是为什么普通的ant构建无法添加库,以及如何解决这个问题。
以下是项目目录中的build.xml(没有注释):
<?xml version="1.0" encoding="UTF-8"?>
<project name="MainActivity" default="help">
<loadproperties srcFile="local.properties" />
<property file="ant.properties" />
<loadproperties srcFile="project.properties" />
<fail
message="sdk.dir is missing. Make sure to generate local.properties using 'android update project'"
unless="sdk.dir"
/>
<import file="${sdk.dir}/tools/ant/build.xml" />
</project>
local.properties定义sdk.dir,project.properties定义target,ant.properties为空。
更新:哦,当然,我把所有东西都更新到了最新版本(ndk8,sdk19),这是从Hedgewars存储库中提取的,现在它可以工作了。不幸的是,不知道到底是什么造成了不同。我想这意味着最好的赏金候选人是尼克,但他没有做出正确的回答。评论中的建议。
原来这是Android SDK中的一个错误。r18的发布说明中写道:
修复了Ant的问题,其中libs/文件夹中的一些jar库没有在某些情况下被拾起。
由于从r17更新到r19为我解决了这个问题,这很可能是问题的原因。感谢NickT的评论为我指明了正确的方向,即使这只是一个澄清问题。
好的,尝试更新到最新版本的SDK工具
在Eclipse中,转到项目属性并选择Order and export
选项卡。检查所需的库并清理构建。
希望能有所帮助!
也许您与v4/v13有一些冲突?
android-support-v4.jar和android-ssupport-v13.jar的特例。
我们对这两个库进行了特殊处理,因为-v13包含完整版本的-v4>在…内如果两者都找到了,那么只会使用-v13。
请注意,我们不能保证-v13中的-v4版本与使用的版本相同>其他图书馆。我们建议您在使用较新版本更新项目时>在支持库中,您可以同时更新所有项目,无论它们是否使用->v4或-v13。
[来源]