如何不上架AppStore(重签名)

前言
自己开发的或朋友给的
.ipa
or.app
如何让亲朋好友安装后把玩?
那个谁把手机的UDID给我~
那个谁把手机拿过来我给你用 Xcode 装一个~
...

解决方案
除了上架 App Store 我们还可以利用 重签名 让我或者公司开发的 app
安装到非测试设备上,也就是本文主要内容。
准备工作
1、需要被重签名app、archive包、 ipa
2、$ 299 企业开发者账号 or 企业证书(P12文件)+ 与此证书相匹配的任意描述文件(.mobileprovision)
3、有效的证书(可以在钥匙串中查找),记录一下企业证书名称备用

4、.mobileprovision 配置描述文件** (以下三种获得途径)
-
存储路径:
~/Library/MobileDevice/Provisioning Profiles
拷贝出来重命名embedded.mobileprovision
-
可以在 Xcode 中找一个有效的,右键
show in finder
,将文件复制出来,重命名为embedded.mobileprovision
描述文件
-
解压又当前企业账号build后的到app
显示包内容
得到embedded.mobileprovision
拷贝出来备用

(* 注:安装包与描述文件放到同一目录下,我这里全部都放到桌面)
重签名
新建 Demo 项目, 用我个人账号对编译出 Demo.app ,再用企业账号对 Demo.app 重签名。
1、选择非企业开发者账号编译工程得到 Demo.app ,拷贝到桌面与上面得到的 embedded.mobileprovision
放到同一目录下

Show in Finder

显示包内容

将 准备工作 的第4步中 embedded.mobileprovision
拷贝到这里进行替换
2、 生成 entitlements.plist
文件
先通过“security”命令,从 mobileprovision
文件中生成一个完整的 plist 文件
命令 : security cms -D -i "mobileprovision文件" > "entitlements文件"

得到结果:

我们只是为了得到里面的 Entitlements
字段,使用如下的命令
命令 : /usr/libexec/PlistBuddy -x -c 'Print:Entitlements' tmp_entitlements.plist > Entitlements.plist

得到结果:

3、签名
命令 : codesign -f -s "证书" --entitlements "entitlements文件" "需要签名的app文件"

新建文件夹 Payload,将 Demo.app 拷贝到文件夹 Payload 中执行命令
命令:zip -r new_demo.ipa Payload


总结
