如何使用ant构建带有外部库的Android应用程序(错误找不到符号)?

时间:2012-08-03 07:41:23

标签: android ant

我想使用ant在libs中使用jar构建我的项目,build.xml的生成是成功的,但是当我执行ant release时,编译时会出错。

[javac] E:\Project\Pascal\Source\workspace\xxx\src\com\xxx\xxx\uti
ls\CommonUtil.java:1267: cannot find symbol
[javac] symbol  : method setOTAMode()
[javac] location: class android.os.RecoverySystem
[javac]             RecoverySystem.setOTAMode();
                     ^

但在日食中,我可以成功编译。所以我需要手动在build.xml中添加jar,但我被告知android ant会照看libs目录中的jar,就像我在base_rules.xml中找到的那样

<property name="jar.libs.dir" value="libs" />
<property name="jar.libs.absolute.dir" location="${jar.libs.dir}" />
<property name="native.libs.absolute.dir" location="libs" /

那么我该如何解决这个问题。

编辑:我的应用程序是针对具有方法setOTAMode的指定BSP开发的,但我使用标准SDK开发,因此为了成功编译,我添加了一个具有相同包名{{的jar 1}}在BSP中伪造java编译器。然后,当您在BSP中运行应用程序时,将调用BSP中的实际方法。

所以android.os.RecoverySystem在jar中定义,android.os.RecoverySystem被声明。

1 个答案:

答案 0 :(得分:0)

该符号不是来自您的JAR,因为您的JAR中没有android.os代码。 android.os.RecoverySystem来自Android SDK。 Android SDK中没有此类的setOTAMode()方法,因此这段代码永远不会构建。 Android源代码AFAICT中甚至没有setOTAMode()方法。