Titanium Community Questions & Answer Archive

We felt that 6+ years of knowledge should not die so this is the Titanium Community Questions & Answer Archive

What is normal speed for build/redeploy to android emulator?

After some tweaking I have got some simple projects running in the Android emulator, but it is running at a speed I would deem too slow to be an option for practical development and testing.

As an example: Creating the empty Hello world, having the emulator already running and after the first build it takes 96 seconds (yep over 1.5 minute!) to rebuild a new version with only the text in the tabs changed. This is on a "state of the art a year ago" laptop with 6GB memory and dual core CPU.

Hopefully there are some config options to speed this up? First run (and final packaging) being slow would be acceptable, but the redeploy cycle needs to be quite fast IMO (ref. GWT devmode/build for an acceptable, if not ideal experience).

Below is the trace of running the modified build to the emulator, the most time is spent in the "Installing application on device" step:

[INFO] Building TestTitanium for Android ... one moment
[DEBUG] C:\Program Files\android-sdk-windows\tools\adb.exe start-server
[DEBUG] Waiting for device to be ready ...
[TRACE] adb devices returned 1 devices/emulators
[DEBUG] Device connected... (waited 0 seconds)
[DEBUG] waited 0.040000 seconds on emulator to get ready
[DEBUG] C:\Program Files\android-sdk-windows\tools\adb.exe -e shell ls /data/app/no.innovationconsulting.testtitanium.apk
[DEBUG] no.innovationconsulting.testtitanium installed? True
[DEBUG] C:\Program Files\android-sdk-windows\tools\adb.exe -e shell ls /sdcard/Ti.debug/no.innovationconsulting.testtitanium/Resources/app.js
[DEBUG] no.innovationconsulting.testtitanium resources installed? False
[INFO] Copying project resources..
[TRACE] COPYING MODIFIED FILE: C:\[PROJECTPATH]\Resources\app.js => C:\[PROJECTPATH]\build\android\bin\assets\Resources\app.js
[DEBUG] C:\Program Files\Java\jdk1.6.0_22\bin\java.exe -cp C:\ProgramData\Titanium\mobilesdk\win32\1.4.0\android\js.jar org.mozilla.javascript.tools.jsc.Main -opt 9 -nosource -package org.appcelerator.generated -d C:\[PROJECTPATH]\build\android\bin\classes C:\[PROJECTPATH]\build\android\bin\assets\Resources\app.js
[INFO] Tiapp.xml unchanged, skipping class generation
[DEBUG] found splash screen at C:\[PROJECTPATH]\build\android\bin\assets\Resources\default.png
[INFO] Manifest unchanged, skipping Java build
[DEBUG] C:\Program Files\android-sdk-windows\platforms\android-4\tools\aapt.exe package -f -M AndroidManifest.xml -A C:\[PROJECTPATH]\build\android\bin\assets -S res -I C:\Program Files\android-sdk-windows\platforms\android-4\android.jar -I C:\ProgramData\Titanium\mobilesdk\win32\1.4.0\android\titanium.jar -F C:\[PROJECTPATH]\build\android\bin\app.ap_
[DEBUG] C:\Program Files\android-sdk-windows\tools\apkbuilder.bat C:\[PROJECTPATH]\build\android\bin\app-unsigned.apk -u -z C:\[PROJECTPATH]\build\android\bin\app.ap_ -f C:\[PROJECTPATH]\build\android\bin\classes.dex -rf C:\[PROJECTPATH]\build\android\src -rj C:\ProgramData\Titanium\mobilesdk\win32\1.4.0\android\commons-codec-1.3.jar -rj C:\ProgramData\Titanium\mobilesdk\win32\1.4.0\android\jaxen-1.1.1.jar -rj C:\ProgramData\Titanium\mobilesdk\win32\1.4.0\android\js.jar -rj C:\ProgramData\Titanium\mobilesdk\win32\1.4.0\android\titanium.jar -rj C:\ProgramData\Titanium\mobilesdk\win32\1.4.0\android\modules\titanium-accelerometer.jar -rj C:\ProgramData\Titanium\mobilesdk\win32\1.4.0\android\modules\titanium-analytics.jar -rj C:\ProgramData\Titanium\mobilesdk\win32\1.4.0\android\modules\titanium-api.jar -rj C:\ProgramData\Titanium\mobilesdk\win32\1.4.0\android\modules\titanium-app.jar -rj C:\ProgramData\Titanium\mobilesdk\win32\1.4.0\android\modules\titanium-database.jar -rj C:\ProgramData\Titanium\mobilesdk\win32\1.4.0\android\modules\titanium-facebook.jar -rj C:\ProgramData\Titanium\mobilesdk\win32\1.4.0\android\modules\titanium-filesystem.jar -rj C:\ProgramData\Titanium\mobilesdk\win32\1.4.0\android\modules\titanium-geolocation.jar -rj C:\ProgramData\Titanium\mobilesdk\win32\1.4.0\android\modules\titanium-gesture.jar -rj C:\ProgramData\Titanium\mobilesdk\win32\1.4.0\android\modules\titanium-json.jar -rj C:\ProgramData\Titanium\mobilesdk\win32\1.4.0\android\modules\titanium-map.jar -rj C:\ProgramData\Titanium\mobilesdk\win32\1.4.0\android\modules\titanium-media.jar -rj C:\ProgramData\Titanium\mobilesdk\win32\1.4.0\android\modules\titanium-network.jar -rj C:\ProgramData\Titanium\mobilesdk\win32\1.4.0\android\modules\titanium-platform.jar -rj C:\ProgramData\Titanium\mobilesdk\win32\1.4.0\android\modules\titanium-ui.jar -rj C:\ProgramData\Titanium\mobilesdk\win32\1.4.0\android\modules\titanium-utils.jar -rj C:\ProgramData\Titanium\mobilesdk\win32\1.4.0\android\modules\titanium-xml.jar -rj C:\ProgramData\Titanium\mobilesdk\win32\1.4.0\android\modules\titanium-yahoo.jar
[ERROR] C:\Program Files\android-sdk-windows\tools\apkbuilder.bat
[TRACE] THIS TOOL IS DEPRECATED. See --help for more information.
[TRACE]
[DEBUG] C:\Program Files\Java\jdk1.6.0_22\bin\jarsigner.exe -storepass tirocks -keystore C:\ProgramData\Titanium\mobilesdk\win32\1.4.0\android\dev_keystore -signedjar C:\[PROJECTPATH]\build\android\bin\app.apk C:\[PROJECTPATH]\build\android\bin\app-unsigned.apk tidev
[DEBUG] C:\Program Files\android-sdk-windows\tools\zipalign.exe -v 4 C:\[PROJECTPATH]\build\android\bin\app.apk C:\[PROJECTPATH]\build\android\bin\app.apkz
[DEBUG] Waiting for device to be ready ...
[TRACE] adb devices returned 1 devices/emulators
[DEBUG] Device connected... (waited 0 seconds)
[DEBUG] waited 0.102000 seconds on emulator to get ready
[INFO] Installing application on device
[DEBUG] C:\Program Files\android-sdk-windows\tools\adb.exe -e install -r C:\[PROJECTPATH]\build\android\bin\app.apk
[TRACE] D/AndroidRuntime( 431):
[TRACE] D/AndroidRuntime( 431): >>>>>>>>>>>>>> AndroidRuntime START <<<<<<<<<<<<<<
[TRACE] D/AndroidRuntime( 431): CheckJNI is ON
[TRACE] D/AndroidRuntime( 431): --- registering native functions ---
[TRACE] D/PackageParser( 62): Scanning package: /data/app/vmdl74638.tmp
[TRACE] I/PackageManager( 62): Removing non-system package:no.innovationconsulting.testtitanium
[TRACE] D/PackageManager( 62): Removing package no.innovationconsulting.testtitanium
[TRACE] D/PackageManager( 62): Services: org.appcelerator.titanium.analytics.TiAnalyticsService
[TRACE] D/PackageManager( 62): Activities: no.innovationconsulting.testtitanium.TesttitaniumActivity org.appcelerator.titanium.TiActivity ti.modules.titanium.ui.TiTabActivity ti.modules.titanium.media.TiVideoActivity
[TRACE] D/PackageManager( 62): Scanning package no.innovationconsulting.testtitanium
[TRACE] I/PackageManager( 62): /data/app/vmdl74638.tmp changed; unpacking
[TRACE] D/installd( 32): DexInv: --- BEGIN '/data/app/vmdl74638.tmp' ---
[TRACE] D/dalvikvm( 438): DexOpt: 'Lorg/apache/commons/codec/Decoder;' has an earlier definition; blocking out
[TRACE] D/dalvikvm( 438): DexOpt: 'Lorg/apache/commons/codec/BinaryDecoder;' has an earlier definition; blocking out
[TRACE] D/dalvikvm( 438): DexOpt: 'Lorg/apache/commons/codec/Encoder;' has an earlier definition; blocking out
[TRACE] D/dalvikvm( 438): DexOpt: 'Lorg/apache/commons/codec/BinaryEncoder;' has an earlier definition; blocking out
[TRACE] D/dalvikvm( 438): DexOpt: 'Lorg/apache/commons/codec/DecoderException;' has an earlier definition; blocking out
[TRACE] D/dalvikvm( 438): DexOpt: 'Lorg/apache/commons/codec/EncoderException;' has an earlier definition; blocking out
[TRACE] D/dalvikvm( 438): DexOpt: 'Lorg/apache/commons/codec/StringDecoder;' has an earlier definition; blocking out
[TRACE] D/dalvikvm( 438): DexOpt: 'Lorg/apache/commons/codec/StringEncoder;' has an earlier definition; blocking out
[TRACE] D/dalvikvm( 438): DexOpt: 'Lorg/apache/commons/codec/StringEncoderComparator;' has an earlier definition; blocking out
[TRACE] D/dalvikvm( 438): DexOpt: 'Lorg/apache/commons/codec/binary/Base64;' has an earlier definition; blocking out
[TRACE] D/dalvikvm( 438): DexOpt: 'Lorg/apache/commons/codec/binary/BinaryCodec;' has an earlier definition; blocking out
[TRACE] D/dalvikvm( 438): DexOpt: 'Lorg/apache/commons/codec/binary/Hex;' has an earlier definition; blocking out
[TRACE] D/dalvikvm( 438): DexOpt: 'Lorg/apache/commons/codec/language/DoubleMetaphone$DoubleMetaphoneResult;' has an earlier definition; blocking out
[TRACE] D/dalvikvm( 438): DexOpt: 'Lorg/apache/commons/codec/language/DoubleMetaphone;' has an earlier definition; blocking out
[TRACE] D/dalvikvm( 438): DexOpt: 'Lorg/apache/commons/codec/language/Metaphone;' has an earlier definition; blocking out
[TRACE] D/dalvikvm( 438): DexOpt: 'Lorg/apache/commons/codec/language/RefinedSoundex;' has an earlier definition; blocking out
[TRACE] D/dalvikvm( 438): DexOpt: 'Lorg/apache/commons/codec/language/Soundex;' has an earlier definition; blocking out
[TRACE] D/dalvikvm( 438): DexOpt: 'Lorg/apache/commons/codec/language/SoundexUtils;' has an earlier definition; blocking out
[TRACE] D/dalvikvm( 438): DexOpt: 'Lorg/apache/commons/codec/net/RFC1522Codec;' has an earlier definition; blocking out
[TRACE] D/dalvikvm( 438): DexOpt: 'Lorg/apache/commons/codec/net/BCodec;' has an earlier definition; blocking out
[TRACE] D/dalvikvm( 438): DexOpt: 'Lorg/apache/commons/codec/net/QCodec;' has an earlier definition; blocking out
[TRACE] D/dalvikvm( 438): DexOpt: 'Lorg/apache/commons/codec/net/QuotedPrintableCodec;' has an earlier definition; blocking out
[TRACE] D/dalvikvm( 438): DexOpt: 'Lorg/apache/commons/codec/net/StringEncodings;' has an earlier definition; blocking out
[TRACE] D/dalvikvm( 438): DexOpt: 'Lorg/apache/commons/codec/net/URLCodec;' has an earlier definition; blocking out
[TRACE] D/dalvikvm( 438): DexOpt: not verifying 'Lorg/apache/commons/codec/Decoder;': multiple definitions
[TRACE] D/dalvikvm( 438): DexOpt: not verifying 'Lorg/apache/commons/codec/BinaryDecoder;': multiple definitions
[TRACE] D/dalvikvm( 438): DexOpt: not verifying 'Lorg/apache/commons/codec/Encoder;': multiple definitions
[TRACE] D/dalvikvm( 438): DexOpt: not verifying 'Lorg/apache/commons/codec/BinaryEncoder;': multiple definitions
[TRACE] D/dalvikvm( 438): DexOpt: not verifying 'Lorg/apache/commons/codec/DecoderException;': multiple definitions
[TRACE] D/dalvikvm( 438): DexOpt: not verifying 'Lorg/apache/commons/codec/EncoderException;': multiple definitions
[TRACE] D/dalvikvm( 438): DexOpt: not verifying 'Lorg/apache/commons/codec/StringDecoder;': multiple definitions
[TRACE] D/dalvikvm( 438): DexOpt: not verifying 'Lorg/apache/commons/codec/StringEncoder;': multiple definitions
[TRACE] D/dalvikvm( 438): DexOpt: not verifying 'Lorg/apache/commons/codec/StringEncoderComparator;': multiple definitions
[TRACE] D/dalvikvm( 438): DexOpt: not verifying 'Lorg/apache/commons/codec/binary/Base64;': multiple definitions
[TRACE] D/dalvikvm( 438): DexOpt: not verifying 'Lorg/apache/commons/codec/binary/BinaryCodec;': multiple definitions
[TRACE] D/dalvikvm( 438): DexOpt: not verifying 'Lorg/apache/commons/codec/binary/Hex;': multiple definitions
[TRACE] I/dalvikvm( 438): DexOpt: not resolving ambiguous class 'Lorg/apache/commons/codec/binary/Hex;'
[TRACE] D/dalvikvm( 438): DexOpt: not verifying 'Lorg/apache/commons/codec/language/DoubleMetaphone$DoubleMetaphoneResult;': multiple definitions
[TRACE] D/dalvikvm( 438): DexOpt: not verifying 'Lorg/apache/commons/codec/language/DoubleMetaphone;': multiple definitions
[TRACE] D/dalvikvm( 438): DexOpt: not verifying 'Lorg/apache/commons/codec/language/Metaphone;': multiple definitions
[TRACE] D/dalvikvm( 438): DexOpt: not verifying 'Lorg/apache/commons/codec/language/RefinedSoundex;': multiple definitions
[TRACE] D/dalvikvm( 438): DexOpt: not verifying 'Lorg/apache/commons/codec/language/Soundex;': multiple definitions
[TRACE] D/dalvikvm( 438): DexOpt: not verifying 'Lorg/apache/commons/codec/language/SoundexUtils;': multiple definitions
[TRACE] D/dalvikvm( 438): DexOpt: not verifying 'Lorg/apache/commons/codec/net/RFC1522Codec;': multiple definitions
[TRACE] D/dalvikvm( 438): DexOpt: not verifying 'Lorg/apache/commons/codec/net/BCodec;': multiple definitions
[TRACE] D/dalvikvm( 438): DexOpt: not verifying 'Lorg/apache/commons/codec/net/QCodec;': multiple definitions
[TRACE] D/dalvikvm( 438): DexOpt: not verifying 'Lorg/apache/commons/codec/net/QuotedPrintableCodec;': multiple definitions
[TRACE] D/dalvikvm( 438): DexOpt: not verifying 'Lorg/apache/commons/codec/net/StringEncodings;': multiple definitions
[TRACE] D/dalvikvm( 438): DexOpt: not verifying 'Lorg/apache/commons/codec/net/URLCodec;': multiple definitions
[TRACE] I/dalvikvm( 438): DexOpt: not resolving ambiguous class 'Lorg/apache/commons/codec/binary/Base64;'
[TRACE] D/dalvikvm( 62): GC freed 11861 objects / 616208 bytes in 605ms
[TRACE] I/dalvikvm( 438): DexOpt: not resolving ambiguous class 'Lorg/apache/commons/codec/binary/Base64;'
[TRACE] D/dalvikvm( 438): DexOpt: load 1854ms, verify 13898ms, opt 550ms
[TRACE] D/installd( 32): DexInv: --- END '/data/app/vmdl74638.tmp' (success) ---
[TRACE] D/PackageManager( 62): Services: org.appcelerator.titanium.analytics.TiAnalyticsService
[TRACE] D/PackageManager( 62): Activities: no.innovationconsulting.testtitanium.TesttitaniumActivity org.appcelerator.titanium.TiActivity ti.modules.titanium.ui.TiTabActivity ti.modules.titanium.media.TiVideoActivity
[TRACE] D/ActivityManager( 62): Uninstalling process no.innovationconsulting.testtitanium
[TRACE] D/ActivityManager( 62): Force removing process ProcessRecord{43939fb0 408:no.innovationconsulting.testtitanium/10024} (no.innovationconsulting.testtitanium/10024)
[TRACE] I/Process ( 62): Sending signal. PID: 408 SIG: 9
[TRACE] D/ActivityManager( 62): Force finishing activity no.innovationconsulting.testtitanium/.TesttitaniumActivity
[TRACE] W/ActivityManager( 62): Activity HistoryRecord{4382ae88 no.innovationconsulting.testtitanium/.TesttitaniumActivity} being finished, but not in LRU list
[TRACE] W/UsageStats( 62): Unexpected resume of com.android.launcher while already resumed in no.innovationconsulting.testtitanium
[TRACE] I/WindowManager( 62): WIN DEATH: Window{43943458 no.innovationconsulting.testtitanium/ti.modules.titanium.ui.TiTabActivity paused=false}
[TRACE] I/WindowManager( 62): WIN DEATH: Window{438c9128 no.innovationconsulting.testtitanium/no.innovationconsulting.testtitanium.TesttitaniumActivity paused=true}
[TRACE] D/ActivityManager( 62): Received spurious death notification for thread android.os.BinderProxy@437f3ac0
[TRACE] W/InputManagerService( 62): Got RemoteException sending setActive(false) notification to pid 408 uid 10024
[TRACE] E/IMemory ( 137): cannot map BpMemoryHeap (binder=0x35cd68), size=8388608, fd=40 (Permission denied)
[TRACE] E/Surface ( 137): Couldn't map Surface's heap (binder=0x35cd68, heap=0x1cdfc8)
[TRACE] E/ViewRoot( 137): IllegalArgumentException locking surface
[TRACE] E/ViewRoot( 137): java.lang.IllegalArgumentException
[TRACE] E/ViewRoot( 137): at android.view.Surface.lockCanvasNative(Native Method)
[TRACE] E/ViewRoot( 137): at android.view.Surface.lockCanvas(Surface.java:275)
[TRACE] E/ViewRoot( 137): at android.view.ViewRoot.draw(ViewRoot.java:1266)
[TRACE] E/ViewRoot( 137): at android.view.ViewRoot.performTraversals(ViewRoot.java:1097)
[TRACE] E/ViewRoot( 137): at android.view.ViewRoot.handleMessage(ViewRoot.java:1613)
[TRACE] E/ViewRoot( 137): at android.os.Handler.dispatchMessage(Handler.java:99)
[TRACE] E/ViewRoot( 137): at android.os.Looper.loop(Looper.java:123)
[TRACE] E/ViewRoot( 137): at android.app.ActivityThread.main(ActivityThread.java:4203)
[TRACE] E/ViewRoot( 137): at java.lang.reflect.Method.invokeNative(Native Method)
[TRACE] E/ViewRoot( 137): at java.lang.reflect.Method.invoke(Method.java:521)
[TRACE] E/ViewRoot( 137): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791)
[TRACE] E/ViewRoot( 137): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:549)
[TRACE] E/ViewRoot( 137): at dalvik.system.NativeStart.main(Native Method)
[TRACE] I/installd( 32): move /data/dalvik-cache/data@app@vmdl74638.tmp@classes.dex -> /data/dalvik-cache/data@app@no.innovationconsulting.testtitanium.apk@classes.dex
[TRACE] D/PackageManager( 62): New package installed in /data/app/no.innovationconsulting.testtitanium.apk
[TRACE] D/AndroidRuntime( 431): Shutting down VM
[TRACE] D/dalvikvm( 431): DestroyJavaVM waiting for non-daemon threads to exit
[TRACE] D/dalvikvm( 431): DestroyJavaVM shutting VM down
[TRACE] D/dalvikvm( 431): HeapWorker thread shutting down
[TRACE] D/dalvikvm( 431): HeapWorker thread has shut down
[TRACE] D/jdwp ( 431): JDWP shutting down net...
[TRACE] D/dalvikvm( 431): VM cleaning up
[TRACE] D/ActivityManager( 62): Uninstalling process no.innovationconsulting.testtitanium
[TRACE] D/dalvikvm( 431): LinearAlloc 0x0 used 663068 of 4194304 (15%)
[INFO] Launching application ... TestTitanium
[DEBUG] C:\Program Files\android-sdk-windows\tools\adb.exe -e shell am start -a android.intent.action.MAIN -c android.intent.category.LAUNCHER -n no.innovationconsulting.testtitanium/.TesttitaniumActivity
[TRACE] D/dalvikvm( 62): GC freed 4845 objects / 307496 bytes in 514ms
[TRACE] W/ResourceType( 62): No package identifier when getting value for resource number 0x7f060001
[TRACE] W/ResourceType( 62): No package identifier when getting value for resource number 0x7f060000
[TRACE] W/ResourceType( 62): No package identifier when getting value for resource number 0x7f060001
[TRACE] W/ResourceType( 62): No package identifier when getting value for resource number 0x7f060000
[TRACE] D/dalvikvm( 137): GC freed 456 objects / 33800 bytes in 747ms
[TRACE] D/HomeLoaders( 137): application intent received: android.intent.action.PACKAGE_REMOVED, replacing=true
[TRACE] D/HomeLoaders( 137): --> package:no.innovationconsulting.testtitanium
[TRACE] D/HomeLoaders( 137): application intent received: android.intent.action.PACKAGE_ADDED, replacing=true
[TRACE] D/HomeLoaders( 137): --> package:no.innovationconsulting.testtitanium
[TRACE] D/HomeLoaders( 137): --> update package no.innovationconsulting.testtitanium
[TRACE] D/AndroidRuntime( 445):
[TRACE] D/AndroidRuntime( 445): >>>>>>>>>>>>>> AndroidRuntime START <<<<<<<<<<<<<<
[TRACE] D/AndroidRuntime( 445): CheckJNI is ON
[TRACE] E/IMemory ( 137): cannot map BpMemoryHeap (binder=0x35cd68), size=8388608, fd=45 (Permission denied)
[TRACE] E/Surface ( 137): Couldn't map Surface's heap (binder=0x35cd68, heap=0x1cdfc8)
[TRACE] E/ViewRoot( 137): IllegalArgumentException locking surface
[TRACE] E/ViewRoot( 137): java.lang.IllegalArgumentException
[TRACE] E/ViewRoot( 137): at android.view.Surface.lockCanvasNative(Native Method)
[TRACE] E/ViewRoot( 137): at android.view.Surface.lockCanvas(Surface.java:275)
[TRACE] E/ViewRoot( 137): at android.view.ViewRoot.draw(ViewRoot.java:1266)
[TRACE] E/ViewRoot( 137): at android.view.ViewRoot.performTraversals(ViewRoot.java:1097)
[TRACE] E/ViewRoot( 137): at android.view.ViewRoot.handleMessage(ViewRoot.java:1613)
[TRACE] E/ViewRoot( 137): at android.os.Handler.dispatchMessage(Handler.java:99)
[TRACE] E/ViewRoot( 137): at android.os.Looper.loop(Looper.java:123)
[TRACE] E/ViewRoot( 137): at android.app.ActivityThread.main(ActivityThread.java:4203)
[TRACE] E/ViewRoot( 137): at java.lang.reflect.Method.invokeNative(Native Method)
[TRACE] E/ViewRoot( 137): at java.lang.reflect.Method.invoke(Method.java:521)
[TRACE] E/ViewRoot( 137): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791)
[TRACE] E/ViewRoot( 137): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:549)
[TRACE] E/ViewRoot( 137): at dalvik.system.NativeStart.main(Native Method)
[TRACE] D/AndroidRuntime( 445): --- registering native functions ---
[TRACE] I/ActivityManager( 62): Starting activity: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=no.innovationconsulting.testtitanium/.TesttitaniumActivity }
[TRACE] D/AndroidRuntime( 445): Shutting down VM
[TRACE] D/dalvikvm( 445): DestroyJavaVM waiting for non-daemon threads to exit
[TRACE] D/dalvikvm( 445): DestroyJavaVM shutting VM down
[TRACE] D/dalvikvm( 445): HeapWorker thread shutting down
[TRACE] D/dalvikvm( 445): HeapWorker thread has shut down
[TRACE] D/jdwp ( 445): JDWP shutting down net...
[TRACE] D/dalvikvm( 445): VM cleaning up
[TRACE] D/dalvikvm( 445): LinearAlloc 0x0 used 674660 of 4194304 (16%)
[TRACE] I/ActivityManager( 62): Start proc no.innovationconsulting.testtitanium for activity no.innovationconsulting.testtitanium/.TesttitaniumActivity: pid=453 uid=10024 gids={3003, 1015}
[TRACE] Launch output: Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=no.innovationconsulting.testtitanium/.TesttitaniumActivity }
[TRACE]
[INFO] Deployed TestTitanium ... Application should be running.
[TRACE] I/Log ( 453): (main) [0,0] checkpoint, app created.
[TRACE] I/Log ( 453): (main) [0,0] checkpoint, on root activity create.
[TRACE] D/TiApplication( 453): (main) [248,248] Analytics Event: type=ti.start
[TRACE] D/TiApplication( 453): event=ti.start
[TRACE] D/TiApplication( 453): timestamp=2010-10-27T18:55:22.219+0000
[TRACE] D/TiApplication( 453): mid=f22c7a3d-5b71-4f77-8053-246b3d0e55e6
[TRACE] D/TiApplication( 453): sid=15f0de1a-c853-418d-8a90-6abd0a529efd
[TRACE] D/TiApplication( 453): aguid=3270c869-5e4a-4312-852c-6e50d7db5493
[TRACE] D/TiApplication( 453): isJSON=true
[TRACE] D/TiApplication( 453): payload={"deploytype":"development","os":"google_sdk","tz":0,"nettype":"MOBILE","version":"1.4.0","un":"android-build","app_version":"1.0","osver":"1.6"}
[TRACE] D/dalvikvm( 453): GC freed 4144 objects / 373552 bytes in 316ms
[TRACE] I/TiRootActivity( 453): (Thread-10) [1640,1888] eval app.js
[TRACE] D/KrollContext( 453): (kroll$1) [6,1894] eval file: app://app.js
[TRACE] E/ROOT ( 453): (main) [62,1956] Leaving TiRootActivity.onCreate
[TRACE] I/Log ( 453): (main) [0,0] checkpoint, on root activity resume.
[TRACE] W/TiAnalyticsSvc( 453): (Thread-11) [215,215] Analytics Service Started
[TRACE] I/ActivityManager( 62): Displayed activity no.innovationconsulting.testtitanium/.TesttitaniumActivity: 5035 ms (total 5035 ms)
[TRACE] D/dalvikvm( 453): GC freed 6860 objects / 453408 bytes in 266ms
[TRACE] I/TabGroupProxy( 453): (main) [1316,1531] handleOpen
[TRACE] I/ActivityManager( 62): Starting activity: Intent { cmp=no.innovationconsulting.testtitanium/ti.modules.titanium.ui.TiTabActivity (has extras) }
[TRACE] W/TiTabActivity( 453): (main) [156,1687] Notifying TiTabGroup, activity is created
[TRACE] I/ActivityManager( 62): Displayed activity no.innovationconsulting.testtitanium/ti.modules.titanium.ui.TiTabActivity: 854 ms (total 854 ms)
[TRACE] W/TiActivity( 453): (main) [720,2407] Notifying TiUIWindow, activity is created
[TRACE] D/dalvikvm( 301): GC freed 43 objects / 2080 bytes in 199ms
[TRACE] D/dalvikvm( 137): GC freed 3272 objects / 197160 bytes in 241ms
[TRACE] I/TiAnalyticsSvc( 453): (Thread-11) [13022,15429] Sending 1 analytics events.
— asked October 27th 2010 by Sondre Bjørnebekk
4 Comments
  • Same problem here, except I'm using a Mac Mini and my times are 5-10min :/

    — commented October 27th 2010 by Matthew Lieder
  • Wow, sick… And you still use it? What speed do you get on the same machine for a redeploy of a changed native app to the iPhone emulator?

    — commented October 29th 2010 by Sondre Bjørnebekk
  • No-one wants to answer? I would like to see an answer, even if the answer is that this sluggishness has to be accepted at this point in the Android/Titanium evolution.

    — commented November 1st 2010 by Sondre Bjørnebekk
  • Using the emulator my 4-year-old laptop running Windows 7 takes about the same (i.e. 1.5 mins) … and maybe 30 seconds when deploying to a real device. So I would expect your platform to be way faster using the emulator. Is the emulator virtual storage on the local HDD ?

    — commented November 4th 2010 by Alan Bourke

4 Answers

  • Accepted Answer

    My emulator deployment times have been quite slow as well, however the deploy to device time is only ~10-15 seconds for me, so if you have this problem and you have an Android device, testing mainly on your device could be a way to get around it.

    — answered November 22nd 2010 by Martin Juell
    permalink
    1 Comment
    • Hi Martin, haven't I seen you somewhere before? ;-)

      Thanks for sharing. For me testing on a physical device only is not practical, though. Will mark this as the best answer anyway, as it is certainly an option for some.

      — commented November 23rd 2010 by Sondre Bjørnebekk
  • Oops, got the "Aw Shucks" error page and re-submitted. Sorry for the duplicate answer

    — answered November 3rd 2010 by Tim Poulsen
    permalink
    0 Comments
  • For me, the process to compile, launch emulator, install app, open app is over a minute (I haven't timed it out). This is on my Windows XP laptop–Core 2 Duo with 2.5 GB RAM, not a screamer but sufficient.

    I recall reading someplace on the Appcelerator site that this was normal. The process to do the same for iPhone on my Mac is considerably quicker, less than 10 seconds. I haven't gotten the android emulator to work on the Mac, and since I have it working on my Windows PC I haven't spent a lot of time figuring out why. So, I can't compare speeds between platforms.

    You're correct that this makes development slow and painful. I don't think all of this is Appcelerator's fault though. I think the underlying Android tools, perhaps because they're all Java based, are a big part of the problem. Try just launching the emulator from the android sdk directory and you'll see it takes a long time there too.

    — answered November 3rd 2010 by Tim Poulsen
    permalink
    1 Comment
    • Yes, I understand that the Android emulator is slow. However, my timing was done when having the emulator running already - which is also what I am considering the most important to optimize. The way I like to work, I would do incremental changes in code and run/test them frequently - this is simply not possible with the current Titanium/Android combo, it seems.

      — commented November 3rd 2010 by Sondre Bjørnebekk
  • I will +1 the response which reads that deploying to an Android device is faster than deploying to the emulator - this would be true even if you weren't developing a Titanium-based app. We know the dev cycle is pretty slow on Android and are looking at ways to address it - it's a non-trivial engineering challenge, but we know we need to improve it.

    For me, Titanium apps deploy in < 30 seconds to the emulator, but about half as long to the device.

    — answered November 22nd 2010 by Kevin Whinnery
    permalink
    2 Comments
    • I should also say that the first run is very slow, since the emulator has to start up, which is incredibly slow. The < 30 second time on my MacBook Pro (Core 2 Duo @ 2.8 GHz, 4 GB RAM), after the emulator is loaded up, and I re-deploy changes to the emulator after hitting "Launch" in Titanium Developer.

      — commented November 22nd 2010 by Kevin Whinnery
    • I totally agree, as I mentioned originally, that it is the redeploy (with emulator running) that is the critical to optimize. On state-of-the-art HW this should be less than or at least around 10 seconds IMO. BTW: Good to have some non-trivial engineering challenges to tackle, right? :-) Good luck!

      — commented November 23rd 2010 by Sondre Bjørnebekk
The ownership of individual contributions to this community generated content is retained by the authors of their contributions.
All trademarks remain the property of the respective owner.