[TIMOB-18092] Rebuild modules for 64-bit architectures
GitHub Issue | n/a |
---|---|
Type | Epic |
Priority | High |
Status | Closed |
Resolution | Fixed |
Resolution Date | 2016-07-06T11:48:29.000+0000 |
Affected Version/s | n/a |
Fix Version/s | Release 5.0.3 |
Components | Android, iOS |
Labels | n/a |
Reporter | Ingo Muschenetz |
Assignee | Eric Merriman |
Created | 2014-11-25T15:26:52.000+0000 |
Updated | 2017-03-31T22:26:03.000+0000 |
Description
This epic encapsulates all of the 64-bit upgrades we will need for modules, both for iOS and (eventually) Android.
* Convert modules to 64-bit for iOS
* Add architectures line into manifest
* Move .zip file from distribution to release
* Update .travis.yml file
Steps
Below are the steps to be followed when doing the update.Planning
1. Find a module not yet converted. Create a ticket for the module, and add it to this epic. Give it an estimate in Story PointsModule conversion (iOS)
To update an existing module and make it 64bit compatible follow these steps: 1. Open the Xcode project 2. You should have at least one warning asking you to update the project to the "recommended settings", do that 3. Go to the project settings and set the iOS Deployment Target to at least iOS 6.0 4. In Build Settings, change all the architectures to "$(ARCHS_STANDARD)" That's it, build the module normally and it should now be 64-bit compatible. To verify it, run this on the command line
cd module_root_dir
xcrun lipo -info build/lib.your_module_here.a
And the output should be this:
Architectures in the fat file: build/lib.your_module_here.a are: armv7 i386 x86_64 arm64
Add architectures line, bump version and edit changelog
1. From TIMOB-18065, add the results of the lipo command to the module manifest. An example (Android):
#
this is your module manifest and used by Titanium
during compilation, packaging, distribution, etc.
#
version: 1.1.0
apiversion: 2
architectures: armeabi armeabi-v7a x86
description: Awesome App Functionality
author: Appcelerator
license: Apache v2
copyright: Copyright (c) 2013 by Appcelerator
these should not be edited
...
2. You will also want to bump the module minor version, i.e. 1.0.1 -> 1.1.0. We are doing this for all 64-bit updates.
3. Add a note into changelog.md about updating the module to support 64-bit.
4. If you bump the TiSDK version that you are building with, update the minsdk in the manifest to match but there is no need to add the GA (if the minsdk of a module is 3.0.0 and you change the module to build with 3.4.1.GA then you should bump the minsdk to 3.4.1).
Add .travis.yml file
In your pull request, also add a .travis.yml file. See https://github.com/appcelerator-modules/ti.redlaser/blob/master/.travis.yml for an example.
language: objective-c
env:
global:
- "MODULE_NAME=<module_id>"
before_install:
- MODULE_ROOT=$PWD
install:
- cd $MODULE_ROOT
- curl -o install.sh https://raw.githubusercontent.com/appcelerator-modules/ci/master/travis/install.sh
- source install.sh
script:
- curl -o script.sh https://raw.githubusercontent.com/appcelerator-modules/ci/master/travis/script.sh
- source script.sh
after_success: # and this only on success
- curl -o deploy.sh https://raw.githubusercontent.com/appcelerator-modules/ci/master/travis/deploy.sh
- source deploy.sh
We also need to convert the following: appcelerator.gooddynamics appcelerator.oracle.opensync appcelerator.salesforce ti.aws ti.barcode ti.box ti.box2d ti.brightcove ti.bump ti.canvas ti.certificatestore ti.charts ti.closedcaption ti.cloud.ui ti.cloudpush.mqtt ti.columns ti.custompopover ti.doubleclick ti.flurry ti.freewheel ti.gamekit ti.gcp ti.getglue ti.gigya ti.greystripe ti.icloud ti.InputView ti.jira ti.keychainaccess ti.location ti.magtek ti.millennialmedia ti.moddevguide ti.navibridge ti.newsstand ti.nfc ti.ntlm ti.omniture ti.opengl ti.pageflip ti.paint ti.passbook ti.php ti.python ti.quicklook ti.redlaser ti.sap.odata ti.securid ti.sms ti.soundsampler ti.tandemscroll ti.testflight ti.tts ti.tvout ti.udp ti.worker
Notes: - depending on how old the original xcode project is, you may have to set 'Build Active Architecture Only' to FALSE. - manifest SDK requirement bumped to 3.4.1 but really should be 3.5.x Completed:
ti.paint https://github.com/appcelerator-modules/ti.paint/pull/1
ti.imagefactory https://github.com/appcelerator-modules/ti.imagefactory/pull/9
ti.tvout https://github.com/appcelerator-modules/ti.tvout/pull/2
ti.newsstand https://github.com/appcelerator-modules/ti.newsstand/pull/7
ti.admob https://github.com/appcelerator-modules/ti.admob/pull/15
ti.udp https://github.com/appcelerator-modules/ti.udp/pull/1
ti.python https://github.com/appcelerator-modules/ti.python/pull/1
ti.php https://github.com/appcelerator-modules/ti.php/pull/1
ti.styledlabel https://github.com/appcelerator-modules/ti.styledlabel/pull/6
ti.gigya https://github.com/appcelerator-modules/ti.gigya/pull/1
ti.urbanairship https://github.com/appcelerator-modules/ti.urbanairship/pull/2
ti.tandemscroll https://github.com/appcelerator-modules/ti.tandemscroll/pull/1
ti.soundsampler https://github.com/appcelerator-modules/ti.soundsampler/pull/2
ti.quicklook https://github.com/appcelerator-modules/ti.quicklook/pull/1
ti.pageflip https://github.com/appcelerator-modules/ti.pageflip/pull/2
ti.moddevguide https://github.com/appcelerator-modules/ti.moddevguide/pull/2
ti.getglue https://github.com/appcelerator-modules/ti.getglue/pull/1
ti.compression https://github.com/appcelerator-modules/ti.compression/pull/3
ti.columns https://github.com/appcelerator-modules/ti.columns/pull/1
ti.canvas https://github.com/appcelerator-modules/ti.canvas/pull/1
ti.charts https://github.com/appcelerator-modules/ti.charts/pull/1
ti.redlaser https://github.com/appcelerator-modules/ti.redlaser/pull/3
ti.jira https://github.com/appcelerator-modules/ti.jira/pull/1
ti.passbook https://github.com/appcelerator-modules/ti.passbook/pull/5
ti.paypal https://github.com/appcelerator-modules/ti.paypal/pull/2
ti.worker https://github.com/appcelerator-modules/ti.worker/pull/9 however this is not ready, waiting for CLA from @nassosyian or reimplement the needed changes
ti.worker clean of non CLA code PR https://github.com/appcelerator-modules/ti.worker/pull/10
completed : ti.barcode https://github.com/appcelerator-modules/ti.barcode/pull/3 ti.box https://github.com/appcelerator-modules/ti.box/pull/1 ti.brightcove https://github.com/appcelerator-modules/ti.brightcove/pull/1 ti.flurry https://github.com/appcelerator-modules/ti.flurry/pull/20 ti.inputview https://github.com/appcelerator-modules/ti.inputview/pull/1 ti.bump https://github.com/appcelerator-modules/ti.bump/pull/1 ti.doubleclick https://github.com/appcelerator-modules/ti.doubleclick/pull/1 ti.gamekit https://github.com/appcelerator-modules/ti.gamekit/pull/1 ti.greystripe https://github.com/appcelerator-modules/ti.greystripe/pull/1 ti.icloud https://github.com/appcelerator-modules/ti.icloud/pull/1 ti.box2d https://github.com/appcelerator-modules/ti.box2d/pull/1 ti.custompopover https://github.com/appcelerator-modules/ti.custompopover/pull/2 ti.sap.odata https://github.com/appcelerator-modules/ti.sap.odata/pull/29
completed: ti.facebook https://github.com/appcelerator-modules/ti.facebook/pull/16 ti.touchid https://github.com/appcelerator-modules/ti.touchid/pull/13 ti.storekit https://github.com/appcelerator-modules/ti.storekit/pull/10 ti.freewheel https://github.com/appcelerator-modules/ti.freewheel/pull/1 ti.omniture https://github.com/appcelerator-modules/ti.omniture/pull/1 ti.securid https://github.com/appcelerator-modules/ti.securid/pull/1 ti.sms https://github.com/appcelerator-modules/ti.sms/pull/1 ti.millennialmedia https://github.com/appcelerator-modules/ti.millennialmedia/pull/1 ti.magtek https://github.com/appcelerator-modules/ti.magtek/pull/1 ti.testflight https://github.com/appcelerator-modules/ti.testflight/pull/4 ti.keychainaccess https://github.com/appcelerator-modules/ti.keychainaccess/pull/1 ti.closedcaption https://github.com/appcelerator-modules/ti.closedcaption/pull/1 ti.location https://github.com/appcelerator-modules/ti.location/pull/1
PRs merged
- ti.paint - ti.imagefactory - ti.tvout - ti.newsstand - ti.admob - ti.udp - ti.python - ti.php - ti.gigya - ti.tandemscroll - ti.soundsampler - ti.quicklook - ti.pageflip - ti.moddevguide - ti.getglue - ti.columns - ti.canvas - ti.charts - ti.redlaser - ti.jira - ti.passbook - ti.paypal - ti.styledlabel - ti.urbanairship - ti.compression - ti.charts - ti.storekit https://github.com/appcelerator-modules/ti.storekit/pull/11Fixed ti.redlaser not linking with TiSDK 3.5.0+ PR: https://github.com/appcelerator-modules/ti.redlaser/pull/4 Built module available here until PR merged: https://github.com/jonalter/ti.redlaser/releases/tag/v1.3.1
ti.barcode - Add 64-bit support - Fixed linker error when compiling with TiSDK 3.5.0+ - Updated build.py to correctly compile the module PR : https://github.com/appcelerator-modules/ti.barcode/pull/7 module : https://github.com/appcelerator-modules/ti.barcode/releases/tag/ios-1.9.1
ti.charts 1.5.0 doesn't work with 3.5.0.GA The build fails with the following error messages: [TRACE] Undefined symbols for architecture x86_64: [TRACE] "_OBJC_CLASS_$_CPTBarPlot", referenced from: [TRACE] objc-class-ref in libti.charts.a(TiChartsBarPlotProxy.o) [TRACE] "_OBJC_CLASS_$_CPTTheme", referenced from: [TRACE] objc-class-ref in libti.charts.a(TiChartsChart.o) [TRACE] "_CPTDecimalFromDouble", referenced from: [TRACE] -[TiChartsChart refreshPlotSpaces] in libti.charts.a(TiChartsChart.o) [TRACE] "_OBJC_CLASS_$_CPTPieChart", referenced from: [TRACE] objc-class-ref in libti.charts.a(TiChartsPiePlotProxy.o) [TRACE] "_OBJC_CLASS_$_CPTScatterPlot", referenced from: [TRACE] objc-class-ref in libti.charts.a(TiChartsLinePlotProxy.o) [TRACE] "_OBJC_CLASS_$_CPTPlotRange", referenced from: [TRACE] objc-class-ref in libti.charts.a(TiChartsParsers.o) [TRACE] "_OBJC_CLASS_$_CPTPlotSymbol", referenced from: [TRACE] objc-class-ref in libti.charts.a(TiChartsParsers.o) [TRACE] "_OBJC_CLASS_$_CPTFill", referenced from: [TRACE] objc-class-ref in libti.charts.a(TiChartsParsers.o) [TRACE] "_OBJC_CLASS_$_CPTMutableTextStyle", referenced from: [TRACE] objc-class-ref in libti.charts.a(TiChartsParsers.o) [TRACE] "_OBJC_CLASS_$_CPTColor", referenced from: [TRACE] objc-class-ref in libti.charts.a(TiChartsParsers.o) [TRACE] "_OBJC_CLASS_$_CPTGradient", referenced from: [TRACE] objc-class-ref in libti.charts.a(TiChartsParsers.o) [TRACE] "_kCPTPlainBlackTheme", referenced from: [TRACE] -[TiChartsModule THEME_BLACK] in libti.charts.a(TiChartsModule.o) [TRACE] "_CPTDecimalFromInteger", referenced from: [TRACE] +[TiChartsParsers parseAxis:properties:usingPlotSpace:def:] in libti.charts.a(TiChartsParsers.o) [TRACE] "_OBJC_CLASS_$_CPTMutableLineStyle", referenced from: [TRACE] objc-class-ref in libti.charts.a(TiChartsParsers.o) [TRACE] "_OBJC_CLASS_$_CPTGraphHostingView", referenced from: [TRACE] objc-class-ref in libti.charts.a(TiChartsChart.o) [TRACE] "_OBJC_CLASS_$_CPTXYAxis", referenced from: [TRACE] objc-class-ref in libti.charts.a(TiChartsParsers.o) [TRACE] "_CPTDecimalFromFloat", referenced from: [TRACE] +[TiChartsParsers parsePlotRange:def:] in libti.charts.a(TiChartsParsers.o) [TRACE] +[TiChartsParsers parseAxis:properties:usingPlotSpace:def:] in libti.charts.a(TiChartsParsers.o) [TRACE] +[TiChartsParsers decimalFromFloat:def:] in libti.charts.a(TiChartsParsers.o) [TRACE] "_kCPTStocksTheme", referenced from: [TRACE] -[TiChartsModule THEME_STOCKS] in libti.charts.a(TiChartsModule.o) [TRACE] "_kCPTSlateTheme", referenced from: [TRACE] -[TiChartsModule THEME_SLATE] in libti.charts.a(TiChartsModule.o) [TRACE] "_OBJC_CLASS_$_CPTXYGraph", referenced from: [TRACE] objc-class-ref in libti.charts.a(TiChartsChart.o) [TRACE] "_kCPTPlainWhiteTheme", referenced from: [TRACE] -[TiChartsModule THEME_WHITE] in libti.charts.a(TiChartsModule.o) [TRACE] "_OBJC_CLASS_$_CPTConstraints", referenced from: [TRACE] objc-class-ref in libti.charts.a(TiChartsParsers.o) [TRACE] "_kCPTDarkGradientTheme", referenced from: [TRACE] -[TiChartsModule THEME_DARK_GRADIENT] in libti.charts.a(TiChartsModule.o) [TRACE] -[TiChartsChart configureTheme:] in libti.charts.a(TiChartsChart.o) [TRACE] ld: symbol(s) not found for architecture x86_64 [TRACE] clang: error: linker command failed with exit code 1 (use -v to see invocation) I assume this is due to the fact that the bundled libCorePlot-CocoaTouch.a does not contain a 64 bit architecture? $ file libCorePlot-CocoaTouch.a libCorePlot-CocoaTouch.a: Mach-O universal binary with 3 architectures libCorePlot-CocoaTouch.a (for architecture armv6): current ar archive random library libCorePlot-CocoaTouch.a (for architecture armv7): current ar archive random library libCorePlot-CocoaTouch.a (for architecture i386): current ar archive random library See also https://github.com/appcelerator-modules/ti.charts/issues/3
I created a PR here: <https://github.com/appcelerator-modules/ti.charts/pull/4>
can someone do ti.flurry please! can't find a 64bit version anywhere.
James, https://github.com/shameer49/ti.flurry/releases
Stephen, many thanks.
Im also looking for this module to be converted to 64bit https://marketplace.appcelerator.com/apps/6746?restoreSearch=true#!overview
PR for salesforce: https://github.com/appcelerator-modules/appcelerator.salesforce/pull/9
https://github.com/appcelerator-modules/appcelerator.salesforce/pull/9 this link doesnt seem to work
[~peterladis] it is a private repo. You will have to wait for it to be released. Should be soon. Thank you for patience.
Jon, any updated on the salesforce module update?
Can someone do the Appsee module from the marketplace?
[~jshrager] you'll need to contact the app developer: https://marketplace.appcelerator.com/apps/7212#!overview
Do we have an ETA for the ti.crypto module to be updated in Dashboard Download Center?
Jon Alter, is there an update on the appcelerator.salesforce module? -Mike
Marked other modules as invalid (as they are no longer supported)
Closing ticket as fixed, if there are any problems, please file a new ticket.