重新签署ipa(Iphone)

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (41)

目前,我使用xcodebuild和xcrun一起构建我的所有应用程序,没有任何问题。

我从不同的人那里收到了几个ipa文件,我想用一个企业帐户而不是公司帐户重新签名。

我的问题是,当我试图辞职时,应用程序不会安装在我的设备上(而且应该安装,因为它是企业版的)。错误信息在设备上(而不是在iTunes中),它简单地告诉我它无法安装应用程序。

这可能是可能的。我面临的问题是,它似乎没有嵌入移动供应配置文件(使用xcrun),这可以用CoDesign工具控制,还是可以用xcrun重新签名?

用我现在的辞职剧本

  • 解压缩app.ipa
  • appname=$(ls有效负载)
  • xcrun-sdk iphoneos PackageApplication-s“$Providing”_简介“”$project_DIR/有效载荷/$appname“-o”$project_dir/app-regened.ipa“---签署”$备货“_配置文件---嵌入“$MobeProvie”
提问于
用户回答回答于

测试时使用了一个使用cert 1签名的iPA,用于应用程序商店提交,没有在配置配置文件中添加任何设备。结果在与企业帐户和移动配置配置配置文件签署的新IPA中,内部部署(移动配置配置文件嵌入到IPA中)。

解决办法:

解压ipa

unzip Application.ipa

删除旧代码签名

rm -r "Payload/Application.app/_CodeSignature" "Payload/Application.app/CodeResources" 2> /dev/null | true

替换嵌入式移动配置文件

cp "MyEnterprise.mobileprovision" "Payload/Application.app/embedded.mobileprovision"

再签名

/usr/bin/codesign -f -s "iPhone Distribution: Certificate Name" --resource-rules "Payload/Application.app/ResourceRules.plist" "Payload/Application.app"

再包装

zip -qr "Application.resigned.ipa" Payload
用户回答回答于

假设从另一个开发人员那里接收到一个应用程序(例如MyApp.ipa),并且您希望能够在您的设备上安装和运行它(通过使用ideviceinstaller例如)。

准备新签名资产

第一步是获得配置文件,其中包含您希望安装和运行的所有设备。 确保配置文件包含您在钥匙串访问中安装的证书(例如iPhone Developer:Some Body(XXXXXXXXXX))。 下载配置文件(MyProfile.mobileprovision),以便可以替换应用中嵌入的配置文件

接下来,我们将准备一个权利文件,以包括在签名中。打开终端,运行以下命令。

$ security cms -D -i path/to/MyProfile.mobileprovision > provision.plist

这将创建一个xml文件,描述供应配置文件。接下来,我们要将应享权利提取到文件中。

$ /usr/libexec/PlistBuddy -x -c 'Print :Entitlements' provision.plist > entitlements.plist

替换配置配置文件并辞职应用程序

如果使用的是.ipa文件,首先,解压缩应用程序(如果有.APP相反,可以跳过这个步骤)。

$ unzip MyApp.ipa

工作目录现在将包含Payload/Payload/MyApp.app/。接下来,删除旧的代码签名文件。

$ rm -rf Payload/MyApp.app/_CodeSignature

用自己的配置文件替换现有的配置文件(即Embedded.MobileProviding)。

$ cp path/to/MyProfile.mobileprovision Payload/MyApp.app/embedded.mobileprovision

现在用配置文件中包含的证书和前面创建的ghtlements.plist对应用程序进行签名。

$ /usr/bin/codesign -f -s "iPhone Developer: Some Body (XXXXXXXXXX)" --entitlements entitlements.plist Payload/MyApp.app

你会发现这些Payload/MyApp.app/Frameworks.,如果应用程序是用SWIFT编写的,或者它包含任何附加的框架,这些都必须辞职,否则应用程序将安装,但不会运行。

$ /usr/bin/codesign -f -s "iPhone Developer: Some Body (XXXXXXXXXX)" --entitlements entitlements.plist Payload/MyApp.app/Frameworks/*

现在可以重新压缩应用程序。

$ zip -qr MyApp-resigned.ipa Payload

已完成

现在可以删除Payload目录,因为应用程序(MyApp.ipa)和您的辞职版本(MyApp-recened.ipa)。现在,可以将MyApp-recened.ipa安装在配置文件中包含的任何设备上。

扫码关注云+社区

领取腾讯云代金券