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.
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.
-
Oops, got the "Aw Shucks" error page and re-submitted. Sorry for the duplicate answer
-
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.
-
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.