Eri*_*rik 127 iphone build codesign ipa
我目前用hudson使用xcodebuild构建我的所有应用程序,然后是xcrun而没有任何问题
我收到了一些来自不同人的IPA文件,我想用企业帐户而不是公司帐户(对于应用商店,或有时是临时分发)重新签名.
我的问题是,当我尝试重新签名应用程序时,它不会安装在我的设备上(它应该是因为它是企业版本).错误消息在设备上(不在iTunes中),它只是告诉我它无法安装应用程序.没有提供更多信息.
这可能是可能的.我面临的问题是它似乎没有嵌入移动配置文件,因为我使用我的普通版本(使用xcrun)可以使用codesign工具控制,或者是否可以使用xcrun重新签名?
我的辞职脚本我目前正在做
我查看了生成的ipa文件,它似乎与原始应用程序非常相似.这里应该改变哪些文件?我最初认为_CodeSignature/CodeResources会改变,但内容看起来几乎完全一样.
指针非常感谢.
Eri*_*rik 210
终于搞定了!
使用cert1签署的IPA进行测试,用于提交应用商店,但未在配置文件中添加任何设备.使用企业帐户和内部部署的移动配置配置文件签署的新IPA中的结果(移动配置配置文件嵌入到IPA中).
解:
解压缩IPA
unzip Application.ipa
Run Code Online (Sandbox Code Playgroud)
删除旧的CodeSignature
rm -r "Payload/Application.app/_CodeSignature" "Payload/Application.app/CodeResources" 2> /dev/null | true
Run Code Online (Sandbox Code Playgroud)
替换嵌入式移动配置文件
cp "MyEnterprise.mobileprovision" "Payload/Application.app/embedded.mobileprovision"
Run Code Online (Sandbox Code Playgroud)
辞职
/usr/bin/codesign -f -s "iPhone Distribution: Certificate Name" --resource-rules "Payload/Application.app/ResourceRules.plist" "Payload/Application.app"
Run Code Online (Sandbox Code Playgroud)
重新包装
zip -qr "Application.resigned.ipa" Payload
Run Code Online (Sandbox Code Playgroud)
编辑:删除了权利部分(参见小巷评论,谢谢)
gre*_*rez 38
这个问题的答案有点过时,并且缺少可能的关键步骤,因此这是从外部开发人员安装应用程序的更新指南.
-----如何重新启动iOS应用程序-----
假设您从另一个开发人员那里收到一个应用程序(例如MyApp.ipa),并且您希望能够在您的设备上安装并运行它(例如,使用ideviceinstaller).
准备新的签名资产
第一步是获得Provisioning Profile,其中包括您要安装和运行的所有设备.确保配置文件包含您已在Keychain Access中安装的证书(例如iPhone Developer:Some Body(XXXXXXXXXX)).下载配置文件(MyProfile.mobileprovision),以便您可以替换应用程序中嵌入的配置文件.
接下来,我们将准备一个权利文件以包含在签名中.打开终端并运行以下命令.
$ security cms -D -i path/to/MyProfile.mobileprovision > provision.plist
Run Code Online (Sandbox Code Playgroud)
这将创建一个描述您的Provisioning Profile的xml文件.接下来,我们要将权利提取到文件中.
$ /usr/libexec/PlistBuddy -x -c 'Print :Entitlements' provision.plist > entitlements.plist
Run Code Online (Sandbox Code Playgroud)
替换配置文件和辞职应用程序
如果您正在使用.ipa文件,请首先解压缩应用程序(如果您有.app,则可以跳过此步骤).
$ unzip MyApp.ipa
Run Code Online (Sandbox Code Playgroud)
您的工作目录现在将包含Payload/和Payload/MyApp.app/.接下来,删除旧的代码签名文件.
$ rm -rf Payload/MyApp.app/_CodeSignature
Run Code Online (Sandbox Code Playgroud)
用您自己的配置文件替换现有的配置文件(即embedded.mobileprovision).
$ cp path/to/MyProfile.mobileprovision Payload/MyApp.app/embedded.mobileprovision
Run Code Online (Sandbox Code Playgroud)
现在使用您的配置文件中包含的证书和您之前创建的entitlements.plist对应用程序进行签名.
$ /usr/bin/codesign -f -s "iPhone Developer: Some Body (XXXXXXXXXX)" --entitlements entitlements.plist Payload/MyApp.app
Run Code Online (Sandbox Code Playgroud)
重要提示:您还必须重新签署应用程序中包含的所有框架.你会发现这些Payload/MyApp.app/Frameworks.如果应用程序是用Swift编写的,或者它包含任何其他框架,则必须重新签名,否则应用程序将安装但不会运行.
$ /usr/bin/codesign -f -s "iPhone Developer: Some Body (XXXXXXXXXX)" --entitlements entitlements.plist Payload/MyApp.app/Frameworks/*
Run Code Online (Sandbox Code Playgroud)
您现在可以重新压缩该应用程序.
$ zip -qr MyApp-resigned.ipa Payload
Run Code Online (Sandbox Code Playgroud)
完成
您现在可以删除该Payload目录,因为您有原始应用程序(MyApp.ipa)和您的辞职版本(MyApp-resigned.ipa).您现在可以在配置文件中包含的任何设备上安装MyApp-resigned.ipa.
all*_*eus 11
我成功地遵循了这个答案,但由于权利已经改变,我只是删除了--entitlements "Payload/Application.app/Entitlements.plist"倒数第二句的部分,它就像一个魅力.
Mar*_*rný 11
我认为最简单的是使用Fastlane:
sudo gem install fastlane -NV
hash -r # for bash
rehash # for zsh
fastlane sigh resign ./path/app.ipa --signing_identity "Apple Distribution: Company Name" -p "my.mobileprovision"
Run Code Online (Sandbox Code Playgroud)
2020 年,我用 Fastlane 做到了——
这是我使用的命令
$ fastlane run resign ipa:"/Users/my_user/path/to/app.ipa" signing_identity:"iPhone Distribution: MY Company (XXXXXXXX)" provisioning_profile:"/Users/my_user/path/to/profile.mobileprovision" bundle_id:com.company.new.bundle.name
Run Code Online (Sandbox Code Playgroud)
完整文档在这里 - https://docs.fastlane.tools/actions/resign/
这些辞职方法对我来说都不起作用,所以我必须想出别的办法。
\n\n就我而言,我的 IPA 证书已过期。我本可以重建该应用程序,但因为我们想确保分发完全相同的版本(仅使用新证书),所以我们不想重建它。
\n\n我没有使用其他答案中提到的辞职方法,而是转向 Xcode\xe2\x80\x99s 创建 IPA 的方法,该方法以构建中的 .xcarchive 开头。
\n\n我复制了现有的 .xcarchive 并开始替换内容。(我忽略了 .dSYM 文件。)
我从旧的 IPA 文件中提取了旧的应用程序(通过解压缩;该应用程序是 Payload 文件夹中唯一的东西)
我将此应用程序移至新的 .xcarchive 下Products/Applications替换那里的应用程序。
我编辑过Info.plist,编辑
ApplicationProperties/ApplicationPathApplicationProperties/CFBundleIdentifierApplicationProperties/CFBundleShortVersionStringApplicationProperties/CFBundleVersionName我将 .xcarchive 移动到 Xcode\xe2\x80\x99s 存档文件夹中,通常/Users/xxxx/Library/Developer/Xcode/Archives.
在 Xcode 中,我打开了 Organizer 窗口,选择了这个新存档并进行了常规(在本例中为 Enterprise)导出。
结果是一款效果良好的 IPA。
\n| 归档时间: |
|
| 查看次数: |
99135 次 |
| 最近记录: |