我的客户有一个启用了应用内购买、游戏工具包和推送通知的iOS应用程序,目前已在应用商店上架。我希望使用内部企业分发证书重新签名该应用程序以进行内部测试,但仍能够测试与原始配置文件相关的服务。这种操作是否可行?
我的客户有一个启用了应用内购买、游戏工具包和推送通知的iOS应用程序,目前已在应用商店上架。我希望使用内部企业分发证书重新签名该应用程序以进行内部测试,但仍能够测试与原始配置文件相关的服务。这种操作是否可行?
我最终做了这个,它是以下两个内容的组合:-
和
1) 创建Entitlements 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>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
sh floatsign.sh ~/Downloads/File.ipa "iPhone Distribution: CertificateName" -b new.bundle.id -p /Path/To/Profile/Appstore.mobileprovision App-resigned.ipa
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。
当搜索时,这是在stackoverflow上显示的第一个问题。因此,想要更新最新的iResign mac应用程序,它通过GUI使工作变得非常容易,而不是在终端中使用命令。
iReSign
iReSign允许使用数字证书从苹果重新签名或签名iDevice应用程序包(.ipa)文件以进行分发。它还可以从.xcarchive文件创建已签名的iDevice应用程序包(.ipa)文件。该工具针对企业用户,用于企业部署,当签署应用程序的人与开发应用程序的人不同时。
如何使用
iReSign允许您使用任何证书重新签名任何未加密的ipa文件,只要您拥有相应的私钥。 iResign还可以从xcarchive文件创建已签名的ipa文件。
将未签名的.ipa或.xcarchive文件拖到顶部框中,或使用浏览按钮。
在底部框中输入您的完整证书名称,例如“iPhone Developer:Firstname Lastname(XXXXXXXXXX)”。
点击ReSign!并等待。重新签名后的文件将保存在与原始文件相同的文件夹中。
xcrun -sdk iphoneos PackageApplication -v "build/YourProject-iphoneos/youAppName.app" -o "output_folder/yourAppName.ipa" --sign "yourCertificateName" --embed "your.mobileprovision"
- Xiao