Xcode armv6 armv7 armv7s arm64, xcodearmv6
Currently, ios provides the following instruction sets:
- Armv6
- IPhone
- IPhone2
- IPhone3G
- The first and second generations of iPod Touch
- Armv7
- Armv7s
- Arm64
The machine's support for instruction sets is backward compatible, so armv7 instruction sets can run on iphone5S, but the efficiency is not that high ~
========================================================== ==========
Architecture: the instruction set you want to support.
Valid ubuntures: indicates the instruction set to be compiled.
Build Active Architecture Only: whether to compile Only applicable instruction sets.
========================================================== ==========
At the beginning of 2014, there are still quite a few 4 and 4 s users, and there are almost no iPhone 3 and other machines. Therefore, our instruction set must be at least based on armv7.
Therefore, the Architecture value is armv7 armv7s arm64.
PS: When you select arm64, you must support a minimum of 5.1.1:
Convert Your App to a 64-Bit Binary After Updating It for iOS 7
Xcode 5.0.1 can build your app with both 32-bit and 64-bit binaries encoded ded. this combined binary requires a minimum deployment target of iOS 5.1.1 or later. the 64-bit binary runs only on 64-bit devices running iOS 7.0.3 and later. if you have an existing app, you shoshould first update your app for iOS 7 and then port it to run on 64-bit processors. by updating it first for iOS 7, you can remove deprecated code paths and use modern practices. if you're creating a new app, target iOS 7 and compile 32-bit and 64-bit versions of your app.
The architecture for 64-bit apps on iOS is almost identical to the architecture for OS X apps, making it easy to create a common code base that runs in both operating systems. converting a Cocoa Touch app to 64-bit follows a similar transition process as the one for Cocoa apps on OS X. pointers and some common C types change from 32 bits to 64 bits. code that relies onNSInteger
AndCGFloat
Types needs to be carefully examined.
Start by building the app for the 64-bit runtime, fixing any warnings that occur as well as searching your code for specific 64-bit issues. For example:
Make sure all function CILS have a proper prototype.
Avoid truncating 64-bit values by accidentally assigning them to a 32-bit data type.
Ensure that calculations are saved med correctly in the 64-bit version of your app.
Create data structures whose layouts are identical in the 32-bit and 64-bit versions of your app (such as when you write a data file to iCloud ).
1. If you want your app to run in the most efficient way on each machine, you need to change Build Active Architecture Only to NO. Valid ubuntures selects the corresponding Instruction Set: armv7 armv7s arm64. This will compile the corresponding code for each instruction set. Therefore, the size of the final ipa has basically tripled, and the Release version must be NO.
2. If you want to minimize the app volume, you should select Valid ubuntures as armv7 at the current stage. In this way, it doesn't matter if you select YES or NO to Build Active Architecture.
Developed for iOS: What machines have their own armv6, armv7, and armv7s architectures on ios devices?
Armv7s: iphone5armv7: iphone3GS, iphone4, iphone4sipad, ipad2, ipad3, ipad4; iPod touch 3G and later iPod touch; armv6: other machines except above. If the value "Standard Active Architecture Only" is set to True in the ubuntures of the Project build setting, Armv6 or v7 will Only compile the package of the corresponding instruction set. If the value is set to false, the compiler will integrate two instruction sets. The package is relatively large, but it can be optimized using Armv7 and adapted to the old machine.
[IOS] a static library is generated with armv6. When I pack it with xcode50, an error is reported, prompting that the static library cannot be armv7.
Static databases are divided into real machine version and Simulator version.
Ubuntures: select the first option. Do not select arm64 or another one.