How to build your project with Xcode 12.3

Hi,


Xcode 12.3 introduced a change that affects all iOS legacy frameworks that include support for multiple architectures. Our frameworks include device support (arm64) and iOS simulator support (x86_64). We are working on a long term solution, but in the meantime, you can still build your project with Xcode 12.3 by stripping our framework from all architecture support except for arm64:


<code>lipo -thin arm64 /path/to/WikitudeSDK.framewo<span class="fr-marker" data-id="0" data-type="false" style="display: none; line-height: 0;"></span><span class="fr-marker" data-id="0" data-type="true" style="display: none; line-height: 0;"></span>rk/WikitudeSDK -output /path/to/WikitudeSDK.framework/WikitudeSDK</code>


You will not be able to build your app for the iOS simulator, but it will build and run just fine on an iOS device. If you need to run your app on the simulator, save a copy of the original framework and use it in your project after running this command:


<code>lipo -thin x86_64 /path/to/WikitudeSDK.framework/WikitudeSDK -output /path/to/WikitudeSDK.framework/WikitudeSDK</code>


Please let us know if you have any further issues. For more details, you can also have a look at this forum post here.



- Damian


Greetings, I am having trouble building an archive to submit to the app store in Xcode.


ld: warning: Could not find or use auto-linked framework 'WikitudeSDK'

Undefined symbols for architecture armv7:

  "_kWTUnauthorizedAppleiOSSDKAPIsKey", referenced from:

      +[WTWikitudePlugin composeFailingAPIAuthorizationMessageFromError:] in WTWikitudePlugin.o

      ___34-[WTWikitudePlugin requestAccess:]_block_invoke in WTWikitudePlugin.o

  "_OBJC_CLASS_$_WTArchitectView", referenced from:

      objc-class-ref in WTWikitudePlugin.o

      objc-class-ref in WTARViewController.o

     (maybe you meant: _OBJC_CLASS_$_WTArchitectViewController)

  "_kWTScreenshotSaveModeKey", referenced from:

      -[WTWikitudePlugin didReceiveDidCapturedScreenNotification:] in WTWikitudePlugin.o

  "_kWTScreenshotBundleDirectoryKey", referenced from:

      -[WTWikitudePlugin captureScreen:] in WTWikitudePlugin.o

      -[WTWikitudePlugin didReceiveDidCapturedScreenNotification:] in WTWikitudePlugin.o

  "_OBJC_CLASS_$_WTArchitectStartupConfiguration", referenced from:

      objc-class-ref in WTWikitudePlugin.o

      objc-class-ref in WTARViewController.o

  "_OBJC_CLASS_$_WTAuthorizationRequestManager", referenced from:

      objc-class-ref in WTWikitudePlugin.o

ld: symbol(s) not found for architecture armv7



I am using the Cordova SDK. Building to device works fine.  XCode version is 12.3. I found this old post which seemed similar and made the change in architecture but same errors.  https://wikitude.freshdesk.com/support/discussions/topics/5000091763/page/last


Not sure if that change was still relevant. Attaching image of current architecture settings. Please advise what I need to do in order to fix the errors.


Hi John,


As mentioned in the post you referenced, we updated our minimum hardware requirements in the 8.4 release. We don't support 32 bit architectures since then.


Notice that the solution from that thread uses ARCHS_STANDARD_64_BIT in the project build settings. You are using ARCHS_STANDARD, which still includes armv7.


If you click on the Architectures dropdown and select Other, you should be able to double click the existing option and change it to $(ARCHS_STANDARD_64_BIT).


I hope that helps.



- Damian

Login or Signup to post a comment