我正在尝试在Windows上使用make / ant在控制台上构建Android port of Hedgewars。经过一些试验和错误后,我设法完成了整个构建过程,但构建的应用程序将无法启动。 logcat揭示了Android Support library中的类缺失的原因。
然而,库(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存储库中取出以获得良好的衡量标准,现在它可以运行了。不幸的是,不知道到底有什么区别。我想这意味着赏金的最佳候选人是NickT,但他没有做出正确答案。评论中的建议。
答案 0 :(得分:2)
事实证明这是Android SDK中的一个错误。 r18的发行说明说:
修复了libs /文件夹中的某些jar库不存在的Ant问题 在某些情况下有所收获。
由于从r17到r19的更新为我解决了问题,这很可能是导致问题的原因。感谢NickT,他的评论指出了我正确的方向,即使这只是一个澄清问题。
答案 1 :(得分:1)
好的,请尝试更新到最新版本的SDK工具
答案 2 :(得分:0)
在Eclipse中,转到项目属性并选择Order and export
选项卡。检查所需的库并清理构建。
希望有所帮助!
答案 3 :(得分:0)
也许你和v4 / v13有些冲突?
android-support-v4.jar和android-support-v13.jar的特例。
我们为这两个库创建了一个特例,因为-v13包含-v4&gt;的完整版本。如果两者都找到,则只使用-v13。
请注意,我们无法保证-v4内部-v13的版本与其他库使用的版本相同&gt;。我们建议您在使用支持库的较新版本&gt;更新项目时,同时更新所有项目,无论他们是否使用 - &gt; v4或-v13。