【问题标题】:Resigning an application outside xcode [closed]在xcode之外退出应用程序[关闭]
【发布时间】:2011-09-27 23:42:00
【问题描述】:

我有一些应用我想用不同的苹果开发者许可证辞职,

问题是,我没有源代码,只有 ipa 文件、应用程序和 archiveinfo.plist 如果我没有源代码,我可以辞职吗?

谢谢! 欧巴

【问题讨论】:

标签: iphone xcode ipad ipa entitlements


【解决方案1】:

在已签名的二进制文件上替换签名的功能内置于 codesign 实用程序中。这样,如果您的开发者证书过期(因为他们经常这样做),您不必重新构建您的应用程序。

这可能很重要,特别是如果您需要支持旧应用版本,并且您在归档 IPA 后进行了代码更改。

我通常使用这个脚本。当与拥有自己的开发人员帐户、我不想为他们刻录 UDID 插槽以及不想在他们的设备上加载我的配置文件的人交易调试构建 IPA 时,它会派上用场。

#!/bin/sh

TEMPDIR=/tmp/$RANDOM-$RANDOM-$RANDOM
RESOURCERULES=/tmp/ResourceRules-$RANDOM$RANDOM.plist
CURRENTDIR=`pwd`

mkdir -p "$TEMPDIR"

cat - > "$RESOURCERULES" <<ResourceRulesPlistDelimiter
<?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>rules</key>
    <dict>
        <key>.*</key>
        <true/>
        <key>Info.plist</key>
        <dict>
            <key>omit</key>
            <true/>
            <key>weight</key>
            <real>10</real>
        </dict>
        <key>ResourceRules.plist</key>
        <dict>
            <key>omit</key>
            <true/>
            <key>weight</key>
            <real>100</real>
        </dict>
    </dict>
</dict>
</plist>
ResourceRulesPlistDelimiter

unzip -q "$1" -d "$TEMPDIR" || exit 1
xattr -d -r com.apple.quarantine "$TEMPDIR"

for APPBUNDLE in "`find "$TEMPDIR" -name "*.app"`"; do
    codesign --resource-rules="$RESOURCERULES" -f -s "iPhone Developer" "$APPBUNDLE"
    codesign -dvvvv -r- "$APPBUNDLE"
done

cd "$TEMPDIR"
zip -qr "$TEMPDIR.zip" "Payload" && cd "$CURRENTDIR" && mv "$1" "$1.bak" && mv "$TEMPDIR.zip" "$1"
cd "$CURRENTDIR"
rm -rf "$TEMPDIR.zip"
rm -rf "$TEMPDIR"
rm -rf "$RESOURCERULES"

【讨论】:

  • 酷,谢谢!但是我如何使用脚本:) 我有一个带有 com.something.something 的 ipa,我想更改为 com.mycompany.something 这可能吗?
  • 是的。只需在 Info.plist 中更改它。我昨天用 ID com.apple.iBooks 签署了一个测试应用程序,只是为了看看会发生什么,它运行良好。
  • 将脚本保存为文本文件,进入终端,cd进入脚本目录,chmod +x NameOfFile.sh,然后运行./NameOfScript.sh IPAName.ipa
  • 顺便说一句,IPA 是一个 zip 文件,其中包含一个名为“Payload”的目录。在该目录中是要更改的 Info.plist 文件。
  • 太棒了,如果有人没有否决我的回答,我就不会阅读这篇文章并收藏这个问题。无论如何都要为你 +1。
【解决方案2】:

这是迄今为止我想出的最有效和最高效的解决方案。

  1. 确保您使用的是 Mac。此过程需要适用于 Mac OSX 的应用程序。

  2. 获取 .ipa 文件,将其重命名为 .zip 文件。

  3. 解压 zip 文件,您将看到一个名为“Payload”的文件夹,其中包含一个 .app 文件。

  4. 在此处下载 Mac OSX 应用 AppResigner:http://www.gorbster.net/misc/AppResigner.app.zip

  5. 解压缩应用程序。在解压后的文件夹中,您将看到 Mac 应用“AppResigner”

  6. 打开这个应用程序。它会要求您选择一个文件。选择我们从 .ipa 文件中解压出来的 .app。

  7. 它会要求您提供签名身份。打开 Mac 应用程序“钥匙串访问”。您将在此处执行的步骤可能会略有不同。打开钥匙串“登录”并选择类别“证书”

  8. 您需要在此处找到要用于为应用程序签名的证书。例如,它可能是:“iPhone 发行:您的公司名称”,您需要有权访问您公司的发行资料才能使用发行证书。没试过用开发证书做这个,不知道行不行。

  9. 在 AppResigner 提示符中输入与此处显示的完全一致的证书名称;复制/粘贴对我来说无法正常工作。

  10. AppResigner 应该会告诉您该应用已被注销。

  11. 找到您辞职的 .app 文件(与之前的文件相同)并将其压缩。我使用 Mac OSX 程序 Keka,但有很多可用。

  12. 将 zip 文件重命名为 .ipa 文件。

  13. 完成!

【讨论】:

  • 对于美洲狮用户,也添加以下行:export CODESIGN_ALLOCATE="/Applications/Xcode.app/Contents/Developer/usr/bin/codesign_allocate"
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-12
  • 1970-01-01
相关资源
最近更新 更多