[TIMOB-15766] Android: Samsung Galaxy 3 tablets won't load apps that contains modules
GitHub Issue | n/a |
---|---|
Type | Bug |
Priority | Critical |
Status | Closed |
Resolution | Fixed |
Resolution Date | 2014-05-08T17:53:59.000+0000 |
Affected Version/s | Release 3.2.0 |
Fix Version/s | Release 3.2.0 |
Components | Android |
Labels | module_module, qe-manualtest, triage |
Reporter | Jason Kotchoff |
Assignee | Pedro Enrique |
Created | 2013-10-23T05:49:19.000+0000 |
Updated | 2014-08-07T21:40:06.000+0000 |
Description
Titanium-built apps that include modules are crashing on startup on a Samsung Galaxy Tablet 3.
ADB indicates that there is an UnsatisfiedLinkError whenever an app tries to load a module
eg.
10-10 04:42:33.282: W/dalvikvm(19548): threadid=11: thread exiting with uncaught exception (group=0x41a96e10)
10-10 04:42:33.282: E/TiApplication(19548): (KrollRuntimeThread) [319,707] Sending event: exception on thread: KrollRuntimeThread msg:java.lang.UnsatisfiedLinkError: Couldn't load ti.inappbilling from loader dalvik.system.PathClassLoader[dexPath=/data/app/com.stocklight.stocklightapp-1.apk,libraryPath=/data/app-lib/com.stocklight.stocklightapp-1]: findLibrary returned null; Titanium 3.1.3,2013/09/18 12:01,222f4d1
10-10 04:42:33.282: E/TiApplication(19548): java.lang.UnsatisfiedLinkError: Couldn't load ti.inappbilling from loader dalvik.system.PathClassLoader[dexPath=/data/app/com.stocklight.stocklightapp-1.apk,libraryPath=/data/app-lib/com.stocklight.stocklightapp-1]: findLibrary returned null
10-10 04:42:33.282: E/TiApplication(19548): at java.lang.Runtime.loadLibrary(Runtime.java:365)
10-10 04:42:33.282: E/TiApplication(19548): at java.lang.System.loadLibrary(System.java:535)
10-10 04:42:33.282: E/TiApplication(19548): at org.appcelerator.kroll.runtime.v8.V8Runtime.loadExternalModules(V8Runtime.java:114)
10-10 04:42:33.282: E/TiApplication(19548): at org.appcelerator.kroll.runtime.v8.V8Runtime.initRuntime(V8Runtime.java:81)
10-10 04:42:33.282: E/TiApplication(19548): at org.appcelerator.kroll.KrollRuntime.doInit(KrollRuntime.java:175)
10-10 04:42:33.282: E/TiApplication(19548): at org.appcelerator.kroll.KrollRuntime$KrollRuntimeThread.run(KrollRuntime.java:109)
10-10 04:42:33.282: E/AndroidRuntime(19548): FATAL EXCEPTION: KrollRuntimeThread
10-10 04:42:33.282: E/AndroidRuntime(19548): java.lang.UnsatisfiedLinkError: Couldn't load ti.inappbilling from loader dalvik.system.PathClassLoader[dexPath=/data/app/com.stocklight.stocklightapp-1.apk,libraryPath=/data/app-lib/com.stocklight.stocklightapp-1]: findLibrary returned null
10-10 04:42:33.282: E/AndroidRuntime(19548): at java.lang.Runtime.loadLibrary(Runtime.java:365)
10-10 04:42:33.282: E/AndroidRuntime(19548): at java.lang.System.loadLibrary(System.java:535)
10-10 04:42:33.282: E/AndroidRuntime(19548): at org.appcelerator.kroll.runtime.v8.V8Runtime.loadExternalModules(V8Runtime.java:114)
10-10 04:42:33.282: E/AndroidRuntime(19548): at org.appcelerator.kroll.runtime.v8.V8Runtime.initRuntime(V8Runtime.java:81)
10-10 04:42:33.282: E/AndroidRuntime(19548): at org.appcelerator.kroll.KrollRuntime.doInit(KrollRuntime.java:175)
10-10 04:42:33.282: E/AndroidRuntime(19548): at org.appcelerator.kroll.KrollRuntime$KrollRuntimeThread.run(KrollRuntime.java:109)
This is relevant to apps built using 3.0.2.GA and 3.1.3.GA
eg. 'TeamApp', 'StockLight', 'What should I wear.com.au'
Some older apps that were been built on older versions of titanium seem to still work
eg. 'DiviMe' in the Google Play store
Attachments
File | Date | Size |
---|---|---|
log.txt | 2013-11-21T23:50:50.000+0000 | 21453 |
Hi, Im also seeing this issue. I have done some testing and discovered that the issue only occurs when the app is built for "dist-playstore". That is to say, my app works fine when built with "target device" but not "target dist-playstore". Just to be sure it wasn't a signing issue, I also took the unsigned APK from "target device" and (jar)signed it with our distribution certificate (ie for Google Play). This works fine. Any support on this issue would be very welcome. Regards Reilly
Shak, could we please get a response from Appcelerator on this? We are getting feedback from users of the Galaxy tab 3 who are experiencing the same issue.
The same error has now been recorded and submitted as google play bug reports on a number of devices: Nov 16, 2013 - DROID RAZR i (smi) Nov 15, 2013 - Galaxy Tab3 10.1 (santos10wifi) Nov 15, 2013 - ASUS MeMo Pad ME302C (ME302C) Oct 28, 2013 - Galaxy Tab3 10.1 (santos10wifi)
Jason, Thanks for reporting this. While look into the log files, it would be nice to have a test case from you that demonstrates the crash. Please let me know if you can send us such test case. Regards,
Hi Shak. Any titanium app that uses a module (any module) which is built and distributed using 3.1.3.GA won't open on these devices ie. it will crash on startup. ie. tiapp.xml:
Jason, Have you tried any other device than tablet? We tested your sample (and default samples) on Adroid 4.2 & 4.4 devices. We did not notice any crash with them. Thanks,
The same titanium code runs fine on other Android devices, we have tested it on at least half a dozen different phones and tablets internally and have clients using it on thousands of other Android devices through the play store. It seems this is an architectural showstopper for titanium with certain types of hardware, specifically the Samsung Galaxy Tablet 3. You can test this bug very easily by trying to run a titanium app that has modules on any Samsung Galaxy Tablet 3. The crash logs above seem to indicate that this might also be an issue for the following types of devices: DROID RAZR i (smi) ASUS MeMo Pad ME302C (ME302C) however we haven't got access to those models to test with.
Jason, We tested apps with modules on a Galaxy S2 Tablet and a DROID RAZR. Both devices were able to install and run the apps normally. We will test with the S3 tablet later this week and keep you posted with our test results. These tests were with Ti SDK 3.1.3.GA, Android SDK 4.4. Regards
Jason, An update to my previous comment: We were able to get a Galaxy Tablet 3 in house and test multiple apps with modules. We were able to reproduce your issue. Not every app with a module crashed at launch, but when we saw the crash it had the same exception that you did. We do not need a sample project and are currently working on a fix for this. We will keep you up do date on any developments and will get the fix live as soon as possible. Thank you for your patience while we work through this issue.
Thanks Eric, much appreciated!
After some research, here are my findings: In Ti SDK 3.1.3.X we use the older python scripts to package the app. These scrips do not copy the titanium *.so required libraries to the /lib/x86 folder in the apk. In Ti SDK 3.2.X we use the new node.js Ti CLI to package the app. These scripts DO copy those required files over and the app runs fine. Conclusion, this fails in 3.1.X due to lack of x86 support but works as expected in 3.2.X.
Fixed in 3.2.0
+Verified fixed on:+ Mac OSX 10.9 Mavericks Titanium Studio, build: 3.2.0.201311221859 Titanium SDK, build: 3.2.0.v20131125114848 CLI: 3.2.0-alpha3 Alloy: 1.3.0-alpha6 Android Device: Samsung Galaxy 3 Tablet (4.2.2) Create a default Titanium Classic project and installed 8 different modules at the same time. 6 modules were Android compatible and 2 weren't (Just in case it could throw an error). Application ran fine with all the modules installed and ran fine without modules installed. Closing.