Отказ от приложения вне xcode

У меня есть несколько приложений, от которых я хочу отказаться с другой лицензией разработчика Apple,

Проблема в том, что у меня нет исходного кода, только файл ipa, приложение и archiveinfo.plist. Могу ли я отказаться от приложения, если у меня нет исходного кода?

Спасибо! Омпа


person Ompah    schedule 04.07.2011    source источник
comment
Вы можете попробовать www.aironapp.com. Он может автоматически перепроектировать IPA. Сначала необходимо настроить учетную запись Apple (загрузить сертификат и закрытые ключи).   -  person shader    schedule 07.06.2012
comment
Ответ на простой сценарий оболочки: stackoverflow.com/a/10905855/190599   -  person CodeReaper    schedule 14.01.2014


Ответы (2)


В утилиту codesign встроена возможность замены подписи на уже подписанном бинарнике. Таким образом, если срок действия вашего сертификата разработчика истекает (что часто и раздражает), вам не нужно перестраивать приложение.

Это может быть важно, особенно если вам нужно поддерживать старую версию приложения, и вы внесли изменения в код с тех пор, как заархивировали IPA.

Я обычно использую этот скрипт. Это удобно при обмене IPA отладочной сборки с людьми, у которых есть собственные учетные записи разработчиков и для которых я не хочу записывать слот UDID, и которые не хотят загружать мои профили подготовки на свои устройства.

#!/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"
person Reid Rankin    schedule 13.07.2011
comment
Круто, спасибо мужик! Но как мне использовать скрипт :) У меня есть ipa с com.something.something, и я хочу перейти на com.mycompany.something, возможно ли это? - person Ompah; 13.07.2011
comment
да. Просто измените его в Info.plist. Вчера я подписал тестовое приложение с идентификатором com.apple.iBooks, просто чтобы посмотреть, что произойдет, и оно работало нормально. - person Reid Rankin; 13.07.2011
comment
Сохраните скрипт как текстовый файл, войдите в терминал, перейдите в каталог скрипта, chmod +x NameOfFile.sh, а затем запустите ./NameOfScript.sh IPAName.ipa. - person Reid Rankin; 13.07.2011
comment
Кстати, IPA представляет собой zip-файл с одним каталогом с именем Payload. Внутри этого каталога находится файл Info.plist, который необходимо изменить. - person Reid Rankin; 13.07.2011
comment
Круто, я бы не прочитал это и не добавил бы этот вопрос в избранное, если бы кто-то не проголосовал за мой ответ. +1 тебе в любом случае. - person Praveen S; 14.07.2011

Это самое эффективное и действенное решение, которое я придумал до сих пор.

  1. Убедитесь, что вы используете Mac. Для этого процесса требуется приложение для Mac OSX.

  2. Возьмите файл .ipa, переименуйте его в файл .zip.

  3. Распакуйте zip-файл, вы увидите папку с названием «Полезная нагрузка», содержащую файл .app.

  4. Загрузите приложение AppResigner для Mac OSX здесь: http://www.gorbster.net/misc/AppResigner.app.zip

  5. Разархивируйте приложение. Внутри разархивированной папки вы увидите приложение Mac «AppResigner».

  6. Откройте это приложение. Он попросит вас выбрать файл. Выберите .app, который мы распаковали из файла .ipa.

  7. Он попросит вас ввести личность подписи. Откройте приложение Mac «Доступ к связке ключей». Шаги, которые вы предпримете здесь, могут незначительно отличаться. Откройте брелок «логин» и выберите категорию «Сертификаты».

  8. Здесь вам нужно найти сертификат, с которым вы хотите отказаться от приложения. Например, это может быть: «Распространение iPhone: название вашей компании», вам потребуется доступ к профилю распространения вашей компании, чтобы использовать сертификат распространения. Я не пробовал делать это с сертификатом разработки, я не знаю, сработает ли это.

  9. Введите это имя сертификата точно так, как оно показано здесь, в командной строке AppResigner; копирование/вставка у меня работало некорректно.

  10. AppResigner должен сообщить вам, что приложение было отменено.

  11. Найдите файл .app, от которого вы отказались (он такой же, как и раньше), и заархивируйте его. Я использую программу Keka для Mac OSX, но многие из них доступны.

  12. Переименуйте ZIP-файл в файл .ipa.

  13. Сделанный!

person Joel Fischer    schedule 20.03.2013
comment
Также для пользователей горных львов добавьте строку ниже: export CODESIGN_ALLOCATE=/Applications/Xcode.app/Contents/Developer/usr/bin/codesign_allocate - person Meet; 30.07.2013