如何使用ant构建带有外部库的android应用程序(错误无法找到符号)?
我想使用ant在libs中使用jar构建我的项目,如何使用ant构建带有外部库的android应用程序(错误无法找到符号)?,android,ant,Android,Ant,我想使用ant在libs中使用jar构建我的项目,build.xml的生成是成功的,但是当我执行ant版本时,编译时出现错误 [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.Rec
build.xml
的生成是成功的,但是当我执行ant版本时,编译时出现错误
[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();
^
但在eclipse中,我可以成功编译。因此,我是否需要手动将jar添加到build.xml中,但我被告知android ant将像我在base_rules.xml中找到的那样在libs目录中管理jar
<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" /
该符号不是来自您的JAR,因为您的JAR中没有android.os
代码android.os.RecoverySystem
来自android SDK。Android SDK中没有用于该类的setOTAMode()
方法,因此该代码永远不会生成。Android源代码AFAICT中甚至没有setOTAMode()
方法。@dreamtale:您不能简单地从第三方JAR向现有类添加方法。您得到的是RecoverySystem
的真正定义,它没有setOTAMode()
。AOSP构建过程包括一种生成自己版本的Android SDK的方法——您需要这样做并使用这些结果。或者,在运行时使用反射来访问此方法,而不是尝试直接引用它。但是为什么它在由eclipse构建时可以工作,有什么区别?@dreamtale:因为我不知道您如何配置eclipse,所以我无法回答这个问题。将jar添加到eclipse中,那么编译错误将消失,如果没有其他方法,我将制作自己的SDK。