Search code examples
androidappcelerator-titaniumappcelerator

Appcelerator Android build fails while running dexer


I'm attempting an Android build of an Appcelerator project via the command line using appc run -b followed by option 1 for Android.

This operation initially proceeds as expected, but then hangs indefinitely while Running dexer and eventually runs out of memory and produces the following error:

  [INFO]  Running dexer: /Library/Java/JavaVirtualMachines/jdk1.8.0_77.jdk/Contents/Home/bin/java "-Xmx512M" "-XX:-UseGCOverheadLimit"     "-Djava.ext.dirs=/Users/almcd/Library/android-sdk-macosx/  platform-tools" "-jar" "/Users/almcd/Library/    android-sdk-macosx/build-tools/23.0.1/lib/dx.jar" "--dex" "--output=/Users/almcd/Documents/Appcelerator_Studio_Workspace/    uktvplay_mobile/build/  android/bin/classes.dex" "/Users/almcd/Documents/Appcelerator_Studio_Workspace/uktvplay_mobile/build/    android/bin/classes" "/Users/almcd/Library/Application Support/Titanium/mobilesdk/  osx/5.5.1.GA/android/lib/titanium-verify.jar"     "/Users/almcd/Documents/Appcelerator_Studio_Workspace/uktvplay_mobile/modules/android/com.tripvi.drawerlayout/1.4.2/    drawerlayout.jar" "/Users/  almcd/Documents/Appcelerator_Studio_Workspace/uktvplay_mobile/modules/android/    com.brightcove.uktv/1.4.0/tibrightcove.jar" "/Users/almcd/Documents/Appcelerator_Studio_Workspace/uktvplay_mobile/  modules/    android/com.brightcove.uktv/1.4.0/lib/FWAdManager.jar" "/Users/almcd/Documents/Appcelerator_Studio_Workspace/uktvplay_mobile/    modules/android/com.brightcove.uktv/1.4.0/lib/  android-exoplayer-player-4.6.3.jar" "/Users/almcd/Documents/    Appcelerator_Studio_Workspace/uktvplay_mobile/modules/android/com.brightcove.uktv/1.4.0/lib/android-freewheel-plugin-4.6.3.jar" "/  Users/    almcd/Documents/Appcelerator_Studio_Workspace/uktvplay_mobile/modules/android/com.brightcove.uktv/1.4.0/lib/    android-sdk-4.6.3.jar" "/Users/almcd/Documents/  Appcelerator_Studio_Workspace/uktvplay_mobile/modules/android/    com.brightcove.uktv/1.4.0/lib/android-widevine-plugin-4.6.3.jar" "/Users/almcd/Documents/Appcelerator_Studio_Workspace/      uktvplay_mobile/modules/android/com.brightcove.uktv/1.4.0/lib/com.google.exoplayer-1.5.2.1.jar" "/Users/almcd/Documents/    Appcelerator_Studio_Workspace/uktvplay_mobile/modules/android/  com.brightcove.uktv/1.4.0/lib/spring-appstreaming-android-1.2.3.jar" "/Users/    almcd/Documents/Appcelerator_Studio_Workspace/uktvplay_mobile/modules/android/com.brightcove.uktv/1.4.0/lib/      spring-util-android.jar" "/Users/almcd/Documents/Appcelerator_Studio_Workspace/uktvplay_mobile/modules/android/    analytics.google/3.1.0/analytics.google.jar" "/Users/almcd/Documents/  Appcelerator_Studio_Workspace/uktvplay_mobile/modules/    android/analytics.google/3.1.0/lib/google-play-services.jar" "/Users/almcd/Documents/Appcelerator_Studio_Workspace/    uktvplay_mobile/  modules/android/com.alcoapps.actionbarextras/1.6.9/actionbarextras.jar" "/Users/almcd/Library/Application     Support/Titanium/mobilesdk/osx/5.5.1.GA/android/kroll-v8.jar" "/Users/almcd/Library/  Application Support/Titanium/mobilesdk/    osx/5.5.1.GA/android/modules/titanium-analytics.jar" "/Users/almcd/Library/Application Support/Titanium/mobilesdk/osx/5.5.1.GA/    android/  aps-analytics.jar" "/Users/almcd/Library/Application Support/Titanium/mobilesdk/osx/5.5.1.GA/android/modules/    titanium-android.jar" "/Users/almcd/Library/Application Support/Titanium/mobilesdk/  osx/5.5.1.GA/android/jaxen-1.1.1.jar" "/Users    /almcd/Library/Application Support/Titanium/mobilesdk/osx/5.5.1.GA/android/ti-commons-codec-1.3.jar" "/Users/almcd/    Library/Application Support/  Titanium/mobilesdk/osx/5.5.1.GA/android/kroll-common.jar" "/Users/almcd/Library/Application Support/    Titanium/mobilesdk/osx/5.5.1.GA/android/titanium.jar" "/Users/almcd/Library/Application   Support/Titanium/mobilesdk/osx/5.5.1.GA/    android/modules/titanium-filesystem.jar" "/Users/almcd/Library/Application Support/Titanium/mobilesdk/osx/5.5.1.GA/android/    modules/  titanium-app.jar" "/Users/almcd/Library/Application Support/Titanium/mobilesdk/osx/5.5.1.GA/android/modules/    titanium-ui.jar" "/Users/almcd/Library/Application Support/Titanium/mobilesdk/  osx/5.5.1.GA/android/    nineoldandroids-appc-2.4.0.jar" "/Users/almcd/Library/Application Support/Titanium/mobilesdk/osx/5.5.1.GA/android/modules/    titanium-media.jar" "/Users/almcd/Library/  Application Support/Titanium/mobilesdk/osx/5.5.1.GA/android/modules/    titanium-appcompat.jar" "/Users/almcd/Library/Application Support/Titanium/mobilesdk/osx/5.5.1.GA/android/      android-support-v4.jar" "/Users/almcd/Library/Application Support/Titanium/mobilesdk/osx/5.5.1.GA/android/    android-support-v7-appcompat.jar" "/Users/almcd/Library/Application Support/Titanium/  mobilesdk/osx/5.5.1.GA/android/modules/    titanium-cardview.jar" "/Users/almcd/Library/Application Support/Titanium/mobilesdk/osx/5.5.1.GA/android/    cardview-v7-23.0.1.jar" "/Users/almcd/  Library/Application Support/Titanium/mobilesdk/osx/5.5.1.GA/android/modules/    titanium-locale.jar" "/Users/almcd/Library/Application Support/Titanium/mobilesdk/osx/5.5.1.GA/android/modules/      titanium-network.jar" "/Users/almcd/Library/Application Support/Titanium/mobilesdk/osx/5.5.1.GA/android/modules/    titanium-xml.jar" "/Users/almcd/Library/Application Support/Titanium/mobilesdk/  osx/5.5.1.GA/android/modules/titanium-utils.jar"     "/Users/almcd/Library/Application Support/Titanium/mobilesdk/osx/5.5.1.GA/android/modules/titanium-geolocation.jar" "/Users/    almcd/Library/  Application Support/Titanium/mobilesdk/osx/5.5.1.GA/android/modules/titanium-accelerometer.jar" "/Users/    almcd/Library/Application Support/Titanium/mobilesdk/osx/5.5.1.GA/android/modules/  titanium-contacts.jar" "/Users/    almcd/Library/Application Support/Titanium/mobilesdk/osx/5.5.1.GA/android/modules/titanium-map.jar" "/Users/almcd/    Library/Application Support/Titanium/  mobilesdk/osx/5.5.1.GA/android/modules/titanium-calendar.jar" "/Users/almcd/Library/    Application Support/Titanium/mobilesdk/osx/5.5.1.GA/android/modules/titanium-gesture.jar" "/Users/almcd/  Library/Application     Support/Titanium/mobilesdk/osx/5.5.1.GA/android/modules/titanium-platform.jar" "/Users/almcd/Library/Application Support/    Titanium/mobilesdk/osx/5.5.1.GA/android/modules  /titanium-database.jar"
  [ERROR] Failed to run dexer:
  [ERROR]   
  [ERROR] UNEXPECTED TOP-LEVEL ERROR:
  [ERROR] java.lang.OutOfMemoryError: Java heap space
  [ERROR]         at java.io.DataInputStream.<init>(DataInputStream.java:58)
  [ERROR]         at com.android.dx.util.ByteArray$MyDataInputStream.<init>(ByteArray.java:356)
  [ERROR]         at com.android.dx.util.ByteArray.makeDataInputStream(ByteArray.java:260)
  [ERROR]         at com.android.dx.cf.direct.StdAttributeFactory.parseLocalVariables(StdAttributeFactory.java:565)
  [ERROR]         at com.android.dx.cf.direct.StdAttributeFactory.localVariableTable(StdAttributeFactory.java:517)
  [ERROR]         at com.android.dx.cf.direct.StdAttributeFactory.parse0(StdAttributeFactory.java:178)
  [ERROR]         at com.android.dx.cf.direct.AttributeFactory.parse(AttributeFactory.java:96)
  [ERROR]         at com.android.dx.cf.direct.AttributeListParser.parse(AttributeListParser.java:141)
  [ERROR]         at com.android.dx.cf.direct.AttributeListParser.parseIfNecessary(AttributeListParser.java:115)
  [ERROR]         at com.android.dx.cf.direct.AttributeListParser.getList(AttributeListParser.java:106)
  [ERROR]         at com.android.dx.cf.direct.StdAttributeFactory.code(StdAttributeFactory.java:300)
  [ERROR]         at com.android.dx.cf.direct.StdAttributeFactory.parse0(StdAttributeFactory.java:139)
  [ERROR]         at com.android.dx.cf.direct.AttributeFactory.parse(AttributeFactory.java:96)
  [ERROR]         at com.android.dx.cf.direct.AttributeListParser.parse(AttributeListParser.java:141)
  [ERROR]         at com.android.dx.cf.direct.AttributeListParser.parseIfNecessary(AttributeListParser.java:115)
  [ERROR]         at com.android.dx.cf.direct.AttributeListParser.getEndOffset(AttributeListParser.java:96)
  [ERROR]         at com.android.dx.cf.direct.MemberListParser.parse(MemberListParser.java:213)
  [ERROR]         at com.android.dx.cf.direct.MemberListParser.parseIfNecessary(MemberListParser.java:108)
  [ERROR]         at com.android.dx.cf.direct.MethodListParser.getList(MethodListParser.java:54)
  [ERROR]         at com.android.dx.cf.direct.DirectClassFile.parse0(DirectClassFile.java:542)
  [ERROR]         at com.android.dx.cf.direct.DirectClassFile.parse(DirectClassFile.java:406)
  [ERROR]         at com.android.dx.cf.direct.DirectClassFile.parseToInterfacesIfNecessary(DirectClassFile.java:388)
  [ERROR]         at com.android.dx.cf.direct.DirectClassFile.getMagic(DirectClassFile.java:251)
  [ERROR]         at com.android.dx.command.dexer.Main.parseClass(Main.java:764)
  [ERROR]         at com.android.dx.command.dexer.Main.access$1500(Main.java:85)
  [ERROR]         at com.android.dx.command.dexer.Main$ClassParserTask.call(Main.java:1684)
  [ERROR]         at com.android.dx.command.dexer.Main.processClass(Main.java:749)
  [ERROR]         at com.android.dx.command.dexer.Main.processFileBytes(Main.java:718)
  [ERROR]         at com.android.dx.command.dexer.Main.access$1200(Main.java:85)
  [ERROR]         at com.android.dx.command.dexer.Main$FileBytesConsumer.processFileBytes(Main.java:1645)
  [ERROR]         at com.android.dx.cf.direct.ClassPathOpener.processArchive(ClassPathOpener.java:284)
  [ERROR]         at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:166)

Searching for the Failed to run dexer error message brings up a number of suggestions. So far I've tried:

  • Running “Project > Clean…” from within Appcelerator Studio
  • Setting appc ti config android.dx.maxMemory 512M
  • Reinstalling Appcelerator Studio, the CLI and Android SDK

None of the above has resolved the error, but I'm left believing that the issue lies with my Android SDK.

Running appc ti setup check provides the following output:

uktvplay_mobile->appc ti setup check
Appcelerator Command-Line Interface, version 6.0.0
Copyright (c) 2014-2016, Appcelerator, Inc.  All Rights Reserved.

Enter ctrl-c at any time to quit.

──────────────────┤ Check Environment ├───────────────────

Node.js
  ✓  node               installed (v5.10.1)
  ✓  npm                installed (v3.8.3)

Titanium CLI
  ✓  cli                bleeding edge (v5.0.10)

Titanium CLI Dependencies
  ✓  acs                up-to-date (v1.2.2)
  ✓  alloy              up-to-date (v1.9.4)
  ✓  appc-cli-titanium  up-to-date (v4.2.83)
  ✓  appc-inquirer      up-to-date (v0.1.8)
  ✓  appc-logger        up-to-date (v1.1.27)
  ✓  appc-platform-sdk  up-to-date (v1.3.8)
  ✓  arrow              up-to-date (v1.8.12)
  ✓  async              up-to-date (v1.5.2)
  ✓  chalk              up-to-date (v1.1.3)
  ✓  char-spinner       up-to-date (v1.0.1)
  ✓  columnify          up-to-date (v1.5.4)
  ✓  commander          up-to-date (v2.9.0)
  ✓  debug              up-to-date (v2.3.0)
  ✓  ejs                up-to-date (v2.5.2)
  ✓  fields             up-to-date (v0.1.24)
  ✓  fs-extra           up-to-date (v0.26.7)
  ✓  inquirer           up-to-date (v0.11.4)
  ✓  ip                 up-to-date (v1.1.4)
  ✓  jwt-simple         up-to-date (v0.3.1)
  ✓  lodash             up-to-date (v3.10.1)
  ✓  mkdirp             up-to-date (v0.5.1)
  ✓  node-appc          up-to-date (v0.2.39)
  ✓  node-forge         up-to-date (v0.6.45)
  ✓  npmconf            up-to-date (v2.1.2)
  ✓  plural             up-to-date (v0.2.0)
  ✓  progress           up-to-date (v1.1.8)
  ✓  recursive-readdir  up-to-date (v1.3.0)
  ✓  request            up-to-date (v2.78.0)
  ✓  semver             up-to-date (v5.3.0)
  ✓  tar                up-to-date (v2.2.1)
  ✓  tar.gz             up-to-date (v1.0.2)
  ✓  tiapp.xml          up-to-date (v0.2.2)
  ✓  titanium           up-to-date (v5.0.10)
  ✓  which              up-to-date (v1.2.11)
  ✓  wrench             up-to-date (v1.5.9)

Titanium SDK
  ✓  latest sdk         installed (v6.0.0.GA)
  ✓  selected sdk       up-to-date (v6.0.0.GA)

Mac OS X Environment
  ✓  CLI Tools          installed

iOS Environment
  ✓  Xcode              installed (8.1)
  ✓  iOS SDK            installed (10.1)
  ✓  WWDR cert          installed
  ✓  developer cert     installed (1 found)
  !  distribution cert  not found
  ✓  dev provisioning   installed (5 found)
  ✓  dist provisioning  installed (2 found)

Android Environment
  ✓  sdk                installed (/Users/almcd/Library/android-sdk-macosx)
  !  tools              untested version 24.4.1; may or may not work
  ✓  platform tools     installed (v23.1.0)
  ✓  build tools        installed (v23.0.1)
  ✓  adb                installed /Users/almcd/Library/android-sdk-macosx/platform-tools/adb
  ✓  android            installed /Users/almcd/Library/android-sdk-macosx/tools/android
  ✓  emulator           installed /Users/almcd/Library/android-sdk-macosx/tools/emulator
  ✓  mksdcard           installed /Users/almcd/Library/android-sdk-macosx/tools/mksdcard
  ✓  zipalign           installed /Users/almcd/Library/android-sdk-macosx/build-tools/23.0.1/zipalign
  ✓  aapt               installed /Users/almcd/Library/android-sdk-macosx/build-tools/23.0.1/aapt
  ✓  aidl               installed /Users/almcd/Library/android-sdk-macosx/build-tools/23.0.1/aidl
  ✓  targets            installed (1 found)
  ✓  avds               installed (1 found)
  !  ndk                Android NDK not found

Java Development Kit
  ✓  jdk                installed (v1.8.0)
  ✓  java               installed /Library/Java/JavaVirtualMachines/jdk1.8.0_77.jdk/Contents/Home/bin/java
  ✓  javac              installed /Library/Java/JavaVirtualMachines/jdk1.8.0_77.jdk/Contents/Home/bin/javac
  ✓  keytool            installed /Library/Java/JavaVirtualMachines/jdk1.8.0_77.jdk/Contents/Home/bin/keytool
  ✓  jarsigner          installed /Library/Java/JavaVirtualMachines/jdk1.8.0_77.jdk/Contents/Home/bin/jarsigner

Intel® Hardware Accelerated Execution Manager (HAXM)
  ✓  compatible         
  ✓  installed          

Network
  ✓  online             
  -  no proxy server configured 
  ✕  https://www.google.com (HTTP status: 404) is unreachable 
  ✓  Java-based connection test 

Directory Permissions
  ✓  home directory     
  ✓  titanium config directory 
  ✓  titanium sdk install directory 
  ✓  temp directory      

I notice that tools under Android Environment specifies the warning untested version 24.4.1; may or may not work. Could this be the issue? However, older versions of the Android tools don’t appear to be available any longer (having followed this answer: https://stackoverflow.com/a/26365848/2096363).

Otherwise any guidance on the possible source of the issue would be welcomed.

Other details about my environment:

  • OS is Mac OS Sierra v10.12
  • Node v5.10.1
  • NPM v3.8.3
  • Appcelerator Studio v4.8.0.201611121409
  • Appc CLI v6.0.0
  • Titanium SDK v5.5.1.GA
  • Java v1.8.0_77

Solution

  • I was able to solve this issue by removing each Titanium module from the project one by one and attempting a build.

    In my case this process eventually led to me identifying the analytics.google module that I was using as the source of the problem. Replacing this module for the more actively maintained ti.ga module fixed it.

    Posting this answer in the hope that this approach to identifying the source of the error, might be of use to anyone else who encounters the same issue.