重新调整iOS配置文件

时间:2013-03-26 10:03:16

标签: ios distribution enterprise

我的客户有一款iOS应用,支持应用内购买,游戏套件和推送通知,目前在应用商店中。我想使用内部企业分发证书辞职,在内部进行测试,但仍然能够测试与原始配置文件相关的服务。这可能吗?

4 个答案:

答案 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!等一下已重新签名的文件将保存在与原始文件相同的文件夹中。

来源:https://github.com/maciekish/iReSign