[TIMOB-18065] Add compiled architectures to module manifest template
GitHub Issue | n/a |
---|---|
Type | Improvement |
Priority | High |
Status | Closed |
Resolution | Fixed |
Resolution Date | 2014-11-21T23:33:16.000+0000 |
Affected Version/s | n/a |
Fix Version/s | Release 3.5.0, Release 4.0.0 |
Components | Android, BlackBerry, CLI, iOS |
Labels | n/a |
Reporter | Ingo Muschenetz |
Assignee | Jon Alter |
Created | 2014-11-21T00:02:00.000+0000 |
Updated | 2015-01-20T21:23:56.000+0000 |
Description
With the addition of 64-bit support, it becomes helpful to know the architectures available in a compiled module. We can then use this ins tooling to make sure modules are compiled correctly for use.
We update the module template manifest file with the following values (*notice they are space delimited*):
Android:
architectures: armeabi armeabi-v7a x86
BlackBerry:
architectures: arm x86
iOS:
architectures: armv7 i386 x86_64 arm64
An example:
#
this is your module manifest and used by Titanium
during compilation, packaging, distribution, etc.
#
version: 1.1.0
apiversion: 2
architectures: armv7 i386 x86_64 arm64
description: Awesome App Functionality
author: Appcelerator
license: Apache v2
copyright: Copyright (c) 2013 by Appcelerator
these should not be edited
...
I could use this perfectly for gitt.io as well, showing what modules are 64bit e.g. The manifest is the best place to have it, as long as we can be sure any module made compatible for 64-bit will always have this in it, so it should not require any manual action by the module developer.
I think the question is how/if we can auto-update these values. We can place them in the manifest by default, but should we re-update them on module rebuild?
If a developer changes something in their default xcode projects, something that changes the architectures, it be nice if the manifest in the .zip would reflect the true architectures. How hard is this to implement, @ingo? So, yes, the primary manifest needs to be updated. :(
The consensus is that we should auto-update the manifest on each build. Thus, run these commands after the build to confirm architectures: * iOS: http://ss64.com/osx/lipo.html * Android: Appears the simplest approach is enumerate the folder names under the "libs" directory: https://software.intel.com/en-us/blogs/2014/07/03/how-to-set-up-an-ndk-project-to-compile-for-multiple-target-platforms * BlackBerry: TBD
Looks good!
We moved to space-delimited architectures, which seems acceptable, since Java does this in manifest lists: https://docs.oracle.com/javase/tutorial/deployment/jar/downman.html
PRs: ti.map (ios/android): https://github.com/appcelerator-modules/ti.map/pull/73 ti.facebook (ios): https://github.com/appcelerator-modules/ti.facebook/pull/15 ti.touchid (ios): https://github.com/appcelerator-modules/ti.touchid/pull/12 Adding above modules to timob master: https://github.com/appcelerator/titanium_mobile/pull/6373 3_5_X: https://github.com/appcelerator/titanium_mobile/pull/6374
Updating module template in timob master: https://github.com/appcelerator/titanium_mobile/pull/6375 3_5_X: https://github.com/appcelerator/titanium_mobile/pull/6376
Approved. Merged.
Updating Ti.CloudPush module in timob: master: https://github.com/appcelerator/titanium_mobile/pull/6384 3_5_X: https://github.com/appcelerator/titanium_mobile/pull/6386
Blackberry PR: https://github.com/appcelerator/titanium_mobile_blackberry/pull/274
Validated module manifest template has compiled architectures