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:
appc ti config android.dx.maxMemory 512M
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:
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.