如何不上架AppStore(重签名)_AppStore

前言

自己开发的或朋友给的 .ipa or .app 如何让亲朋好友安装后把玩?

那个谁把手机的 UDID 给我~
那个谁把手机拿过来我给你用 Xcode 装一个~
...
如何不上架AppStore(重签名)_AppStore_02


解决方案

除了上架 App Store 我们还可以利用 重签名 让我或者公司开发的 app 安装到非测试设备上,也就是本文主要内容。

准备工作

1、需要被重签名 app、archive 包、 ipa

2、$ 299 企业开发者账号 or 企业证书(P12 文件)+ 与此证书相匹配的任意描述文件(.mobileprovision)

3、有效的证书(可以在钥匙串中查找),记录一下企业证书名称备用
如何不上架AppStore(重签名)_AppStore_03

4、.mobileprovision 配置描述文件** (以下三种获得途径)

  • 存储路径:~/Library/MobileDevice/Provisioning Profiles 拷贝出来重命名 embedded.mobileprovision

  • 可以在 Xcode 中找一个有效的,右键 show in finder,将文件复制出来,重命名为 embedded.mobileprovision
    如何不上架AppStore(重签名)_AppStore_04

  • 解压又当前企业账号 build 后的到 app 显示包内容 得到 embedded.mobileprovision 拷贝出来备用

如何不上架AppStore(重签名)_AppStore_05
(* 注:安装包与描述文件放到同一目录下,我这里全部都放到桌面)

重签名

新建 Demo 项目, 用我个人账号对编译出 Demo.app ,再用企业账号对 Demo.app 重签名。

1、选择非企业开发者账号编译工程得到 Demo.app ,拷贝到桌面与上面得到的 embedded.mobileprovision 放到同一目录下

如何不上架AppStore(重签名)_AppStore_06

Show in Finder

如何不上架AppStore(重签名)_AppStore_07

显示包内容

如何不上架AppStore(重签名)_AppStore_08

准备工作 的第 4 步中 embedded.mobileprovision 拷贝到这里进行替换

2、 生成 entitlements.plist 文件

先通过“security”命令,从 mobileprovision 文件中生成一个完整的 plist 文件
命令 : security cms -D -i "mobileprovision文件" > "entitlements文件"
如何不上架AppStore(重签名)_AppStore_09

得到结果:
如何不上架AppStore(重签名)_AppStore_10

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

如何不上架AppStore(重签名)_AppStore_11

得到结果:
如何不上架AppStore(重签名)_AppStore_12

3、签名

命令 : codesign -f -s "证书" --entitlements "entitlements文件" "需要签名的app文件"
如何不上架AppStore(重签名)_AppStore_13

新建文件夹 Payload,将 Demo.app 拷贝到文件夹 Payload 中执行命令
命令:zip -r new_demo.ipa Payload
如何不上架AppStore(重签名)_AppStore_14


总结

如何不上架AppStore(重签名)_AppStore_15