为什么Android支持库没有添加到我的.apk中?

时间:2012-03-30 14:15:09

标签: android ant build android-ndk

我正在尝试在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.dirtarget(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,但他没有做出正确答案。评论中的建议。

4 个答案:

答案 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。

[source]