我的客户有一款iOS应用,支持应用内购买,游戏套件和推送通知,目前在应用商店中。我想使用内部企业分发证书辞职,在内部进行测试,但仍然能够测试与原始配置文件相关的服务。这可能吗?
答案 0 :(得分:31)
我最终做了这个,这是以下的组合: -
和
1)创建权利plist,防止Keychain等问题
<?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>GBA9L2EABG.com.your.bundle.id.MyApp</string>
<key>get-task-allow</key>
<false/>
</dict>
2)解压缩IPA
unzip Application.ipa
3)删除旧代码签名
rm -r "Payload/Application.app/_CodeSignature" "Payload/Application.app/CodeResources" 2> /dev/null | true
4)替换嵌入式移动配置文件
cp "MyEnterprise.mobileprovision" "Payload/Application.app/embedded.mobileprovision"
5)辞职
/usr/bin/codesign -f -s "iPhone Distribution: Certificate Name" --resource-rules "Payload/Application.app/ResourceRules.plist" --entitlements Entitlements.plist "Payload/Application.app"
6)重新包装
zip -qr "Application.resigned.ipa" Payload
答案 1 :(得分:4)
要让某个应用程序辞职比@Koko Carl所说的更容易,我们已经调整了floatsign脚本,可以在https://gist.github.com/Weptun/5406993找到。 使过程变得非常简单:
sh floatsign.sh ~/Downloads/File.ipa "iPhone Distribution: CertificateName" -b new.bundle.id -p /Path/To/Profile/Appstore.mobileprovision App-resigned.ipa
答案 2 :(得分:1)
只是为Koko Carl的回复添加一点,如果在进入第5步(Resign)时遇到codesign_allocate问题,请尝试导出shell变量CODESIGN_ALLOCATE并为其提供在iPhone SDK中分配的codesign的路径。为此,请确保安装了xcode命令行工具(Xcode中的首选项/更新)
例如,我收到错误:
me$ /usr/bin/codesign -f -v -s "iPhone Distribution: Some Company, Inc" --resource-rules "Payload/MyApp.app/ResourceRules.plist" --entitlements Entitlements.plist "Payload/MyApp.app"
输出:
Payload/MyApp.app: replacing existing signature
codesign_allocate: object: /Users/mimio/Downloads/Payload/MyApp.app/MyApp malformed object (unknown load command 33)
Payload/MyApp.app: object file format unrecognized, invalid, or unsuitable
为了解决这个问题,我设置了变量:
me$ export CODESIGN_ALLOCATE=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/codesign_allocate
然后再次运行我的命令:
me$ /usr/bin/codesign -f -v -s "iPhone Distribution: Some Company, Inc" --resource-rules "Payload/MyApp.app/ResourceRules.plist" --entitlements Entitlements.plist "Payload/MyApp.app"
瞧!使用新的codesign_allocate
,一切正常答案 3 :(得分:1)
搜索时,这是stackover流程中显示的第一个问题。所以想要使用最新的iResign mac应用程序进行更新,这样可以使用GUI而非终端中的命令轻松完成工作。
<强> iReSign 强>
iReSign允许iDevice应用程序包(.ipa)文件使用Apple的数字证书进行签名或辞职以进行分发。它还可以从.xcarchive文件创建已签名的iDevice应用程序包(.ipa)文件。当签署应用程序的人与开发应用程序的人员不同时,此工具针对企业用户进行企业部署。
如何使用
iReSign允许您使用您持有相应私钥的任何证书重新签名任何未加密的ipa文件。 iResign还可以从xcarchive文件创建签名的ipa文件。
将未签名的.ipa或.xcarchive文件拖到顶部框,或使用浏览按钮。
从Keychain Access输入您的完整证书名称,例如&#34; iPhone开发人员:名字姓氏(XXXXXXXXXX)&#34;在底部框中。
点击ReSign!等一下已重新签名的文件将保存在与原始文件相同的文件夹中。