Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to link with framework without arm64 support in Xcode 5.1?

After upgraded a project on Xcode 5.1, Product > Build gives the following warning and error:

ld: warning: ignoring file Dropbox/Dropbox.framework/Dropbox, missing required architecture arm64 in file Dropbox.framework/Dropbox (3 slices)

Undefined symbols for architecture arm64: "_OBJC_CLASS_$_DBPath", referenced from: objc-class-ref in DropboxViewController.o

It seems like the Dropbox.framework does not support arm64 yet.

What are the Xcode settings to remove arm64 support from the project to have a clean build?

like image 261
ohho Avatar asked Mar 12 '14 03:03

ohho


People also ask

How do I turn off arm64?

Disabling the simulator arm64 buildNext to Debug , click on +. Then, click on Any SDK on the line that was added, and select Any iOS Simulator . Double click on the empty space on the right, press + in the popup and write arm64 . Press enter and click outside of the popup.

Is iOS simulator arm64?

The iOS simulator's architecture is x86_64 (the latest Xcode doesn't support an i386-based simulator that the answer refers to), whereas a real iOS device (such as an iPhone or iPad) can be arm64 or arm64e. So when building an app for the simulator you need to specify x86_64, not an ARM architecture.

Does not contain the x86_64 architecture?

a library doesn't contain the x86_64 architecture (You can run lipo -info /path/to/your/lib. a to verify it). If you don't have the source code of the library, you have to modify your own project. In the build settings, change the valid architectures to armv7 and i386 , or change Architectures to armv7 only.

What is ARM 64 on iPhone?

arm64 is the current 64-bit ARM CPU architecture, as used since the iPhone 5S and later (6, 6S, SE and 7), the iPad Air, Air 2 and Pro, with the A7 and later chips. armv7s (a.k.a. Swift, not to be confused with the language of the same name), being used in Apple's A6 and A6X chips on iPhone 5, iPhone 5C and iPad 4.


2 Answers

enter image description here

Change:

  • Architectures: Standard
  • Valid Architectures: arm64 armv7 armv7s

To:

  • Architectures: armv7 armv7s
  • Valid Architectures: armv7 armv7s
like image 166
ohho Avatar answered Oct 26 '22 22:10

ohho


Remove armv64 in

Project > Build Settings > Architectures> Valid Architectures

( i.e. leave only armv7 and armv7s )

Also, set Build Active Architectures Only to NO.

like image 25
Raptor Avatar answered Oct 26 '22 22:10

Raptor