[TIMOB-7474] Android: Support selecting what ABI to target when using V8 runtime.
GitHub Issue | n/a |
---|---|
Type | New Feature |
Priority | High |
Status | Closed |
Resolution | Fixed |
Resolution Date | 2012-12-21T05:43:49.000+0000 |
Affected Version/s | Release 2.0.2, Release 3.0.0, Release 1.8.3 |
Fix Version/s | Release 2.1.3, Release 3.0.0, Sprint 2012-18 Core |
Components | Android |
Labels | SupportTeam, core, module_build, qe-review, qe-testadded |
Reporter | Josh Roesslein |
Assignee | Bill Dawson |
Created | 2012-01-30T14:45:13.000+0000 |
Updated | 2013-01-03T16:00:57.000+0000 |
Description
Allow developer to specify in tiapp.xml which ABI to support when using V8 runtime.
Currently we always bundle both ABI versions of the native library. If the developer only wishes
to support one ABI version to cut down size of the APK they may choose to do so.
http://developer.appcelerator.com/question/131313/why-are-both-rhino-and-v8-bundled-in-the-apk
Attachments
File | Date | Size |
---|---|---|
log2.2.0CI.txt | 2012-08-29T11:01:50.000+0000 | 1084 |
Testing Notes
Not specifying an ABI
* Create a new app. * Build and launch it on a device. Make sure it runs. (This step just tests that the most common use case -- not specifying an ABI -- is not broken.) * Also go down to the command line, navigate to your project's build/android/bin folder, and rununzip -l app.apk
. In the output, make sure you see libraries for both armeabi and armeabi-v7a. Like in this sample output:Specifying one ABI
* Edit the tiapp.xml and add the* Build and launch the app on device. Make sure it runs. * Also go down to the command line, navigate to your project's build/android/bin folder, and run
unzip -l app.apk
. In the output, make sure you see libraries for *only* armeabi, *not* armeabi-v7a. Like in this sample output:Specifying "all"
* We also support explicitly specifying "all", which is the same as removing theunzip -l app.apk
and make sure you see libs for both armeabi and armeabi-v7a, like in the first test above.Specifying multiple ABIs, comma-separated.
* We also support comma-separated list of ABIs to package libs for. So replace "all" with "armeabi,armeabi-v7a" (no space). * Build and run, make sure it works. * Go down to the command line and again rununzip -l app.apk
and make sure you see libs for both armeabi and armeabi-v7a, like in the first test above.PR ready https://github.com/appcelerator/titanium_mobile/pull/2848/
Is extending the android manifest really the only option for specifying the ABIs? I think it might be better if we use a property tag. Example:
I'm not putting it in the manifest section, but in the
Bill, okay that seems logical. Yeah I did confuse the
Mauro, please use file attachments for logs so the comments section doesn't explode in length. A quick look of the log only seems to show a HTTPClient socket error (possible connection issue?).
2_1_X cherry-pick PR ready. *Do not merge until 2.1.2 is released and build/titanium_version.py shows 2.1.3.* https://github.com/appcelerator/titanium_mobile/pull/2859
Verified ability to specify in tiapp.xml which ABI to support when using V8 runtime. Now developers can specify one ABI (armeabi or armeabi-v7a) or all ABIs. New feature was verified using Bill's test steps by building the app and packaging as well. Note: If the app was built for device with spicifying "all" ABIs, you'll find in /build/android/bin/app.apk\ Folder/lib not only "armeabi" and "armeabi-v7a", but also "x86". I discussed with Josh and this is expected behavior. Verified on: Titanium Studio, build: 2.1.2.201208301612 Titanium SDK, build: 2.1.3.v20120904163110 OS: Mac OS X Lion 10.7.4