iOS企业签名ipa包里面包含的是Payload文件夹,
Payload文件夹中包含了资源文件和_CodeSignature签名文件夹
以及embedded.mobileprovision证书配置文件,
而其中关于iOS授权签名的就是_CodeSignature签名文件夹
和embedded.mobileprovision证书配置文件
只要替换这两个文件就搞定。
而_CodeSignature签名文件夹,需要用 *.plist 授权文件去自动生成。
*.plist文件配置如下:
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"><plist version="1.0"><dict> <key>application-identifier</key> <string>${application-identifier}</string> <key>com.apple.developer.team-identifier</key> <string>${com.apple.developer.team-identifier}</string> <key>get-task-allow</key> <false/> <key>keychain-access-groups</key> <array> <string>${application-identifier}</string> </array></dict></plist>
其中 {application-identifier}
和{com.apple.developer.team-identifier}
在 你自己的企业证书文件中 *.mobileprovision 中拷贝
实施步骤
你的有原始的ios安装包,*.ipa
你得有在有效期内的的企业证书,如下文件:
*.mobileprovision
distribution.cer
distribution.p12
- 将.cer证书输入密码安装在当前的Mac机器上
- 命名*.mobileprovision 为embedded.mobileprovision
解压ipa包 命令行
unzipWeChat.ipa
删除_CodeSignature签名文件夹命令行
rm -rf Payload/WeChat.app/_CodeSignature
-
替换*app中的embedded.mobileprovision命令行
cp embedded.mobileprovision Payload/WeChat.app/
-
创建*.plist文件并用该文件签名命令行
/usr/bin/codesign-f-s"iPhoneDistribution:${cerName}"--entitlements*.plistPayload/WeChat.app
其中 ${cerName}是证书名称,可以在钥匙串证书中看到
- 修改Payload/WeChat.app中Info.plist中bundle Identifier的值为你自己的bundleIdentifier实际值
-
最后打包压缩成ipa就行了