Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用ant构建带有外部库的android应用程序(错误无法找到符号)?_Android_Ant - Fatal编程技术网

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

如何使用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

我想使用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.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。