Android:使用Ant版本构建apk时出现问题

Android:使用Ant版本构建apk时出现问题,android,ant,sdk,build,Android,Ant,Sdk,Build,我在eclipse中构建我的应用程序没有问题,但一旦我尝试通过ant实现,它就不会构建。我使用了“android更新项目-p.”来生成build.xml和proguard.cfg文件。我尝试了“ant编译”,它的构建也很好。该应用程序包括一个android库,如果有必要,还具有外部LIB。这里的任何人都知道我尝试“ant release”时打印出来的错误 意外的顶级异常: com.android.dx.util.ExceptionWithContext 位于com.android.dx.util

我在eclipse中构建我的应用程序没有问题,但一旦我尝试通过ant实现,它就不会构建。我使用了“android更新项目-p.”来生成build.xml和proguard.cfg文件。我尝试了“ant编译”,它的构建也很好。该应用程序包括一个android库,如果有必要,还具有外部LIB。这里的任何人都知道我尝试“ant release”时打印出来的错误

意外的顶级异常:
com.android.dx.util.ExceptionWithContext
位于com.android.dx.util.ExceptionWithContext.withContext(ExceptionWithContext.java:46)
位于com.android.dx.dex.cf.CfTranslator.processMethods(CfTranslator.java:340)
位于com.android.dx.dex.cf.CfTranslator.translate0(CfTranslator.java:131)
位于com.android.dx.dex.cf.CfTranslator.translate(CfTranslator.java:85)
位于com.android.dx.command.dexer.Main.processClass(Main.java:369)
位于com.android.dx.command.dexer.Main.processFileBytes(Main.java:346)
com.android.dx.command.dexer.Main.access$400(Main.java:59)
位于com.android.dx.command.dexer.Main$1.processFileBytes(Main.java:294)
位于com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:134)
位于com.android.dx.cf.direct.ClassPathPener.processDirectory(classPathPener.java:190)
位于com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:122)
位于com.android.dx.cf.direct.ClassPathPener.processDirectory(classPathPener.java:190)
位于com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:122)
位于com.android.dx.cf.direct.ClassPathPener.processDirectory(classPathPener.java:190)
位于com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:122)
位于com.android.dx.cf.direct.ClassPathPener.processDirectory(classPathPener.java:190)
位于com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:122)
位于com.android.dx.cf.direct.ClassPathPener.processDirectory(classPathPener.java:190)
位于com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:122)
位于com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:108)
位于com.android.dx.command.dexer.Main.processOne(Main.java:313)
位于com.android.dx.command.dexer.Main.processAllFiles(Main.java:233)
位于com.android.dx.command.dexer.Main.run(Main.java:185)
位于com.android.dx.command.dexer.Main.Main(Main.java:166)
位于com.android.dx.command.Main.Main(Main.java:90)
原因:java.lang.NullPointerException
在com.android.dx.cf.code.ConcreteMethod上(ConcreteMethod.java:84)
在com.android.dx.dex.cf.CfTranslator.processMethods上(CfTranslator.java:243)
... 23多

我现在非常困惑,希望有人能给我一些启示。

仔细阅读本页:

您可以尝试以下解决方案之一:

1) 单行命令

android update project -p --subprojects
2) 更新主项目和库项目的build.xml文件:

android update lib-project --path myPath/Lib    
android update project --name android_app --path . --library myPath/Lib  
在1)或2)之后

我想我的答案也适用于这个错误。 在死代码中初始化匿名类时会发生这种情况


为什么它只会在发行版中发生,而不会在调试中发生,一个解释是,在优化时会删除死代码。

一些关于在构建过程中发生这种情况的上下文可能会有所帮助。具体来说,是什么ant任务(如果有)在错误发生之前运行。另外,您是否尝试过ant debug?ant构建日志会很有帮助。另外,安装了什么版本的android工具,以及有关项目类型和大小的一些信息build.xml文件是什么样子的?(在运行“android更新项目-p”之后)如果您有外部依赖项和库,则此文件不会始终正确自动生成。另外,您确定在正确的上下文中运行此命令吗?项目的顶级目录?
android update lib-project --path myPath/Lib    
android update project --name android_app --path . --library myPath/Lib  
ant clean
ant release