Titanium JIRA Archive
Titanium SDK/CLI (TIMOB)

[TIMOB-18092] Rebuild modules for 64-bit architectures

GitHub Issuen/a
TypeEpic
PriorityHigh
StatusClosed
ResolutionFixed
Resolution Date2016-07-06T11:48:29.000+0000
Affected Version/sn/a
Fix Version/sRelease 5.0.3
ComponentsAndroid, iOS
Labelsn/a
ReporterIngo Muschenetz
AssigneeEric Merriman
Created2014-11-25T15:26:52.000+0000
Updated2017-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 Points

Module 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

Create Pull Request

As part of the pull request: 1. Build the module 2. Remove the .zip file for the module from the iOS directory (this means do not commit the module zip, create a github release instead). 3. Create a GitHub "Release" and attach the .zip file for the module. Mark it as a pre-release. When the PR is merged, delete the pre-release and tag and then re-tag the release against the newest code, and update it to remove the "pre-release" flag.

Comments

  1. Ingo Muschenetz 2014-11-25

    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
  2. Stephen Feather 2014-11-27

    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

  3. Dan Tamas 2014-11-27

    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
  4. Dan Tamas 2014-11-28

    ti.worker clean of non CLA code PR https://github.com/appcelerator-modules/ti.worker/pull/10
  5. Shameer Jan 2014-12-01

    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
  6. jithinpv 2014-12-05

    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
  7. Muhammad Dadu 2014-12-08

    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/11
  8. Jon Alter 2015-01-10

    Fixed 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
  9. Gary Mathews 2015-01-12

    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
  10. Jeroen van Vianen 2015-01-14

    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
  11. Jeroen van Vianen 2015-01-14

    I created a PR here: <https://github.com/appcelerator-modules/ti.charts/pull/4>
  12. James Shrager 2015-01-17

    can someone do ti.flurry please! can't find a 64bit version anywhere.
  13. Stephen Feather 2015-01-18

    James, https://github.com/shameer49/ti.flurry/releases
  14. James Shrager 2015-01-18

    Stephen, many thanks.
  15. Peter Ladis 2015-01-20

    Im also looking for this module to be converted to 64bit https://marketplace.appcelerator.com/apps/6746?restoreSearch=true#!overview
  16. Muhammad Dadu 2015-01-20

    PR for salesforce: https://github.com/appcelerator-modules/appcelerator.salesforce/pull/9
  17. Peter Ladis 2015-01-20

    https://github.com/appcelerator-modules/appcelerator.salesforce/pull/9 this link doesnt seem to work
  18. Jon Alter 2015-01-21

    [~peterladis] it is a private repo. You will have to wait for it to be released. Should be soon. Thank you for patience.
  19. Peter Ladis 2015-01-30

    Jon, any updated on the salesforce module update?
  20. James Shrager 2015-02-02

    Can someone do the Appsee module from the marketplace?
  21. Ingo Muschenetz 2015-02-02

    [~jshrager] you'll need to contact the app developer: https://marketplace.appcelerator.com/apps/7212#!overview
  22. Marco Cota 2015-03-13

    Do we have an ETA for the ti.crypto module to be updated in Dashboard Download Center?
  23. Michael Pauley 2015-06-12

    Jon Alter, is there an update on the appcelerator.salesforce module? -Mike
  24. Ingo Muschenetz 2016-07-06

    Marked other modules as invalid (as they are no longer supported)
  25. Lee Morris 2017-03-31

    Closing ticket as fixed, if there are any problems, please file a new ticket.

JSON Source