Uploaded image for project: 'Titanium SDK/CLI'
  1. Titanium SDK/CLI
  2. TIMOB-25227

iOS: Building app with module that contains a framework fails on 6.2.0

    Details

    • Type: Bug
    • Status: Closed
    • Priority: High
    • Resolution: Fixed
    • Affects Version/s: Release 7.0.0, Release 6.2.0
    • Fix Version/s: Release 6.2.0
    • Component/s: None
    • Labels:
    • Environment:

      Ti.SDK 6_2_X / master
      macOS 10.13 Beta 7
      iOS 10.2 (CI)
      Xcode 8.2 (CI)

    • Sprint:
      2017 Sprint 18 SDK

      Description

      When building an app project (or CI build like in my case), the build fails on 6.2.0/master because of an error in the new framework-hook (TIMOB-20557). See the full build log in the travis-build of my Ti.GoogleMaps module:

      [ERROR] An error occurred during build after 758ms
      [ERROR] Error: Unknown framework type:
      [ERROR] Mach-O universal binary with 4 architectures: [i386: Mach-O object i386] [x86_64: Mach-O 64-bit object x86_64] [arm_v7: Mach-O object arm_v7] [arm64: Mach-O 64-bit object arm64]
      [ERROR] /Users/travis/Library/Application Support/Titanium/modules/iphone/ti.googlemaps/3.9.0/platform/GooglePlacePicker.framework/GooglePlacePicker (for architecture i386):	Mach-O object i386
      [ERROR] /Users/travis/Library/Application Support/Titanium/modules/iphone/ti.googlemaps/3.9.0/platform/GooglePlacePicker.framework/GooglePlacePicker (for architecture x86_64):	Mach-O 64-bit object x86_64
      [ERROR] /Users/travis/Library/Application Support/Titanium/modules/iphone/ti.googlemaps/3.9.0/platform/GooglePlacePicker.framework/GooglePlacePicker (for architecture armv7):	Mach-O object arm_v7
      [ERROR] /Users/travis/Library/Application Support/Titanium/modules/iphone/ti.googlemaps/3.9.0/platform/GooglePlacePicker.framework/GooglePlacePicker (for architecture arm64):	Mach-O 64-bit object arm64
      

      It looks like the framework-hook does not pick up the "GooglePlacePicker" framework correctly. It was just added a day ago and might have a different structure than before. Google also warned developers who are manually integrating frameworks:

      Note: - The layout of the static frameworks has changed. There is no longer a Versions directory. The contents of Versions/A has been moved to the root directory of the framework. Developers who manually integrate frameworks with their project should take additional care during the upgrade.

      We should get this under control in 6.2.0.GA so people do not experience module-related crashes. Please note that this module still using the manual framework linking in the module.xcconfig (for backwards-compatibility with older SDK's).

      Investgating it more further, it turns out that the error is thrown by the following lines, not being able to detect the framework type:

      if (stdout.indexOf('current ar archive') !== -1) {
          type = FRAMEWORK_TYPE_STATIC;
      } else if (stdout.indexOf('dynamically linked shared library') !== -1) {
          type = FRAMEWORK_TYPE_DYNAMIC;
      } else {
          return reject(new Error('Unknown framework type:\n' + stdout));
      }
      

      Which makes sense when you look into the type (Mach-O) that needs to be handled.

        Attachments

          Issue Links

            Activity

              People

              • Assignee:
                jvennemann Jan Vennemann
                Reporter:
                hknoechel Hans Knöchel
                Reviewer:
                Hans Knöchel
              • Watchers:
                2 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved:

                  Backbone Issue Sync

                  • Titanium SDK/CLI <> Titanium Mobile
                    Synced with:
                    TIMOB-11103
                    Sync status:
                    ERROR
                    Last received:
                    Last sent:

                    Git Source Code