初学XCode最让人头疼的就是项目各属性设置,各类不解,这里作个总结:ios
项目配置:xcode
基本项(Basic)app
一、Architectures(指令集)——设置你想支持的指令集,目前ios的指令集有如下几种:iphone
(1)armv6,支持的机器iPhone,iPhone2,iPhone3G及对应的iTouch 2,ide
(2)armv7,支持的机器iPhone4,iPhone4S工具
(3)armv7s,支持的机器iPhone5,iPhone5C性能
(4)arm64,支持的机器:iPhone5S测试
机器对指令集的支持是向下兼容的,所以armv7的指令集是能够运行在iphone5S的,只是效率没那么高而已~ui
Valid architectures : 指即将编译的指令集。调试
Build Active Architecture Only : 是否只编译当前适用的指令集。
如今是2014年初,其实4和4S的用户仍是蛮多的,而iphone3之类的机器几乎没有了,因此咱们的指令集最低必须基于armv7. 所以,Architecture的值选择:armv7 armv7s arm64(选arm64时须要最低支持5.1.1,这块不太明白)
一、若是想本身的app在各个机器都可以最高效率的运行,则须要将Build Active Architecture Only改成NO,Valid architectures选择对应的指令集:armv7 armv7s arm64。这个会为各个指令集编译对应的代码,所以最后的 ipa体积基本翻了3倍。(若是不在意app大小的话,应该这样作)
2,若是想让app体积保持最小,则现阶段应该选择Valid architectures为armv7,这样Build Active Architecture Only选YES或NO就无所谓了。
Base SDK ----当前编译用的SDK版本。
iPhone OS Deployment Target----指的是编译出的程序将在哪一个系统版本上运行。
iPhone OS的版本众多,不少用户因为各类各样的缘由没有升级到最新版,这就给咱们开发者带了麻烦。做为开发者,咱们都但愿软件的受众越多越好。怎么样让软件尽可能适应最多的iPhone OS?
这里咱们就应该了解iPhone项目的Base SDK和iPhone OS Deployment Target。 Base SDK指的是当前编译用的SDK版本。iPhone OS Deployment Target指的是编译出的程序将在哪一个系统版本上运行。
用更简单实用的语句描述以下:
Base SDK设置为当前xcode所支持的最高的sdk版本,好比"iphone Device 4.0"。iPhone OS Deployment Target设置为你所支持的最低的iPhone OS版本,好比"iPhone OS 3.0"。
这样设置以后,你的程序就能够运行于从iPhone OS 3.0 到 4.0的设备之上。固然,前提是你没有用到4.0新加的API。
二、Build Options:
validate Built Product:boolean 类型,指定是否执行产品验证测试(就是说是否使用你的证书进行验证测试)。通常在Debug版本设置成NO,release版本设置成Yes。
当你使用的证书无效时,常提示错误:
warning: Application failed codesign verification. The signature was invalid, contains disallowed entitlements, or it was not signed with an iPhone Distribution Certificate. (-19011)
固然你能够设置成No,不进行验证。
在targets》build setting》validate built Product里面设置release为NO,警告消失。
问题描述:在作ios开发过程当中,曾屡次撤销过原证书,并颁发新的证书。原来使用xcode3也有什么问题,自从使用xcode4以后(本人目前xcode 4.3.2)每次真机测试。连上真机以后,直接调试会报错,提示错误问题就是证书不止一个。错误代码以下:
Code Sign error: Certificate identity 'iPhone Developer:******************' appears more than once in the keychain. The codesign tool requires there only be one.
解决办法:打开keychain(钥匙串访问)以后,发现多个证书,都是历次请求的证书。把以前的证书所有都干掉,就留下最后一次请求的证书(参考过时日期),以后再次调试能够正常真机测试。
三、Code Signing 代码签名
Code Signing Identity-----代码签名的身份,即选择签名证书,一是开发证书,二是发布证书。
开发的时候用Development,好比下模拟器,下真机测试。若是是上传app store 上就应该用Distribution 设置的时候所有统一设置成同样就行了。
Code signing 对你来讲,最主要的意义就是它能让你的App在设备上运行。不论是你本身的设备,甲方客户的,仍是在App store上购买你的消费者。若是没有code signing,你只能够在模拟器上,或者一台越狱过的机器上运行你的应用----固然,仅仅如此是不能知足咱们的。模拟器的测试仅仅是一种初步测试,模拟器不能替代真机调试,由于真正的设备会一般比模拟器慢。模拟器使用的是你的MAC机上的处理器,而一台真正的iphone可远远没有这种条件。因此若是你不在设备上真正运行,你可能就会忽略实际的性能问题。
四、Search Paths 查询路径
Always Search User Paths --- 是否搜索用户路径
Xcode Header Path的设置 Header Search Paths是必定会去搜索的。 而UserHeader Search Paths只有在Always Search User Paths为Yes时才会被搜索。
Header Search Paths (HEADER_SEARCH_PATHS) ------This is a list of paths to folders to be searched by the compilerfor included or imported header files when compiling C,Objective-C, C++, or Objective-C++ source files.
Library Search Paths (LIBRARY_SEARCH_PATHS) -------This is a list of paths to folders to be searched by the linker forstatic and dynamic libraries used by the product.
Framework Search Paths (FRAMEWORK_SEARCH_PATHS) -------This is a list of paths to folders containing frameworks to besearched by the compiler for both included or imported header fileswhen compiling C, Objective-C, C++, or Objective-C++, and by thelinker for frameworks used by the product.
Rez Search Paths (REZ_SEARCH_PATHS) ----This is a list of paths to search for files included by CarbonResource Manager resources and compiled with the Rez tool.
五、Apple LLVM5.0 -Language - ObjectC
其中,Objective-C Automatic Reference Counting 设置ObejctC 是否使用ARC技术。
该机能在 iOS 5/ Mac OS X 10.7 开始导入,利用 Xcode4.2 可使用该机能。简单地理解ARC,就是经过指定的语法,让编译器(LLVM 3.0)在编译代码时,自动生成实例的引用计数管理部分代码。有一点,ARC并非GC,它只是一种代码静态分析(Static Analyzer)工具。