ARMV6 devices: IPhone, IPhone2, iphone3g, first generation, second generation IPod Touch
ARMV7 equipment: iphone3gs, IPhone4, iphone4s
ipad, IPad2, IPad3 (the New ipad), ipad Mini
ipod Touch 3G, ipod Touch4
armv7s equipment: IPhone5, IPHONE5C, IPad4 (IPad with Retina Display)
Arm64 devices: iphone5s, ipad Air, ipad mini2 (ipad mini with Retina Display)
The options associated with the instruction set in Xcode (Build Settings panel architectures):
Architectures:
Indicates that the set of instruction sets supported by the binary package that is required to be compiled by the selected target is implemented by compiling the corresponding binary packets, and if there are multiple supported instruction sets, the packets containing multiple instruction set codes will be compiled, resulting in a large number of packages generated by the final compilation.
Valid architectures:
Indicates that the set of instructions that may be supported is not supported by the instruction set indicated in the architectures list, Valid architectures limits the scope of the set of instructions that may be supported, that is, Valid The intersection of the architectures and architectures lists is the set of instructions supported by the Xcode final generation binary package.
For example, set the architectures support arm instruction set to: armv7,armv7s, the supported instruction set for the corresponding valid architectures is set to: armv7s,arm64, at this point, The set of instructions supported by the Xcode generation binary package is only armv7s.
Build Active Architecture only:
Indicates whether to compile only the set of instructions supported by the current connected device
This option works with two conditions that must be met before it works:
1. Set the value to Yes
2. Xcode successfully connected to the debug device
Suppose we set the build Active Architecture only value to Yes while Xcode connects to the phone iphone5s (matching instruction set arm64)
1. The first case
Architectures:armv7, armv7s, arm64
Validarchitectures:armv6, armv7s, arm64
Generating the instruction set supported by the binary package: arm64
2. The second case
Architectures:armv6, ARMv7, armv7s
Valid architectures:armv6, armv7s, arm64
Generating the instruction set supported by the binary package: armv7s
3. The third case
ARCHITECTURES:ARMV6, ARMv7
Valid architectures:armv6, armv7s, arm64
Generating the instruction set supported by the binary package: ARMV7
4. Fourth case
Architectures:armv6
Valid architectures:armv6, armv7s, arm64
Generates the instruction set supported by the binary package: Although the compilation was successful, there was no target generation because the ARMV6 instruction set was no longer supported from XCode4.5, so the list was written in white.
5. Fifth case
Architectures:armv7, armv7s, arm64
Valid architectures:armv7,armv7s
Generating the instruction set supported by the binary package: compilation error message
No architectures to compile for (Only_active_arch=yes, ACTIVE arch=arm64, Valid_archs=armv7 armv7s)
As you can see, when build Active Architecture only works:
The connected phone instruction set match is from high to low (Arm64 > Armv7s > ARMv7) in turn.
If the phone is connected to iphone5s, its default instruction set is arm64, if the architectures list is ARMV7, armv7s, the armv7s instruction set is selected as the target instruction set, if the valid architectures list contains the instruction set, The successfully generated binary package only supports the armv7s instruction set, and if the Alid architectures list does not contain this instruction set, the compilation will be faulted:
No architectures to compile for (Only_active_arch=yes, ACTIVE arch=armv7s, Valid_archs=armv7 arm64)
Similarly, if the architectures list is ARMV7, ARMv7 is selected as the target instruction set, and if the architectures instruction set is included in the valid ARMV7 list, the binary package can be successfully generated with only the armv7 of the instruction set supported. If the valid architectures list does not contain ARMV7, the compilation fails.
Recommendation: Usually the debug mode setting value is set to Yes,release mode to No
Apple mobile device default instruction set