一、证书相关
开发证书,其实挺简单的,但如果某处搞不好,也是很费时间的。且member center里的内容虽说万变不离其宗,但几年下来终归还是有变化的。完整的流程我就不写了,可以自行百度大把文章,这边谈谈证书使用的小技巧。
证书制作流程图
对于概念不懂的同学,可以到这脑补下『iOS Provisioning Profile(Certificate)与Code Signing详解』
关于Provisioning Profile供应配置管理
我们在项目配置时,虽然经常将Code Signing的Provisioning Profile配置成”Automatic”,但还是需要去developer.apple.com上下载所有的mobileprovision文件。如果这些文件经常变化,可以这样:
1、首先cd到这些mobileprovision文件的目录”~/Library/MobileDevice/Provisioning Profiles”,然后删除所有的文件。
可使用命令
1 | $ rm *.mobileprovision |
2、这样再看Xcode的时候,就找不到任何provisioning profile了。这个时候不需要一个一个的添加。而是访问XCode的Preferences> Accounts,在Apple IDs里面找到你的帐号,右下角有个View Details,这时,你就可以download下所有网站上配置的文件了。一个按钮搞定。
二、runscript
在我理解,runscript是在app编译时,通知Xcode额外做的事情,可以通过script编写脚本来实现。
runscript案例1-appledoc
appledoc是我们较为常用的文档生成工具,『github地址传送门』
安装方法请执行:
1 | $ git clone git://github.com/tomaz/appledoc.git |
安装完成后,我们想着每次在编译ios app时,都能自动生成文档。
在项目中新建一个target,选择如下图所示的类别。这样会在项目中多出一个target。
对该target的Build Phases上添加run script phrase。
为了自动生成文档,需要使用appledoc的生成命令,可供粘贴。如果对命令不熟练,也可以使用appledoc –help进行查看。
script脚本如下,供copy。需要注意的是outputPath,为文档的输出路径。ignore,可以选择不生成某些路径下的文档。最后的参数,”{PROJECT_DIR}/runscript)”,需要根据自己需要生成的项目做调整。
1 |
|
完成后,编译运行,可以在xcode上看到编译结果。里面有run script的执行情况,当然可以在script中使用printf来打印,也同样会在这里显示。
这样,我们可以在项目目录的doc文件夹里找到生成的文档,或者到xcode的window的Documentations and API Reference里查看。
另外,文档的生成需要平时对项目的注释进行规范书写,这里不再赘述。
runscript案例2-对icon添加版本号等信息
一直以来,做测试时都要区分版本号、git的提交序列、服务器测试还是正式环境等问题,想着在编译时,自动将这些信息贴在app的icon上就好了。直到在github上碰到了这个项目『github地址传送门』。
作者编写了个脚本,获取项目的版本号、git的提交序列等信息,然后使用imagemagick和ghostscript将这些信息绘制在了app的icon里。
如果本地机器没有安装,则需要使用brew命令一键安装。
1 | $ brew install imagemagick |
当使用debug模式进行编译时,则会出现如下的logo。当然,如果是release模式打包,则不会出现,具体可以参考runscrip脚本 『iconVersioning.sh』
在此基础上,我们还可以将应用服务器测试还是正式环境等其他参数都加到icon上,方便对产品进行标示。
三、CocoaPods
1、CocoaPods安装
『官网传送门』是比较权威的参考。
需要先安装ruby、gem和brew。可参考《Mac环境》进行配置。
用gem安装下就好。
1 | $ sudo gem install cocoapods |
看下pod是否安装成功。
1 | $ pod --version |
安装成功后,是需要同步pod repo的。因此可使用以下命令同步(此步骤推荐先跳过,建议后续更换pod repo源)。
1 | $ pod setup |
2、CocoaPods使用
1、为新建工程或在现有工程添加CocoaPods,cd到工程目录
1 | $ cd 'your project home dir' |
2、会自动生成Podfile文件,当然你也可以使用vim命令自己建。
1 | $ vim Podfile |
3、编辑Podfile,写入您需要的第三方库以及版本。小提示:(终端vim文件 按 i 可编辑 ,esc 退出编辑,:wq 可保存退出)。当然,您也完全可以通过Xcode和其他文本编辑器来进行。例如,给项目名为Test的添加AFNetworking和FMDB。
1 | platform :ios, '6.0' |
4、安装导入第三方库
1 | $ pod install |
当然也可以指定安装某第三方库
1 | $ pod install AFNetworking |
当然可可以指定安装某第三方库
1 | $ pod update AFNetworking |
6、当需要查找某个第三方库信息时,例如查找AFNetworking,使用
1 | $ pod search AFNetworking |
7、有时操作时想print安装信息,可在所有命令后加–verbose。例如
1 | $ pod install --verbose |
8、在CocoaPods1.0以前,所有命令会默认自动执行pod repo update的,每次执行太恐怖了,可在所有命令后加–no-repo-update。会加快执行效率。例如
1 | $ pod install --no-repo-update --verbose |
但是在1.0版本以后,默认是不执行的。因此可以忽略掉。
3、CocoaPods的git仓库更新
git仓库更新
cocoapods有一个git仓库专门保存了github上一些有名的开源组件的podspec文件。cocoapods会把它clone到你本地的~/.cocoapods/repo/master路径下。当你pod search一个内容时,就在这个本地目录下进行搜索。
由于三方库版本更新,我们使用pod无法install、search到最新版本的内容,就需要进行git仓库的更新。我们可以使用如下命令进行更新:
1 | $ pod repo update --verbose |
国内镜像
如果大家不想被这个烦死的话,还是找找国内的镜像吧。
gitcafe(目前迁移到coding.net)和oschina都是国内的服务器,可以用它们CocoaPods索引库的镜像。目前发现oschina的http://git.oschina.net/akuandev/Specs.git更新较慢,于是还是使用coding.net上的吧,发现更好的随时替换,我对现在5MiB的速度还是很满意的。(后续可能失效)
1 | $ pod repo remove master |
如镜像无人维护了,可采用如下解决方案:
- 访问 https://github.com/CocoaPods/Specs,然后将Specs项目fork到自己的github账户上
- 下载GitHub Desktop, 然后clone Specs项目。
- 将clone的Specs项目的文件夹改名为master,然后拖到/Users/用户名/.cocoapods/repos目录下。
- 运行pod setup
解释:pod setup的本质就是将https://github.com/CocoaPods/Specs上的Specs项目clone到/Users/用户名/.cocoapods/repos目录下。若此目录下已有Specs项目,则会将项目更新到最新的状态。由于Specs很大,容易导致pod setup失败。这时就需要我们手动安装Specs。若直接从github上下载zip文件,由于缺少git文件,会导致cocoa pods不使用。若用git clone,由于文件过大,容易导致失败。但是使用GitHub Desktop软件,则会提高clone的成功率,并且会给出clone的进度。
如果使用pod search无法搜索到类库
删除~/Library/Caches/CocoaPods目录下的search_index.json文件
pod setup成功后会生成~/Library/Caches/CocoaPods/search_index.json文件。
终端输入rm ~/Library/Caches/CocoaPods/search_index.json
删除成功后再执行pod search
再使用pod repo查看下,检查源的URL是否变更。
如果哪天发现更新后还不是最新的,可以登录我们刚刚配置的源地址
『https://coding.net/u/hging/p/Specs/git』查看更新时间,如果较为久远,再去更换源。
4、高级进阶-CocoaPods私有库管理
私有库管理,主要用于自己的代码,也想像pod管理第三方库一样进行管理。官方的文档如下,后续有时间再演示一遍整个流程。
『http://guides.cocoapods.org/syntax/podspec.html』
四、其他
https://www.jianshu.com/p/939db6215436 Objective-C与JavaScript交互的那些事(续)
https://www.jianshu.com/p/d05d19f70bac iOS动画篇:核心动画
https://www.jianshu.com/p/d99e83cab39a 研发直播APP的收获-iOS