【问题标题】:Resigning an iOS provisioning profile [duplicate]退出 iOS 配置文件 [重复]
【发布时间】:2013-03-16 01:52:47
【问题描述】:

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

【问题讨论】:

    标签: ios distribution enterprise


    【解决方案1】:

    我最终这样做了,这是:-

    1) 创建权利 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
    

    【讨论】:

    • 如果您退出 .app 文件,一个命令可以执行此操作:xcrun -sdk iphoneos PackageApplication -v "build/YourProject-iphoneos/youAppName.app" -o "output_folder/yourAppName.ipa" --sign "yourCertificateName" --embed "your.mobileprovision"
    • "GBA9L2EABG.com.your.bundle.id.MyApp" - 这只是您创建的捆绑 ID,还是来自原始 IPA 的 ID?如果您更改原始应用程序的捆绑包 ID,推送通知是否也有效?
    • 当我尝试安装应用程序时出现错误为 appName 的 CFBundleExecutable,这是不可执行的。我试过 chmod +x 命令到 appName.app 还是一样的错误。
    • 警告:--resource-rules 在 Mac OS X >= 10.10 中已被弃用! Payload/Application.app/ResourceRules.plist:无法读取资源
    【解决方案2】:

    为了比@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
    

    【讨论】:

    • 警告:--resource-rules 在 Mac OS X >= 10.10 中已被弃用! temp/Payload/Application.app/ResourceRules.plist:无法读取资源有错误,正在中止!
    【解决方案3】:

    在 Koko Carl 的回复中添加一点内容,如果您在执行第 5 步(Resign)时遇到 codesign_allocate 问题,请尝试导出 shell 变量 CODESIGN_ALLOCATE 并为其指定 iPhone SDK 中的 codesign allocate 路径.为此,请确保您已安装 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 一切正常

    【讨论】:

      【解决方案4】:

      搜索时,这是 stackover 流程​​中显示的第一个问题。所以想用最新的 iResign mac 应用程序进行更新,使用 GUI 而不是终端中的命令让工作变得超级简单。

      iReSign

      iReSign 允许使用来自 Apple 的数字证书对 iDevice 应用程序包 (.ipa) 文件进行签名或重新签名以进行分发。它还可以从 .xcarchive 文件创建签名的 iDevice 应用程序包 (.ipa) 文件。当签署应用程序的人与开发应用程序的人不同时,此工具适用于企业用户,用于企业部署。

      如何使用

      iReSign 允许您使用您持有相应私钥的任何证书重新签署任何未加密的 ipa 文件。 iResign 还可以从 xcarchive 文件创建签名的 ipa 文件。

      将未签名的 .ipa 或 .xcarchive 文件拖到顶部框,或使用浏览按钮。

      在 Keychain Access 中输入您的完整证书名称,例如底部框中的“iPhone Developer: Firstname Lastname (XXXXXXXXXX)”。

      点击重新签名!等待。退出后的文件将保存在与原始文件相同的文件夹中。

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

      【讨论】:

      • 您对 4 个不同的问题有相同的答案。如果问题可以用相同的答案回答,那么您应该标记它是重复的,而不是发布重复的答案。
      • 非常适合重新签署发送到 AppStore 的 ipa。只需要找到正确的配置文件和证书(如果您有多个)。我将 entitlement.plist 留空,如果找不到,它似乎会创建一个节奏。然后我使用 iMazing 安装了我辞职的 ipa。现在,我可以在到达商店和/或等待批准之前仔细检查我提交的应用程序是否可以按预期运行。
      猜你喜欢
      • 1970-01-01
      • 2012-05-16
      • 2013-05-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-08
      相关资源
      最近更新 更多