Android:使用Ant发布构buildapk的问题

我没有问题在eclipse中构build我的应用程序,但是一旦我尝试通过ant来完成,它不会生成。 我用“android更新项目-p”。 生成构buildbuild.xml和proguard.cfg文件。 我试过“ant编译”,它也很好。 该应用程序包括一个Android库,并有重要的外部库。 当我尝试做一个“ant释放”时,这里的任何人打印出来的错误,

UNEXPECTED TOP-LEVEL EXCEPTION: com.android.dx.util.ExceptionWithContext at com.android.dx.util.ExceptionWithContext.withContext(ExceptionWithContext.java:46) at com.android.dx.dex.cf.CfTranslator.processMethods(CfTranslator.java:340) at com.android.dx.dex.cf.CfTranslator.translate0(CfTranslator.java:131) at com.android.dx.dex.cf.CfTranslator.translate(CfTranslator.java:85) at com.android.dx.command.dexer.Main.processClass(Main.java:369) at com.android.dx.command.dexer.Main.processFileBytes(Main.java:346) at com.android.dx.command.dexer.Main.access$400(Main.java:59) at com.android.dx.command.dexer.Main$1.processFileBytes(Main.java:294) at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:134) at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:190) at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:122) at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:190) at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:122) at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:190) at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:122) at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:190) at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:122) at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:190) at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:122) at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:108) at com.android.dx.command.dexer.Main.processOne(Main.java:313) at com.android.dx.command.dexer.Main.processAllFiles(Main.java:233) at com.android.dx.command.dexer.Main.run(Main.java:185) at com.android.dx.command.dexer.Main.main(Main.java:166) at com.android.dx.command.Main.main(Main.java:90) Caused by: java.lang.NullPointerException at com.android.dx.cf.code.ConcreteMethod.<init>(ConcreteMethod.java:84) at com.android.dx.dex.cf.CfTranslator.processMethods(CfTranslator.java:243) ... 23 more 

此刻我非常困惑,希望有人能够点亮一些光。

Solutions Collecting From Web of "Android:使用Ant发布构buildapk的问题"

我想我在这个页面上的答案也适用于这个错误。 当你使用死码初始化一个匿名类时会发生这种情况。

解释为什么它只会在发布而不是在debugging中发生,优化时删除死代码。

仔细阅读本页:

http://developer.android.com/tools/projects/projects-cmdline.html

您可以尝试以下解决scheme之一:

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 clean ant release