2011-08-26 61 views
9

在eclipse中构建我的应用程序没有问题,但是一旦我尝试通过ant来完成,它不会生成。我用过“android update project -p”。生成构建build.xml和proguard.cfg文件。我尝试过“ant compile”,它的构建也很好。该应用程序包含一个android库,如果有问题的话还有外部库。这里任何人的,打印出来的时候我尝试做一个“蚂蚁释放”的错误,Android:用Ant构建apk的问题发布

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 

我几乎在瞬间感到困惑,所以希望有人能提供一些线索。

+2

关于在构建过程中发生这种情况的某些上下文会很有帮助。具体来说,哪些蚂蚁任务(如果有的话)在错误之前运行。另外,你有没有尝试'蚂蚁调试'? – jwriteclub

+0

ant build log会有帮助。 –

+0

也安装了哪些版本的android工具,以及关于项目类型和大小的一些信息 –

回答

0

仔细阅读此页:

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

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

1)单行命令

android update project -p --subprojects 

2)更新构建。 xml文件的主项目和库项目:

android update lib-project --path myPath/Lib  
android update project --name android_app --path . --library myPath/Lib 

1后)或2)

ant clean 
ant release 
1

我觉得我对this page答案也适用于这个错误。 当您使用死代码初始化匿名类时,会发生这种情况。

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