9

I have no problems building my app in eclipse but once I try to do it via ant, it does not build. I've used "android update project -p ." to generate the build build.xml and proguard.cfg file. I tried "ant compile" and it builds fine as well. The app includes a android library and has external libs if it matters. Anyone here's the error that prints out when I try to do a "ant release",

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

I'm pretty much perplexed at the moment so hopefully someone can shed some light.

Dave
  • 91
  • 1
  • 2
    Some context as to where this happens in the build process would be helpful. Specifically, what ant tasks (if any) run before the error. Also, have you tried `ant debug`? – jwriteclub Jan 21 '14 at 20:11
  • ant build log would be helpful. – Kumar Bibek Jan 24 '14 at 04:35
  • Also what version of android tools are installed, and some information about the kind and size of project – Sofi Software LLC Feb 22 '14 at 18:17
  • What does your build.xml file look like? (after you run "android update project -p .") If you have external dependencies and libraries this file does not always auto generate properly. Also are you sure you are running this command in the right context? top level directory of your project? – Cumulo Nimbus Mar 21 '14 at 16:18

2 Answers2

1

I think my answer on this page also applies on this error. This happens when you initialize an anonymous class in dead code.

An explanation why it would only happen in release and not in debug is that the dead code is removed when optimized.

Community
  • 1
  • 1
Albert-Jan Verhees
  • 2,084
  • 1
  • 16
  • 19
0

Read carefully this page:

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

You can try one of these solution:

1) One-line command

android update project -p --subprojects

2) Update the build.xml file of both the main project and the library project:

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

After 1) or 2)

ant clean
ant release
bonnyz
  • 13,458
  • 5
  • 46
  • 70