Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[TIMOB-18082] Android: Enable --multi-dex for android builds #8095

Merged
merged 7 commits into from Jul 20, 2016

Conversation

sgtcoolguy
Copy link
Contributor

@sgtcoolguy sgtcoolguy commented Jun 28, 2016

JIRA: https://jira.appcelerator.org/browse/TIMOB-18082

Description:
This calls dexer with the --multi-dex argument, modifies our CLI to copy *.dex (not just classes.dex), and modifies TiApplication to override attachBaseContext to call MultiDex.install (to support loading multiple dex files). We also include the android-support-multidex.jar as a library dependency.

This PR's functionality was confirmed with the module @ashcoding provided.

@stephenfeather
Copy link
Contributor

stephenfeather commented Jun 28, 2016

Unless the support library is included, it should have a tiapp check to be sure the min target is android 5 or higher

@ashcoding
Copy link
Contributor

ashcoding commented Jun 29, 2016

Our min is way higher than 5. It's at 14.
Update: I think I misunderstood you and that you actually meant Android 5.0 (API 21).
We would need to ensure that if multi-dex is chosen, the min we can support or build is for API 21.

For lesser than Android 5.0 https://developer.android.com/topic/libraries/support-library/features.html#multidex
The support multidex would be needed to be added. Something we can consider or look into in the future.

But for now, just setting the min to API 21 if multi-dex is chosen should be a good step.

@ashcoding
Copy link
Contributor

For testing, I think adding loads and loads of modules would make it hit the 64k limit fast.

@sgtcoolguy
Copy link
Contributor Author

to be able to actually compile titanium, I have to add android-support-multidex.jar to our libraries anyways. I assume that'll get baked in like the android-support-v4/android-support-v7 do.

@ashcoding
Copy link
Contributor

To easily test this, I've created a Module compiled against 5.3.0.GA (you can easily recompile it against what you need) https://github.com/ashcoding/ReachTheLimit/releases/tag/1.0.0

This module is for Android. Simply add it to a project and add the reference to it in the project

var reachingTheLimits = require('com.appcelerator.reachthelimit');

You should be able to reach the limit and get the error:-

[ERROR] :  Failed to run dexer:
[ERROR] :  
[ERROR] :  trouble writing output: Too many method references: 90729; max is 65536.
[ERROR] :  You may try using --multi-dex option.

@sgtcoolguy
Copy link
Contributor Author

sgtcoolguy commented Jun 30, 2016

Awesome, thanks @ashcoding 👍

I was able to re-compile the module for 6.0.0 and confirmed that I hit the error. I then built the SDK with the changes from this PR and re-ran and it ran fine. Looks like the PR works.

@sgtcoolguy sgtcoolguy added this to the 6.0.0 milestone Jun 30, 2016
@sgtcoolguy
Copy link
Contributor Author

OK, I think this PR is ready for review/merge.

@ashcoding
Copy link
Contributor

For testing purposes, the module can be downloaded here https://github.com/ashcoding/ReachTheLimit/releases/tag/2.0.0

This supports 6.0.0.

@ashcoding
Copy link
Contributor

ashcoding commented Jul 1, 2016

Tried this on an Emulator running Android 4.0.4 (API 15). Crashes as follows:-

I/ActivityManager(  881): START {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=sg.appcelerator/.Titaniumsdk6v8Activity} from pid 977
D/dalvikvm(  775): GC_EXPLICIT freed 35K, 2% free 22669K/23107K, paused 0ms+0ms
I/ActivityManager(  881): Start proc sg.appcelerator for activity sg.appcelerator/.Titaniumsdk6v8Activity: pid=1461 uid=10041 gids={3003, 1015}
D/OpenGLRenderer(  977): GL error from OpenGLRenderer: 0x506
W/dalvikvm( 1461): Unable to resolve superclass of Lsg/appcelerator/Titaniumsdk6v8Application; (76)
W/dalvikvm( 1461): Link of class 'Lsg/appcelerator/Titaniumsdk6v8Application;' failed
D/AndroidRuntime( 1461): Shutting down VM
W/dalvikvm( 1461): threadid=1: thread exiting with uncaught exception (group=0xb318c180)
E/AndroidRuntime( 1461): FATAL EXCEPTION: main
E/AndroidRuntime( 1461): java.lang.RuntimeException: Unable to instantiate application sg.appcelerator.Titaniumsdk6v8Application: java.lang.ClassNotFoundException: sg.appcelerator.Titaniumsdk6v8Application
E/AndroidRuntime( 1461):    at android.app.LoadedApk.makeApplication(LoadedApk.java:482)
E/AndroidRuntime( 1461):    at android.app.ActivityThread.handleBindApplication(ActivityThread.java:3938)
E/AndroidRuntime( 1461):    at android.app.ActivityThread.access$1300(ActivityThread.java:123)
E/AndroidRuntime( 1461):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1185)
E/AndroidRuntime( 1461):    at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime( 1461):    at android.os.Looper.loop(Looper.java:137)
E/AndroidRuntime( 1461):    at android.app.ActivityThread.main(ActivityThread.java:4424)
E/AndroidRuntime( 1461):    at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime( 1461):    at java.lang.reflect.Method.invoke(Method.java:511)
E/AndroidRuntime( 1461):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
E/AndroidRuntime( 1461):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
E/AndroidRuntime( 1461):    at dalvik.system.NativeStart.main(Native Method)
E/AndroidRuntime( 1461): Caused by: java.lang.ClassNotFoundException: sg.appcelerator.Titaniumsdk6v8Application
E/AndroidRuntime( 1461):    at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61)
E/AndroidRuntime( 1461):    at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
E/AndroidRuntime( 1461):    at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
E/AndroidRuntime( 1461):    at android.app.Instrumentation.newApplication(Instrumentation.java:942)
E/AndroidRuntime( 1461):    at android.app.LoadedApk.makeApplication(LoadedApk.java:477)
E/AndroidRuntime( 1461):    ... 11 more
W/NetworkManagementSocketTagger(  881): setKernelCountSet(10041, 1) failed with errno -2
D/dalvikvm(  775): GC_EXPLICIT freed <1K, 2% free 22669K/23107K, paused 0ms+1ms
D/dalvikvm(  775): GC_EXPLICIT freed <1K, 2% free 22669K/23107K, paused 0ms+0ms
W/ActivityManager(  881):   Force finishing activity sg.appcelerator/.Titaniumsdk6v8Activity

Tried on a SM-G900F, Samsung Galaxy S5, Android 4.4.2 (API 19). Crashes as follows:-

E/AndroidRuntime( 9348): FATAL EXCEPTION: main
E/AndroidRuntime( 9348): Process: sg.appcelerator, PID: 9348
E/AndroidRuntime( 9348): java.lang.RuntimeException: Unable to instantiate application sg.appcelerator.Titaniumsdk6v8Application: java.lang.ClassNotFoundException: Didn't find class "sg.appcelerator.Titaniumsdk6v8Application" on path: DexPathList[[zip file "/data/app/sg.appcelerator-2.apk"],nativeLibraryDirectories=[/data/app-lib/sg.appcelerator-2, /vendor/lib, /system/lib]]
E/AndroidRuntime( 9348):    at android.app.LoadedApk.makeApplication(LoadedApk.java:516)
E/AndroidRuntime( 9348):        at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4685)
E/AndroidRuntime( 9348):    at android.app.ActivityThread.access$1600(ActivityThread.java:173)
E/AndroidRuntime( 9348):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1363)
E/AndroidRuntime( 9348):    at android.os.Handler.dispatchMessage(Handler.java:102)
E/AndroidRuntime( 9348):    at android.os.Looper.loop(Looper.java:136)
E/AndroidRuntime( 9348):    at android.app.ActivityThread.main(ActivityThread.java:5579)
E/AndroidRuntime( 9348):    at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime( 9348):    at java.lang.reflect.Method.invoke(Method.java:515)
E/AndroidRuntime( 9348):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1268)
E/AndroidRuntime( 9348):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1084)
E/AndroidRuntime( 9348):    at dalvik.system.NativeStart.main(Native Method)
E/AndroidRuntime( 9348): Caused by: java.lang.ClassNotFoundException: Didn't find class "sg.appcelerator.Titaniumsdk6v8Application" on path: DexPathList[[zip file "/data/app/sg.appcelerator-2.apk"],nativeLibraryDirectories=[/data/app-lib/sg.appcelerator-2, /vendor/lib, /system/lib]]
E/AndroidRuntime( 9348):    at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:67)
E/AndroidRuntime( 9348):    at java.lang.ClassLoader.loadClass(ClassLoader.java:497)
E/AndroidRuntime( 9348):    at java.lang.ClassLoader.loadClass(ClassLoader.java:457)
E/AndroidRuntime( 9348):    at android.app.Instrumentation.newApplication(Instrumentation.java:981)
E/AndroidRuntime( 9348):    at android.app.LoadedApk.makeApplication(LoadedApk.java:511)
E/AndroidRuntime( 9348):    ... 11 more
W/ActivityManager(  744):   Force finishing activity sg.appcelerator/.Titaniumsdk6v8Activity
D/SurfaceWidgetView( 1357): destroyHardwareResources():1145229304
D/KeyguardUpdateMonitor( 1192): sendKeyguardVisibilityChanged(true)
D/CrashAnrDetector(  744): processName: sg.appcelerator
D/CrashAnrDetector(  744): broadcastEvent : sg.appcelerator data_app_crash

It works fine on Nexus 6 running Android 6.0 (API 23).

@ashcoding
Copy link
Contributor

Nexus 6 running Android 6.0 (API 23) is also able to crash.
This happens when you start the app and press the back button.

Crash as follows:-

--------- beginning of crash
06-30 23:03:22.895  7006  7019 F libc    : Fatal signal 11 (SIGSEGV), code 1, fault addr 0xeac in tid 7019 (KrollRuntimeThr)
06-30 23:03:22.997   373   373 F DEBUG   : *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
06-30 23:03:22.998   373   373 F DEBUG   : Build fingerprint: 'google/shamu/shamu:6.0/MRA58K/2256973:user/release-keys'
06-30 23:03:22.998   373   373 F DEBUG   : Revision: '0'
06-30 23:03:22.998   373   373 F DEBUG   : ABI: 'arm'
06-30 23:03:22.998   373   373 F DEBUG   : pid: 7006, tid: 7019, name: KrollRuntimeThr  >>> sg.appcelerator <<<
06-30 23:03:22.998   373   373 F DEBUG   : signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0xeac
06-30 23:03:23.016   373   373 F DEBUG   :     r0 00000000  r1 00000000  r2 b3afe9f0  r3 00aebea4
06-30 23:03:23.016   373   373 F DEBUG   :     r4 00000000  r5 b3afdb90  r6 b6d70ec0  r7 b3afdb90
06-30 23:03:23.016   373   373 F DEBUG   :     r8 b3bef000  r9 00000000  sl 9fa39e40  fp 00000000
06-30 23:03:23.017   373   373 F DEBUG   :     ip b36e9ee4  sp b3afdb80  lr 9ec03dc0  pc 9ec03dc8  cpsr 600f0010
06-30 23:03:23.020   373   373 F DEBUG   : 
06-30 23:03:23.020   373   373 F DEBUG   : backtrace:
06-30 23:03:23.020   373   373 F DEBUG   :     #00 pc 00419dc8  /data/app/sg.appcelerator-1/lib/arm/libkroll-v8.so (v8::HandleScope::HandleScope(v8::Isolate*)+24)
06-30 23:03:23.020   373   373 F DEBUG   :     #01 pc 000058f1  /data/app/sg.appcelerator-1/lib/arm/libcom.appcelerator.reachthelimit.so
06-30 23:03:23.020   373   373 F DEBUG   :     #02 pc 0034c527  /data/app/sg.appcelerator-1/lib/arm/libkroll-v8.so (titanium::KrollBindings::dispose(v8::Isolate*)+162)
06-30 23:03:23.020   373   373 F DEBUG   :     #03 pc 00350f63  /data/app/sg.appcelerator-1/lib/arm/libkroll-v8.so (Java_org_appcelerator_kroll_runtime_v8_V8Runtime_nativeDispose+98)
06-30 23:03:23.021   373   373 F DEBUG   :     #04 pc 009bf6d7  /data/app/sg.appcelerator-1/oat/arm/base.odex (offset 0x777000)
06-30 23:03:23.417   373   373 F DEBUG   : 
06-30 23:03:23.417   373   373 F DEBUG   : Tombstone written to: /data/tombstones/tombstone_09
06-30 23:03:23.417   373   373 E DEBUG   : AM write failed: Broken pipe
06-30 23:03:23.418   888   904 I BootReceiver: Copying /data/tombstones/tombstone_09 to DropBox (SYSTEM_TOMBSTONE)
06-30 23:03:23.470   888  1335 I OpenGLRenderer: Initialized EGL, version 1.4
06-30 23:03:23.511   888  1774 D GraphicsStats: Buffer count: 3
06-30 23:03:23.521   888  1660 I ActivityManager: Process sg.appcelerator (pid 7006) has died

@ashcoding
Copy link
Contributor

The test code I'm using is

var Reachthelimit = require('com.appcelerator.reachthelimit');
var limitBreaker = Reachthelimit.createExample({message: "hello world"});
var win = Ti.UI.createWindow();
win.open();
limitBreaker.hitTheLimits();

With the module https://github.com/ashcoding/ReachTheLimit/releases/tag/2.0.0

@sgtcoolguy
Copy link
Contributor Author

@ashcoding So the first issue looks like it may have some stack trace missing. It looks similar to when I was missing the android-support-multidex.jar library (so it couldn't load the MultiDex class). I thought this commit fixed that: df2cf69

The second issue appears to be related to the V8 update. Looks like cleaning up native modules triggers some bad behavior/crash there. I'll have to try and reproduce and see...

@sgtcoolguy
Copy link
Contributor Author

I cherry-picked c499b0b to master since it's really a follow-on fix for the V8 update #8041

@sgtcoolguy
Copy link
Contributor Author

sgtcoolguy commented Jul 11, 2016

@ashcoding I just tried against a 4.4.2 (19) x86 emulator and it seemed to work fine for me. Maybe you tested against a version without that last commit? Can you retry please?

@ashcoding
Copy link
Contributor

ashcoding commented Jul 12, 2016

Retried.
Here's the error I'm getting now on the Android Nexus 6 running Android 6.0
Update: Please ignore this crash log. It's fine.

07-12 04:37:08.559 12057 12057 I art     : Late-enabling -Xcheck:jni
07-12 04:37:08.559   889  2689 I ActivityManager: Start proc 12057:sg.appcelerator/u0a139 for activity sg.appcelerator/.Titaniumsdk6v8Activity
07-12 04:37:08.626 12057 12057 I TiApplication: (main) [0,0] checkpoint, app created.
07-12 04:37:08.697 12057 12057 I TiApplication: (main) [71,71] Titanium 6.0.0 (2016/07/12 16:28 undefined)
07-12 04:37:08.698 12057 12057 I MultiDex: VM with version 2.1.0 has multidex support
07-12 04:37:08.699 12057 12057 I MultiDex: install
07-12 04:37:08.699 12057 12057 I MultiDex: VM has multidex support, MultiDex support library is disabled.
07-12 04:37:08.734 12057 12057 I TiApplication: (main) [37,108] Titanium Javascript runtime: v8
07-12 04:37:08.749 12057 12057 D ReachthelimitModule: (main) [15,123] inside onAppCreate
07-12 04:37:08.763 12057 12057 I TiRootActivity: (main) [0,0] checkpoint, on root activity create, savedInstanceState: null
07-12 04:37:09.122 12057 12071 W V8Object: (KrollRuntimeThread) [359,359] Runtime disposed, cannot set property 'userAgent'
07-12 04:37:09.172 12057 12071 E TiApplication: (KrollRuntimeThread) [50,409] Sending event: exception on thread: KrollRuntimeThread msg:java.lang.UnsatisfiedLinkError: dlopen failed: cannot locate symbol "_ZN8titanium11TiViewProxy7disposeEv" referenced by "/data/app/sg.appcelerator-1/lib/arm/libcom.appcelerator.reachthelimit.so"...; Titanium 6.0.0,2016/07/12 16:28,undefined
07-12 04:37:09.172 12057 12071 E TiApplication: java.lang.UnsatisfiedLinkError: dlopen failed: cannot locate symbol "_ZN8titanium11TiViewProxy7disposeEv" referenced by "/data/app/sg.appcelerator-1/lib/arm/libcom.appcelerator.reachthelimit.so"...
07-12 04:37:09.172 12057 12071 E TiApplication:     at java.lang.Runtime.loadLibrary(Runtime.java:372)
07-12 04:37:09.172 12057 12071 E TiApplication:     at java.lang.System.loadLibrary(System.java:1076)
07-12 04:37:09.172 12057 12071 E TiApplication:     at org.appcelerator.kroll.runtime.v8.V8Runtime.loadExternalModules(V8Runtime.java:132)
07-12 04:37:09.172 12057 12071 E TiApplication:     at org.appcelerator.kroll.runtime.v8.V8Runtime.initRuntime(V8Runtime.java:99)
07-12 04:37:09.172 12057 12071 E TiApplication:     at org.appcelerator.kroll.KrollRuntime.doInit(KrollRuntime.java:205)
07-12 04:37:09.172 12057 12071 E TiApplication:     at org.appcelerator.kroll.KrollRuntime$KrollRuntimeThread.run(KrollRuntime.java:114)
--------- beginning of crash
07-12 04:37:09.199 12057 12071 E AndroidRuntime: FATAL EXCEPTION: KrollRuntimeThread
07-12 04:37:09.199 12057 12071 E AndroidRuntime: Process: sg.appcelerator, PID: 12057
07-12 04:37:09.199 12057 12071 E AndroidRuntime: java.lang.UnsatisfiedLinkError: dlopen failed: cannot locate symbol "_ZN8titanium11TiViewProxy7disposeEv" referenced by "/data/app/sg.appcelerator-1/lib/arm/libcom.appcelerator.reachthelimit.so"...
07-12 04:37:09.199 12057 12071 E AndroidRuntime:    at java.lang.Runtime.loadLibrary(Runtime.java:372)
07-12 04:37:09.199 12057 12071 E AndroidRuntime:    at java.lang.System.loadLibrary(System.java:1076)
07-12 04:37:09.199 12057 12071 E AndroidRuntime:    at org.appcelerator.kroll.runtime.v8.V8Runtime.loadExternalModules(V8Runtime.java:132)
07-12 04:37:09.199 12057 12071 E AndroidRuntime:    at org.appcelerator.kroll.runtime.v8.V8Runtime.initRuntime(V8Runtime.java:99)
07-12 04:37:09.199 12057 12071 E AndroidRuntime:    at org.appcelerator.kroll.KrollRuntime.doInit(KrollRuntime.java:205)
07-12 04:37:09.199 12057 12071 E AndroidRuntime:    at org.appcelerator.kroll.KrollRuntime$KrollRuntimeThread.run(KrollRuntime.java:114)
07-12 04:37:09.200   889   899 W ActivityManager:   Force finishing activity sg.appcelerator/.Titaniumsdk6v8Activity
07-12 04:37:09.501   889   899 I WindowManager: Screenshot max retries 4 of Token{e311221 ActivityRecord{9511888 u0 sg.appcelerator/.Titaniumsdk6v8Activity t936 f}} appWin=Window{5b8e459 u0 Starting sg.appcelerator} drawState=4

@ashcoding
Copy link
Contributor

OH. Do I need to recompile my module? Let me try that.

@ashcoding
Copy link
Contributor

ashcoding commented Jul 12, 2016

Ok. That works on Android 6.0, Nexus 6. No issues.

@ashcoding
Copy link
Contributor

ashcoding commented Jul 12, 2016

It's Failing on SM-G900F, Galaxy S5 running Android 4.4.2. It uses armeabi-v7a.
Logs as follows:

E/AndroidRuntime(15339): FATAL EXCEPTION: main
E/AndroidRuntime(15339): Process: sg.com.timaptest, PID: 15339
E/AndroidRuntime(15339): java.lang.RuntimeException: Unable to instantiate application sg.com.timaptest.TimaptestApplication: java.lang.ClassNotFoundException: Didn't find class "sg.com.timaptest.TimaptestApplication" on path: DexPathList[[zip file "/data/app/sg.com.timaptest-2.apk"],nativeLibraryDirectories=[/data/app-lib/sg.com.timaptest-2, /vendor/lib, /system/lib]]
E/AndroidRuntime(15339):    at android.app.LoadedApk.makeApplication(LoadedApk.java:516)
E/AndroidRuntime(15339):    at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4685)
E/AndroidRuntime(15339):    at android.app.ActivityThread.access$1600(ActivityThread.java:173)
E/AndroidRuntime(15339):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1363)
E/AndroidRuntime(15339):    at android.os.Handler.dispatchMessage(Handler.java:102)
E/AndroidRuntime(15339):    at android.os.Looper.loop(Looper.java:136)
E/AndroidRuntime(15339):    at android.app.ActivityThread.main(ActivityThread.java:5579)
E/AndroidRuntime(15339):    at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(15339):    at java.lang.reflect.Method.invoke(Method.java:515)
E/AndroidRuntime(15339):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1268)
E/AndroidRuntime(15339):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1084)
E/AndroidRuntime(15339):    at dalvik.system.NativeStart.main(Native Method)
E/AndroidRuntime(15339): Caused by: java.lang.ClassNotFoundException: Didn't find class "sg.com.timaptest.TimaptestApplication" on path: DexPathList[[zip file "/data/app/sg.com.timaptest-2.apk"],nativeLibraryDirectories=[/data/app-lib/sg.com.timaptest-2, /vendor/lib, /system/lib]]
E/AndroidRuntime(15339):    at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:67)
E/AndroidRuntime(15339):    at java.lang.ClassLoader.loadClass(ClassLoader.java:497)
E/AndroidRuntime(15339):    at java.lang.ClassLoader.loadClass(ClassLoader.java:457)
E/AndroidRuntime(15339):    at android.app.Instrumentation.newApplication(Instrumentation.java:981)
E/AndroidRuntime(15339):    at android.app.LoadedApk.makeApplication(LoadedApk.java:511)
E/AndroidRuntime(15339):    ... 11 more
W/ActivityManager(  726):   Force finishing activity sg.com.timaptest/.TimaptestActivity

@cheekiatng
Copy link
Contributor

@sgtcoolguy I'm able to reproduce the same errors as Ash on the devices :(

@ashcoding
Copy link
Contributor

ashcoding commented Jul 15, 2016

Tried it again. The only device that's working is Nexus 6, Android 6.0. The other devices we have are failing.

I tried it on the latest https://github.com/ashcoding/ReachTheLimit/releases/tag/2.0.2 which was recompiled with the latest master at the time this was written.

@sgtcoolguy
Copy link
Contributor Author

Well I am not originally an Android dev, so I do not know how to properly fix this one. On older APIs, the support library needs to be packaged into the app. How do we do that?

@ashcoding
Copy link
Contributor

Perhaps, this is explaining what is happening. http://stackoverflow.com/a/32780470/6207774

From what I can see from the test we did, it is working on Android 6.0 and failing in Android 4.4.2.
It seems that the article above explains what is missing.

On Pre-L:

You will receive java.lang.ClassNotFoundException if your application code will try to reference a class that was packaged in one of your secondary dex files before successfully patching application class loader.

@ashcoding
Copy link
Contributor

So it seems like what we need is the classes used to start the app to be in the main dex and everything else can be in the secondary dex.

This would include ensuring the classes called in here https://github.com/appcelerator/titanium_mobile/blob/master/android/titanium/src/java/org/appcelerator/titanium/TiApplication.java#L361-L382 to be included in the main dex to ensure that the app is started correctly. And any other classes that we need to identify that is required.

Looks like there's a few more things that's needed to be done if this is to be merged and functional for it to support for Android Lollipop and below.

Related readings:

Otherwise, if we are only targeting Android L and above only, perhaps we can use this. Meaning, if detected that a person is compiling for Android L and above, to allow for this code to be used.

@sgtcoolguy
Copy link
Contributor Author

@ashcoding I think you're jumping too far ahead. The likely cause is because multidex support was in a separate library until it got folded directly into Android core. So my understanding is that on API level 21 and lower we need to make sure the multidex support library gets added to the class path/into the app. I thought I had done so with my changes above. Apparently that's not enough.

How do we force a 3rd-party JAR into the app?

I thought this would do so: https://github.com/sgtcoolguy/titanium_mobile/blob/7175ae0f54785adb8df024e01d7801c2afe5412b/android/dependency.json#L29

Do we not have other cases of support libraries we're bundling into the user's app for them? Again, I haven't typically does Android SDK dev so I'm not as familiar, but surely we've done this before...

@ashcoding
Copy link
Contributor

This is a PR I did some time back to include cardview
9966ef5

@ashcoding
Copy link
Contributor

ashcoding commented Jul 19, 2016

I believe you might be right.

You could be missing these:

  • android/kroll-apt/src/java/org/appcelerator/kroll/annotations/generator/KrollAPIUpdater.java
  • android/build/common.xml

@ashcoding
Copy link
Contributor

I'm still facing the issue.

E/AndroidRuntime(10869): java.lang.RuntimeException: Unable to instantiate application sg.appcelerator.Titaniumsdk6v8Application: java.lang.ClassNotFoundException: Didn't find class "sg.appcelerator.Titaniumsdk6v8Application" on path: DexPathList[[zip file "/data/app/sg.appcelerator-6.apk"],nativeLibraryDirectories=[/data/app-lib/sg.appcelerator-6, /vendor/lib, /system/lib]]
E/AndroidRuntime(10869):    at android.app.LoadedApk.makeApplication(LoadedApk.java:516)
E/AndroidRuntime(10869):    at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4685)
E/AndroidRuntime(10869):    at android.app.ActivityThread.access$1600(ActivityThread.java:173)
E/AndroidRuntime(10869):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1363)
E/AndroidRuntime(10869):    at android.os.Handler.dispatchMessage(Handler.java:102)
E/AndroidRuntime(10869):    at android.os.Looper.loop(Looper.java:136)
E/AndroidRuntime(10869):    at android.app.ActivityThread.main(ActivityThread.java:5579)
E/AndroidRuntime(10869):    at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(10869):    at java.lang.reflect.Method.invoke(Method.java:515)
E/AndroidRuntime(10869):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1268)
E/AndroidRuntime(10869):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1084)
E/AndroidRuntime(10869):    at dalvik.system.NativeStart.main(Native Method)
E/AndroidRuntime(10869): Caused by: java.lang.ClassNotFoundException: Didn't find class "sg.appcelerator.Titaniumsdk6v8Application" on path: DexPathList[[zip file "/data/app/sg.appcelerator-6.apk"],nativeLibraryDirectories=[/data/app-lib/sg.appcelerator-6, /vendor/lib, /system/lib]]
E/AndroidRuntime(10869):    at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:67)
E/AndroidRuntime(10869):    at java.lang.ClassLoader.loadClass(ClassLoader.java:497)
E/AndroidRuntime(10869):    at java.lang.ClassLoader.loadClass(ClassLoader.java:457)
E/AndroidRuntime(10869):    at android.app.Instrumentation.newApplication(Instrumentation.java:981)
E/AndroidRuntime(10869):    at android.app.LoadedApk.makeApplication(LoadedApk.java:511)
E/AndroidRuntime(10869):    ... 11 more
W/ActivityManager(  749):   Force finishing activity sg.appcelerator/.Titaniumsdk6v8Activity

😞

… the build-tools mainDexClasses script (because it's a bash script, and because it doesn't handle args with spaces correctly). So we need to use proguard and MainDexListBuilder class in dx.jar ourselves - since it looks liek gradle now does it for you?
@sgtcoolguy
Copy link
Contributor Author

sgtcoolguy commented Jul 19, 2016

@ashcoding @cheekiatng OK, I pushed another update. I was unable to reproduce the same error locally, but went on Ash's hunch that we need to inform dx about what files to keep in the first/main dex file. I was seeing some odd stuff where it complained about not being able to find com.appcelerator.reachthelimit.ReacthelimitBootstrap.class when we're registering the module in onCreate(). I think possibly it was related?

Anyhow, after a lot of Googling and frustration my solution is based on this: http://blog.osom.info/2014/10/generating-main-dex-list-file.html

Android has a mainDexClasses bash script in build-tools which performs the function I'm mimicking here. Unfortunately their script isn't cross-platform and doesn't handle spaces in paths well. So I'm doing the equivalent in our Node CLI build script. Effectively what it does is to:

  • run proguard with all the classes/JARs as input and a set of rules in build-tools' mainDexClasses.rules.
  • That spits out a combined JAR against these rules.
  • Then it feeds that JAR and the list of all classes/JARs into a class inside dx.jar (dexer) called com.android.multidex.MainDexListBuilder which then spits out the minimal listing of classes that need to be in the first dex file, and we write that out to a file.
  • We take that file and pass it to dexer via the --main-dex-list arg.

I think we should probably guard doing all this extra work based on the target API level of the build? It appears it's not necessary on API 21+?

Also disconcerting is that if you google more about this, you run into some source about the process/gradle here: https://android.googlesource.com/platform/tools/base/+/9fba95348ef762fd9a7c82ac332d119684a74bcb/build-system/gradle/src/main/groovy/com/android/build/gradle/internal/tasks/multidex/CreateMainDexList.groovy

Which shows that it actually uses a different class: com.android.multidex.ClassReferenceListBuilder and has to hack around some problem of proguard being too aggressive in dropping interfaces from the listing.

@ashcoding
Copy link
Contributor

I think you solved it! I'm not having any serious crashes on the SM-G900F, Galaxy S5 running Android 4.4.2.

I'm getting this though

[INFO] :   dalvikvm: threadid=12: stack overflow on call to Lcom/appcelerator/reachthelimit/PartOne;.method634:V
[INFO] :   dalvikvm:   method requires 4+20+4=28 bytes, fp is 0x7294b304 (4 left)
[INFO] :   dalvikvm:   expanding stack end (0x7294b300 to 0x7294b000)
[INFO] :   dalvikvm: Shrank stack (to 0x7294b300, curFrame is 0x7294ee88)
[WARN] :   W/System.err: java.lang.StackOverflowError
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method633(PartOne.java:2545)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method632(PartOne.java:2541)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method631(PartOne.java:2537)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method630(PartOne.java:2533)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method629(PartOne.java:2529)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method628(PartOne.java:2525)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method627(PartOne.java:2521)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method626(PartOne.java:2517)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method625(PartOne.java:2513)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method624(PartOne.java:2509)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method623(PartOne.java:2505)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method622(PartOne.java:2501)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method621(PartOne.java:2497)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method620(PartOne.java:2493)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method619(PartOne.java:2489)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method618(PartOne.java:2485)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method617(PartOne.java:2481)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method616(PartOne.java:2477)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method615(PartOne.java:2473)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method614(PartOne.java:2469)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method613(PartOne.java:2465)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method612(PartOne.java:2461)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method611(PartOne.java:2457)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method610(PartOne.java:2453)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method609(PartOne.java:2449)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method608(PartOne.java:2445)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method607(PartOne.java:2441)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method606(PartOne.java:2437)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method605(PartOne.java:2433)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method604(PartOne.java:2429)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method603(PartOne.java:2425)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method602(PartOne.java:2421)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method601(PartOne.java:2417)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method600(PartOne.java:2413)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method599(PartOne.java:2409)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method598(PartOne.java:2405)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method597(PartOne.java:2401)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method596(PartOne.java:2397)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method595(PartOne.java:2393)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method594(PartOne.java:2389)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method593(PartOne.java:2385)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method592(PartOne.java:2381)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method591(PartOne.java:2377)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method590(PartOne.java:2373)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method589(PartOne.java:2369)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method588(PartOne.java:2365)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method587(PartOne.java:2361)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method586(PartOne.java:2357)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method585(PartOne.java:2353)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method584(PartOne.java:2349)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method583(PartOne.java:2345)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method582(PartOne.java:2341)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method581(PartOne.java:2337)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method580(PartOne.java:2333)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method579(PartOne.java:2329)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method578(PartOne.java:2325)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method577(PartOne.java:2321)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method576(PartOne.java:2317)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method575(PartOne.java:2313)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method574(PartOne.java:2309)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method573(PartOne.java:2305)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method572(PartOne.java:2301)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method571(PartOne.java:2297)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method570(PartOne.java:2293)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method569(PartOne.java:2289)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method568(PartOne.java:2285)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method567(PartOne.java:2281)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method566(PartOne.java:2277)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method565(PartOne.java:2273)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method564(PartOne.java:2269)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method563(PartOne.java:2265)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method562(PartOne.java:2261)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method561(PartOne.java:2257)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method560(PartOne.java:2253)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method559(PartOne.java:2249)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method558(PartOne.java:2245)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method557(PartOne.java:2241)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method556(PartOne.java:2237)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method555(PartOne.java:2233)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method554(PartOne.java:2229)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method553(PartOne.java:2225)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method552(PartOne.java:2221)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method551(PartOne.java:2217)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method550(PartOne.java:2213)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method549(PartOne.java:2209)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method548(PartOne.java:2205)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method547(PartOne.java:2201)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method546(PartOne.java:2197)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method545(PartOne.java:2193)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method544(PartOne.java:2189)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method543(PartOne.java:2185)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method542(PartOne.java:2181)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method541(PartOne.java:2177)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method540(PartOne.java:2173)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method539(PartOne.java:2169)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method538(PartOne.java:2165)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method537(PartOne.java:2161)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method536(PartOne.java:2157)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method535(PartOne.java:2153)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method534(PartOne.java:2149)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method533(PartOne.java:2145)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method532(PartOne.java:2141)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method531(PartOne.java:2137)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method530(PartOne.java:2133)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method529(PartOne.java:2129)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method528(PartOne.java:2125)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method527(PartOne.java:2121)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method526(PartOne.java:2117)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method525(PartOne.java:2113)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method524(PartOne.java:2109)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method523(PartOne.java:2105)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method522(PartOne.java:2101)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method521(PartOne.java:2097)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method520(PartOne.java:2093)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method519(PartOne.java:2089)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method518(PartOne.java:2085)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method517(PartOne.java:2081)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method516(PartOne.java:2077)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method515(PartOne.java:2073)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method514(PartOne.java:2069)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method513(PartOne.java:2065)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method512(PartOne.java:2061)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method511(PartOne.java:2057)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method510(PartOne.java:2053)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method509(PartOne.java:2049)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method508(PartOne.java:2045)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method507(PartOne.java:2041)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method506(PartOne.java:2037)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method505(PartOne.java:2033)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method504(PartOne.java:2029)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method503(PartOne.java:2025)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method502(PartOne.java:2021)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method501(PartOne.java:2017)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method500(PartOne.java:2013)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method499(PartOne.java:2009)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method498(PartOne.java:2005)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method497(PartOne.java:2001)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method496(PartOne.java:1997)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method495(PartOne.java:1993)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method494(PartOne.java:1989)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method493(PartOne.java:1985)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method492(PartOne.java:1981)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method491(PartOne.java:1977)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method490(PartOne.java:1973)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method489(PartOne.java:1969)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method488(PartOne.java:1965)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method487(PartOne.java:1961)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method486(PartOne.java:1957)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method485(PartOne.java:1953)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method484(PartOne.java:1949)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method483(PartOne.java:1945)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method482(PartOne.java:1941)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method481(PartOne.java:1937)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method480(PartOne.java:1933)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method479(PartOne.java:1929)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method478(PartOne.java:1925)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method477(PartOne.java:1921)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method476(PartOne.java:1917)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method475(PartOne.java:1913)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method474(PartOne.java:1909)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method473(PartOne.java:1905)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method472(PartOne.java:1901)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method471(PartOne.java:1897)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method470(PartOne.java:1893)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method469(PartOne.java:1889)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method468(PartOne.java:1885)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method467(PartOne.java:1881)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method466(PartOne.java:1877)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method465(PartOne.java:1873)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method464(PartOne.java:1869)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method463(PartOne.java:1865)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method462(PartOne.java:1861)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method461(PartOne.java:1857)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method460(PartOne.java:1853)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method459(PartOne.java:1849)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method458(PartOne.java:1845)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method457(PartOne.java:1841)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method456(PartOne.java:1837)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method455(PartOne.java:1833)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method454(PartOne.java:1829)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method453(PartOne.java:1825)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method452(PartOne.java:1821)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method451(PartOne.java:1817)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method450(PartOne.java:1813)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method449(PartOne.java:1809)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method448(PartOne.java:1805)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method447(PartOne.java:1801)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method446(PartOne.java:1797)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method445(PartOne.java:1793)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method444(PartOne.java:1789)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method443(PartOne.java:1785)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method442(PartOne.java:1781)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method441(PartOne.java:1777)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method440(PartOne.java:1773)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method439(PartOne.java:1769)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method438(PartOne.java:1765)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method437(PartOne.java:1761)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method436(PartOne.java:1757)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method435(PartOne.java:1753)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method434(PartOne.java:1749)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method433(PartOne.java:1745)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method432(PartOne.java:1741)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method431(PartOne.java:1737)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method430(PartOne.java:1733)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method429(PartOne.java:1729)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method428(PartOne.java:1725)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method427(PartOne.java:1721)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method426(PartOne.java:1717)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method425(PartOne.java:1713)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method424(PartOne.java:1709)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method423(PartOne.java:1705)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method422(PartOne.java:1701)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method421(PartOne.java:1697)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method420(PartOne.java:1693)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method419(PartOne.java:1689)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method418(PartOne.java:1685)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method417(PartOne.java:1681)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method416(PartOne.java:1677)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method415(PartOne.java:1673)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method414(PartOne.java:1669)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method413(PartOne.java:1665)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method412(PartOne.java:1661)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method411(PartOne.java:1657)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method410(PartOne.java:1653)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method409(PartOne.java:1649)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method408(PartOne.java:1645)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method407(PartOne.java:1641)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method406(PartOne.java:1637)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method405(PartOne.java:1633)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method404(PartOne.java:1629)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method403(PartOne.java:1625)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method402(PartOne.java:1621)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method401(PartOne.java:1617)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method400(PartOne.java:1613)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method399(PartOne.java:1609)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method398(PartOne.java:1605)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method397(PartOne.java:1601)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method396(PartOne.java:1597)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method395(PartOne.java:1593)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method394(PartOne.java:1589)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method393(PartOne.java:1585)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method392(PartOne.java:1581)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method391(PartOne.java:1577)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method390(PartOne.java:1573)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method389(PartOne.java:1569)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method388(PartOne.java:1565)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method387(PartOne.java:1561)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method386(PartOne.java:1557)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method385(PartOne.java:1553)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method384(PartOne.java:1549)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method383(PartOne.java:1545)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method382(PartOne.java:1541)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method381(PartOne.java:1537)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method380(PartOne.java:1533)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method379(PartOne.java:1529)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method378(PartOne.java:1525)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method377(PartOne.java:1521)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method376(PartOne.java:1517)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method375(PartOne.java:1513)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method374(PartOne.java:1509)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method373(PartOne.java:1505)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method372(PartOne.java:1501)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method371(PartOne.java:1497)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method370(PartOne.java:1493)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method369(PartOne.java:1489)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method368(PartOne.java:1485)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method367(PartOne.java:1481)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method366(PartOne.java:1477)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method365(PartOne.java:1473)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method364(PartOne.java:1469)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method363(PartOne.java:1465)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method362(PartOne.java:1461)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method361(PartOne.java:1457)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method360(PartOne.java:1453)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method359(PartOne.java:1449)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method358(PartOne.java:1445)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method357(PartOne.java:1441)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method356(PartOne.java:1437)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method355(PartOne.java:1433)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method354(PartOne.java:1429)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method353(PartOne.java:1425)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method352(PartOne.java:1421)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method351(PartOne.java:1417)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method350(PartOne.java:1413)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method349(PartOne.java:1409)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method348(PartOne.java:1405)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method347(PartOne.java:1401)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method346(PartOne.java:1397)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method345(PartOne.java:1393)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method344(PartOne.java:1389)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method343(PartOne.java:1385)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method342(PartOne.java:1381)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method341(PartOne.java:1377)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method340(PartOne.java:1373)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method339(PartOne.java:1369)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method338(PartOne.java:1365)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method337(PartOne.java:1361)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method336(PartOne.java:1357)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method335(PartOne.java:1353)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method334(PartOne.java:1349)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method333(PartOne.java:1345)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method332(PartOne.java:1341)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method331(PartOne.java:1337)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method330(PartOne.java:1333)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method329(PartOne.java:1329)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method328(PartOne.java:1325)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method327(PartOne.java:1321)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method326(PartOne.java:1317)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method325(PartOne.java:1313)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method324(PartOne.java:1309)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method323(PartOne.java:1305)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method322(PartOne.java:1301)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method321(PartOne.java:1297)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method320(PartOne.java:1293)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method319(PartOne.java:1289)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method318(PartOne.java:1285)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method317(PartOne.java:1281)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method316(PartOne.java:1277)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method315(PartOne.java:1273)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method314(PartOne.java:1269)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method313(PartOne.java:1265)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method312(PartOne.java:1261)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method311(PartOne.java:1257)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method310(PartOne.java:1253)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method309(PartOne.java:1249)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method308(PartOne.java:1245)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method307(PartOne.java:1241)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method306(PartOne.java:1237)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method305(PartOne.java:1233)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method304(PartOne.java:1229)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method303(PartOne.java:1225)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method302(PartOne.java:1221)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method301(PartOne.java:1217)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method300(PartOne.java:1213)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method299(PartOne.java:1209)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method298(PartOne.java:1205)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method297(PartOne.java:1201)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method296(PartOne.java:1197)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method295(PartOne.java:1193)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method294(PartOne.java:1189)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method293(PartOne.java:1185)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method292(PartOne.java:1181)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method291(PartOne.java:1177)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method290(PartOne.java:1173)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method289(PartOne.java:1169)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method288(PartOne.java:1165)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method287(PartOne.java:1161)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method286(PartOne.java:1157)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method285(PartOne.java:1153)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method284(PartOne.java:1149)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method283(PartOne.java:1145)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method282(PartOne.java:1141)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method281(PartOne.java:1137)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method280(PartOne.java:1133)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method279(PartOne.java:1129)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method278(PartOne.java:1125)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method277(PartOne.java:1121)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method276(PartOne.java:1117)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method275(PartOne.java:1113)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method274(PartOne.java:1109)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method273(PartOne.java:1105)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method272(PartOne.java:1101)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method271(PartOne.java:1097)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method270(PartOne.java:1093)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method269(PartOne.java:1089)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method268(PartOne.java:1085)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method267(PartOne.java:1081)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method266(PartOne.java:1077)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method265(PartOne.java:1073)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method264(PartOne.java:1069)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method263(PartOne.java:1065)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method262(PartOne.java:1061)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method261(PartOne.java:1057)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method260(PartOne.java:1053)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method259(PartOne.java:1049)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method258(PartOne.java:1045)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method257(PartOne.java:1041)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method256(PartOne.java:1037)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method255(PartOne.java:1033)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method254(PartOne.java:1029)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method253(PartOne.java:1025)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method252(PartOne.java:1021)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method251(PartOne.java:1017)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method250(PartOne.java:1013)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method249(PartOne.java:1009)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method248(PartOne.java:1005)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method247(PartOne.java:1001)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method246(PartOne.java:997)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method245(PartOne.java:993)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method244(PartOne.java:989)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method243(PartOne.java:985)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method242(PartOne.java:981)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method241(PartOne.java:977)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method240(PartOne.java:973)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method239(PartOne.java:969)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method238(PartOne.java:965)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method237(PartOne.java:961)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method236(PartOne.java:957)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method235(PartOne.java:953)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method234(PartOne.java:949)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method233(PartOne.java:945)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method232(PartOne.java:941)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method231(PartOne.java:937)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method230(PartOne.java:933)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method229(PartOne.java:929)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method228(PartOne.java:925)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method227(PartOne.java:921)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method226(PartOne.java:917)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method225(PartOne.java:913)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method224(PartOne.java:909)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method223(PartOne.java:905)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method222(PartOne.java:901)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method221(PartOne.java:897)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method220(PartOne.java:893)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method219(PartOne.java:889)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method218(PartOne.java:885)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method217(PartOne.java:881)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method216(PartOne.java:877)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method215(PartOne.java:873)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method214(PartOne.java:869)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method213(PartOne.java:865)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method212(PartOne.java:861)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method211(PartOne.java:857)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method210(PartOne.java:853)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method209(PartOne.java:849)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method208(PartOne.java:845)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method207(PartOne.java:841)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method206(PartOne.java:837)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method205(PartOne.java:833)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method204(PartOne.java:829)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method203(PartOne.java:825)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method202(PartOne.java:821)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method201(PartOne.java:817)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method200(PartOne.java:813)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method199(PartOne.java:809)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method198(PartOne.java:805)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method197(PartOne.java:801)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method196(PartOne.java:797)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method195(PartOne.java:793)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method194(PartOne.java:789)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method193(PartOne.java:785)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method192(PartOne.java:781)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method191(PartOne.java:777)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method190(PartOne.java:773)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method189(PartOne.java:769)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method188(PartOne.java:765)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method187(PartOne.java:761)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method186(PartOne.java:757)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method185(PartOne.java:753)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method184(PartOne.java:749)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method183(PartOne.java:745)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method182(PartOne.java:741)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method181(PartOne.java:737)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method180(PartOne.java:733)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method179(PartOne.java:729)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method178(PartOne.java:725)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method177(PartOne.java:721)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method176(PartOne.java:717)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method175(PartOne.java:713)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method174(PartOne.java:709)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method173(PartOne.java:705)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method172(PartOne.java:701)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method171(PartOne.java:697)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method170(PartOne.java:693)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method169(PartOne.java:689)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method168(PartOne.java:685)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method167(PartOne.java:681)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method166(PartOne.java:677)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method165(PartOne.java:673)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method164(PartOne.java:669)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method163(PartOne.java:665)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method162(PartOne.java:661)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method161(PartOne.java:657)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method160(PartOne.java:653)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method159(PartOne.java:649)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method158(PartOne.java:645)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method157(PartOne.java:641)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method156(PartOne.java:637)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method155(PartOne.java:633)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method154(PartOne.java:629)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method153(PartOne.java:625)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method152(PartOne.java:621)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method151(PartOne.java:617)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method150(PartOne.java:613)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method149(PartOne.java:609)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method148(PartOne.java:605)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method147(PartOne.java:601)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method146(PartOne.java:597)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method145(PartOne.java:593)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method144(PartOne.java:589)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method143(PartOne.java:585)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method142(PartOne.java:581)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method141(PartOne.java:577)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method140(PartOne.java:573)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method139(PartOne.java:569)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method138(PartOne.java:565)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method137(PartOne.java:561)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method136(PartOne.java:557)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method135(PartOne.java:553)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method134(PartOne.java:549)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method133(PartOne.java:545)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method132(PartOne.java:541)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method131(PartOne.java:537)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method130(PartOne.java:533)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method129(PartOne.java:529)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method128(PartOne.java:525)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method127(PartOne.java:521)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method126(PartOne.java:517)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method125(PartOne.java:513)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method124(PartOne.java:509)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method123(PartOne.java:505)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method122(PartOne.java:501)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method121(PartOne.java:497)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method120(PartOne.java:493)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method119(PartOne.java:489)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method118(PartOne.java:485)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method117(PartOne.java:481)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method116(PartOne.java:477)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method115(PartOne.java:473)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method114(PartOne.java:469)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method113(PartOne.java:465)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method112(PartOne.java:461)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method111(PartOne.java:457)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method110(PartOne.java:453)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method109(PartOne.java:449)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method108(PartOne.java:445)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method107(PartOne.java:441)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method106(PartOne.java:437)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method105(PartOne.java:433)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method104(PartOne.java:429)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method103(PartOne.java:425)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method102(PartOne.java:421)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method101(PartOne.java:417)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method100(PartOne.java:413)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method99(PartOne.java:409)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method98(PartOne.java:405)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method97(PartOne.java:401)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method96(PartOne.java:397)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method95(PartOne.java:393)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method94(PartOne.java:389)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method93(PartOne.java:385)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method92(PartOne.java:381)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method91(PartOne.java:377)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method90(PartOne.java:373)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method89(PartOne.java:369)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method88(PartOne.java:365)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method87(PartOne.java:361)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method86(PartOne.java:357)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method85(PartOne.java:353)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method84(PartOne.java:349)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method83(PartOne.java:345)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method82(PartOne.java:341)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method81(PartOne.java:337)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method80(PartOne.java:333)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method79(PartOne.java:329)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method78(PartOne.java:325)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method77(PartOne.java:321)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method76(PartOne.java:317)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method75(PartOne.java:313)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method74(PartOne.java:309)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method73(PartOne.java:305)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method72(PartOne.java:301)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method71(PartOne.java:297)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method70(PartOne.java:293)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method69(PartOne.java:289)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method68(PartOne.java:285)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method67(PartOne.java:281)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method66(PartOne.java:277)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method65(PartOne.java:273)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method64(PartOne.java:269)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method63(PartOne.java:265)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method62(PartOne.java:261)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method61(PartOne.java:257)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method60(PartOne.java:253)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method59(PartOne.java:249)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method58(PartOne.java:245)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method57(PartOne.java:241)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method56(PartOne.java:237)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method55(PartOne.java:233)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method54(PartOne.java:229)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method53(PartOne.java:225)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method52(PartOne.java:221)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method51(PartOne.java:217)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method50(PartOne.java:213)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method49(PartOne.java:209)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method48(PartOne.java:205)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method47(PartOne.java:201)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method46(PartOne.java:197)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method45(PartOne.java:193)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method44(PartOne.java:189)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method43(PartOne.java:185)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method42(PartOne.java:181)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method41(PartOne.java:177)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method40(PartOne.java:173)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method39(PartOne.java:169)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method38(PartOne.java:165)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method37(PartOne.java:161)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method36(PartOne.java:157)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method35(PartOne.java:153)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method34(PartOne.java:149)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method33(PartOne.java:145)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method32(PartOne.java:141)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method31(PartOne.java:137)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method30(PartOne.java:133)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method29(PartOne.java:129)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method28(PartOne.java:125)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method27(PartOne.java:121)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method26(PartOne.java:117)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method25(PartOne.java:113)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method24(PartOne.java:109)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method23(PartOne.java:105)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method22(PartOne.java:101)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method21(PartOne.java:97)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method20(PartOne.java:93)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method19(PartOne.java:89)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method18(PartOne.java:85)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method17(PartOne.java:81)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method16(PartOne.java:77)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method15(PartOne.java:73)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method14(PartOne.java:69)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method13(PartOne.java:65)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method12(PartOne.java:61)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method11(PartOne.java:57)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method10(PartOne.java:53)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method9(PartOne.java:49)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method8(PartOne.java:45)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method7(PartOne.java:41)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method6(PartOne.java:37)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method5(PartOne.java:33)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method4(PartOne.java:29)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method3(PartOne.java:25)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method2(PartOne.java:21)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method1(PartOne.java:17)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.PartOne.method0(PartOne.java:13)
[WARN] :   W/System.err:    at com.appcelerator.reachthelimit.ExampleProxy.hitTheLimits(ExampleProxy.java:106)
[WARN] :   W/System.err:    at org.appcelerator.kroll.runtime.v8.V8Runtime.nativeRunModule(Native Method)
[WARN] :   W/System.err:    at org.appcelerator.kroll.runtime.v8.V8Runtime.doRunModule(V8Runtime.java:177)
[WARN] :   W/System.err:    at org.appcelerator.kroll.KrollRuntime.handleMessage(KrollRuntime.java:319)
[WARN] :   W/System.err:    at org.appcelerator.kroll.runtime.v8.V8Runtime.handleMessage(V8Runtime.java:203)
[WARN] :   W/System.err:    at android.os.Handler.dispatchMessage(Handler.java:98)
[WARN] :   W/System.err:    at android.os.Looper.loop(Looper.java:136)
[WARN] :   W/System.err:    at org.appcelerator.kroll.KrollRuntime$KrollRuntimeThread.run(KrollRuntime.java:118)
[INFO] :   dalvikvm: Could not find method android.content.res.TypedArray.getChangingConfigurations, referenced from method android.support.v7.widget.TintTypedArray.getChangingConfigurations
[WARN] :   dalvikvm: VFY: unable to resolve virtual method 216: Landroid/content/res/TypedArray;.getChangingConfigurations ()I
[INFO] :   dalvikvm: Could not find method android.content.res.TypedArray.getType, referenced from method android.support.v7.widget.TintTypedArray.getType
[WARN] :   dalvikvm: VFY: unable to resolve virtual method 238: Landroid/content/res/TypedArray;.getType (I)I
[INFO] :   SensorManagerA: getReportingMode :: sensor.mType = 1
[ERROR] :  TiExceptionHandler: (main) [464,464] ----- Titanium Javascript Runtime Error -----
[ERROR] :  TiExceptionHandler: (main) [0,464] - In app.js:6,14
[ERROR] :  TiExceptionHandler: (main) [0,464] - Message: Uncaught Java Exception occurred
[ERROR] :  TiExceptionHandler: (main) [0,464] - Source: limitBreaker.hitTheLimits();
[ERROR] :  V8Exception: Exception occurred at app.js:6: Uncaught Java Exception occurred
[ERROR] :  V8Exception: Java Exception occurred

Which I believe is not the fault of the PR.

@ashcoding
Copy link
Contributor

I believe it's the fault of my module and the way I've written it that causes it to overflow. I'll try to figure out another way to cause the multidex issue and try it with this. But it does seem it's reaching there. 👍

@sgtcoolguy sgtcoolguy merged commit 550e6a5 into tidev:master Jul 20, 2016
@sgtcoolguy sgtcoolguy deleted the multidex branch July 20, 2016 14:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants