最近一段时间 ,做sdk 开发,针对的是越狱渠道,导致打包特别多,就一直想找到简单的 打包方式。。 在网上找了下资料,选了facebook 开源项目 xctool ,来试水。
感谢 https://github.com/facebook/xctool http://www.cnblogs.com/yesun/archive/2013/08/16/3261839.html 等 开源code 以及大量具有分享精神 dev;
操作系统 10.9.5
一。 安装xctool
A: 首先下载 homebrew,我简单理解为是一个 管理工具, 从这里 来下载 xctool, 这也是xctool 的 推荐安装方式
1. 点击链接 http://brew.sh/ , 选择安装方式
如果失败, 请 打开链接 : https://github.com/Homebrew/homebrew/blob/master/share/doc/homebrew/Installation.md#installation .. 选择 如下安装方式:
本人就是选择了 第二种安装方式 , 安装完成之后,其目录结构如下;就是~ 目录之下,因为是在 ~目录 下,执行的 mkdir 安装指令,,(上述安装指令,可以通过复制,粘贴在 terminal 上 来执行)
2. 安装完成 homebrew 之后, 打开链接 https://github.com/facebook/xctool ,来安装 xctool ;; 进入到 homebrew/bin/ 目录下。 执行
安装完成之后,就会在bin/ 目录下 生成xctool 的 索引,其真实在 Cellar/ 目录下... 所以就在 bin/ 目录下,来执行 xctool 指令。。否则,在其他路径下执行xctool 指令 ,是无效的
二 .. 使用 xctool 打包
1. 输入help 指令,查看 帮助,里面有 build,clean 等常用命令,当然也有我们需要的archive 指令;
其中用到的base options ,如果是工作区 就使用 -workspace , 若果事project 就是用 -project , 那么很明显,我们要的archive 指令格式就是 ./xctool -project our_project_file_path -scheme schemName archive -archivePath coustom_archivePath , 其中 -archivePath coustom_archivePath 可以省略,默认使用我们 在xcode 中archive 默认配置 ,, xctool 是依据scheme 来执行,而不是 target.. 所以 -scheme 参数 是必须的 , 这一点 在 xctool 的github 上也能够看到。。。
2.。 输入 ./xctool -project /Users/admins/Desktop/demo/demo/demo.xcodeproj -scheme demo archive -archivePath ~/Desktop/DemoTestArchive.xcarchive
3. 最后 ,在 桌面上, 有了这个 archive包
总结:
我们可以看到 ,其实 xctool 就是从xcode 中读取配置 来build 和 archive, 个人认为,xctool 就是 xcodebulid 和 xcrun 和 二次封装。。 在速度上, 小项目 比如这个demo ,就几M, 几乎感觉不到 差异, 使用xcode 直接打包 和 xctool ,没有拿秒表计算。。 在大项目上,有个 700多M 的项目,,里面大多是 资源。。 使用xcode 得5分钟左右,xctool 也只节省了 几十秒左右的时间 ,没有拿表秒计算,只是这样的感觉...
三 . 针对越狱机器 免除codesign
1 . 好了,我们打了一个 archive包,双击它打开, 到了我们熟悉的 打包界面 ,一气呵成,导出ipa ,赶紧安装下.
oh,myGod, 一如既往的有
作为越狱机,怎么能让用户 这样呢,,要是用户不了解这个机制,直接将我们程序给删除了,那不就 啪啪啪了!
2. ok, 下面我们破除这个门槛 :
a 首先,我们在桌面新建 文件夹 Payload ,
b 右键 我们刚才 在桌面生成 archive 包, 选择 show package contents -> 选择 Products -> 选择 Applications
c 右键 applications 下的 demo.app 文件 ,选择 show package contents 得到里面 一堆内容, 删除掉 _CodeSignature 文件夹
d. ok ,再将 这个删除过文件夹的 demo.app 移动到 a步骤中生成的 Payload 文件夹中
e. 最后一步,在终端移动到 桌面目录 , 压缩这个 Payload 文件夹: zip -qr ./CaoLiuZuiAi.ipa Payload/
这样我们在 桌面上,生成了 我们的 渠道包 ipa 格式,现在这个包,使用苹果安装助手工具等,会发现: 没有越狱的机器 是装不上的。 只有越狱机器能装,最关键的是 ,第一次打开没有弹窗啦。。
也显而易见,,ipa 就是一个 压缩包而已..
四。。补充一点
若果装有 多个 xcode版本,,比如楼主 有 xcode5 和 6 两个版本,,有一些工程 必须使用特定 版本,怎么来切换呢?
xctool 默认使用xcode最新版本, 你可以使用一下指令 更改默认的版本 , swith 后面跟上 你制定版本xcode 的路径
sudo xcode-select -swith /Applications/Xcode.app/
写在结尾 :
热爱生活,是生活 让我们 精彩,感谢路上的人,使他们不让我们孤单。。 可是现实很冷,我也不知道该怎么办。。。 如果这个世界,像程序一样 可控 可预测 , 希望一些梦想,能在新的一年里实现
2015-01-30 周五 晚上7:00