Сгладить развитие .ipa для AppStore Distribution [duplicate]

Чтобы заменить путь в файлах (избегая escape-символов), вы можете использовать следующую команду:

sed -i 's@old_path@new_path@g'

Знак @ означает, что все специальные символы следует игнорировать в следующей строке.

95
задан Mogsdad 13 October 2015 в 14:15
поделиться

10 ответов

Вы должны попробовать это новое приложение OSX: AirSign .

Это поможет вам отказаться от вашего IPA и поделиться им прямо над эфиром с вашими бета-тестерами. Если вы решите переписать его вручную, особенно если вы измените идентификатор пакета в приложении, вы должны быть осторожны с правами приложения (в некоторых случаях это может быть сложно ...).

С уважением,

Ромен

-1
ответ дан Alex Zavatone 22 August 2018 в 08:07
поделиться

Это действительно легко сделать из командной строки. Для этого я имел смысл сценария. Он теперь включен в скрипт ipa_sign в https://github.com/RichardBronosky/ota-tools , который я использую ежедневно. Если у вас есть какие-либо вопросы об использовании этих инструментов, не стесняйтесь спрашивать.

В основе этого лежит следующее:

IPA="/path/to/file.ipa"
PROVISION="/path/to/file.mobileprovision"
CERTIFICATE="Name of certificate: To sign with" # must be in keychain
# unzip the ipa
unzip -q "$IPA"
# remove the signature
rm -rf Payload/*.app/_CodeSignature
# replace the provision
cp "$PROVISION" Payload/*.app/embedded.mobileprovision
# sign with the new certificate (--resource-rules has been deprecated OS X Yosemite (10.10), it can safely be removed)
/usr/bin/codesign -f -s "$CERTIFICATE" --resource-rules Payload/*.app/ResourceRules.plist Payload/*.app
# zip it back up
zip -qr resigned.ipa Payload

Ваше новое подписанное приложение называется resigned.ipa

179
ответ дан Bryan Bryce 22 August 2018 в 08:07
поделиться
  • 1
    7 голосов и ни одного вопроса. Думаю, мой баш просто ясен. – Bruno Bronosky 5 February 2013 в 22:35
  • 2
    Действительно, это добрый сэр. – Peres 7 March 2013 в 16:12
  • 3
    @RahmathullahMPulikkal Я вижу, что я ошибочно закодировал путь в сути. Вы действительно должны использовать github.com/RichardBronosky/ota-tools/blob/master/ipa_sign вместо сути. Это поддерживаемый код. – Bruno Bronosky 29 March 2013 в 05:54
  • 4
    Вы можете получить предупреждение / ошибку в параметрах -resource-rules, которые устарели в OS X Yosemite (10.10), просто удалите этот параметр, решив эту проблему. – ıɾuǝʞ 17 December 2014 в 11:25
  • 5
    Одна маленькая заметка: похоже, что CodeResources теперь находится внутри внутри папки _CodeSignature, поэтому вам просто нужно удалить эту папку. – dadude999 7 January 2015 в 23:20

Вид старого вопроса, но с последним XCode, codesign легко:

$ codesign -s my_certificate example.ipa 

$ codesign -vv example.ipa
example.ipa: valid on disk
example.ipa: satisfies its Designated Requirement
12
ответ дан BryanH 22 August 2018 в 08:07
поделиться
  • 1
    пытался, но не работал: & quot; Недопустимый аргумент & quot; – dwery 19 March 2015 в 00:03
  • 2
    действительно, не работает – Pavel 20 May 2015 в 14:26
  • 3
    @Pavel Этот вопрос был дан ответ, когда iOS 6.x была последней версией. С тех пор у нас было два основных релиза, которые, очевидно, многое изменили. Возможно, вы захотите ограничить поисковые запросы ответами на текущую технологию. – BryanH 1 June 2015 в 16:16
  • 4
    Это сработало для меня. вам нужно заменить «my_certificate». с именем ключа в вашей цепочке ключей. – Franziskus Karsunke 13 October 2015 в 13:58
  • 5
    Команда codesign также используется в ответе @BrunoBronosky. Я не могу использовать его непосредственно в & quot; *. Ipa & quot; файл и "-vv" опции всегда возвращают code object is not signed at all в файлы, которые, как я знаю, они подписаны ... – Mariano Paniga 4 December 2015 в 11:28
  1. Разархивируйте файл .ipa, изменив его расширение на .zip
  2. . Перейдите в раздел «Полезная нагрузка». Вы найдете файл .app
  3. Щелкните правой кнопкой мыши файл .app и выберите Показать содержимое пакета
  4. Удалить папку _CodeSigned
  5. Заменить файл embedded.mobileprovisin на новый профиль обеспечения
  6. Перейдите в KeyChain Access и убедитесь, что имеется сертификат, связанный с предварительным профилем
  7. Выполните следующую команду: / usr / bin / codesign -f -s " Распространение iPhone: имя сертификата "--resource-rules" Payload / Application.app / ResourceRules.plist "" Полезная нагрузка / Application.app "
  8. Теперь снова закройте папку Payload и измените расширение .zip. ipa

Надеюсь, что это полезно.

Для справки см. ниже упомянутую ссылку: http://www.modelmetrics.com/tomgersic/codesign-re-signing -an-ипа-между-яблочный-счет /

4
ответ дан Dharmesh Siddhpura 22 August 2018 в 08:07
поделиться

Попробуйте это приложение http://www.ketzler.de/2011/01/resign-an-iphone-app-insert-new-bundle-id-and-send-to-xcode-organizer-for -upload /

Он должен помочь вам отменить файл IPA. Я пробовал это сам, но не смог получить ошибку с Entitlements.plist. Может быть, проблема с моим проектом. Вы должны попробовать.

1
ответ дан honcheng 22 August 2018 в 08:07
поделиться

Проверьте iResign для простого инструмента о том, как это сделать!

[edit] после некоторого fudling around, я нашел решение для изменения размера связывания ключей. Вы можете проверить это на странице https://gist.github.com/Weptun/5406993

33
ответ дан LordT 22 August 2018 в 08:07
поделиться
  • 1
    Это сработало для меня. – zekel 7 January 2013 в 14:47
  • 2
    есть ли какой-либо инструмент, который может изменить отображаемое имя вместе с идентификатором Bundle при отставке? Это поможет иметь разные отображаемые имена для разных условий. как App-Dev, App-QA, App-Stage и т. д. – Whizkid747 15 April 2013 в 17:10
  • 3
    Да, floatsign.sh делает именно это. – LordT 18 April 2013 в 22:24
  • 4
    Это приложение прекрасно работало! Спасибо. :) – xmnboy 28 April 2015 в 21:50
  • 5
    Работает. Просто и красиво. – Kruger Brent 13 April 2018 в 05:18

Я обновил код Брайана для моей Sierra iMac:

# this version was tested OK vith macOs Sierra 10.12.5 (16F73) on oct 0th, 2017
# original ipa file must be store in current working directory 

IPA="ipa-filename.ipa"
PROVISION="path-to.mobileprovision"
CERTIFICATE="hexadecimal-certificate-identifier" # must be in keychain

# unzip the ipa
unzip -q "$IPA"

# remove the signature
rm -rf Payload/*.app/_CodeSignature

# replace the provision
cp "$PROVISION" Payload/*.app/embedded.mobileprovision

# generate entitlements for current app
cd Payload/
codesign -d --entitlements - *.app > entitlements.plist
cd ..
mv Payload/entitlements.plist entitlements.plist

# sign with the new certificate and entitlements
/usr/bin/codesign -f -s "$CERTIFICATE" '--entitlements' 'entitlements.plist'  Payload/*.app

# zip it back up
zip -qr resigned.ipa Payload
4
ответ дан Pierre Priot 22 August 2018 в 08:07
поделиться
  • 1
    i git следующее errorual.plist: непризнанный тип blob (принимает вслепую) права.plist: недопустимая длина в правах blob – Amr Angry 10 December 2017 в 16:05
  • 2
    можете ли вы поделиться своим содержимым файла права? – Pierre Priot 11 December 2017 в 18:09
  • 3
    Работал как шарм! – Luis E. Prado 10 January 2018 в 23:32

Проверьте эту ссылку ниже, вы можете отменить свое имя приложения, версию, идентификатор пакета, значки приложений.

https://www.youtube.com/watch?v=v0pPeFi3ZMU

0
ответ дан PREMKUMAR 22 August 2018 в 08:07
поделиться

Ответы, размещенные здесь, все не совсем сработали для меня. В основном они пропускали подписи встроенных фреймворков (или включая права).

Вот что сработало для меня (предполагается, что один файл ipa существует в текущем каталоге):

PROVISION="/path/to/file.mobileprovision"
CERTIFICATE="Name of certificate: To sign with" # must be in the keychain

unzip -q *.ipa
rm -rf Payload/*.app/_CodeSignature/

# Replace embedded provisioning profile
cp "$PROVISION" Payload/*.app/embedded.mobileprovision

# Extract entitlements from app
codesign -d --entitlements :entitlements.plist Payload/*.app/

# Re-sign embedded frameworks
codesign -f -s "$CERTIFICATE" --entitlements entitlements.plist Payload/*.app/Frameworks/*

# Re-sign the app (with entitlements)
codesign -f -s "$CERTIFICATE" --entitlements entitlements.plist Payload/*.app/

zip -qr resigned.ipa Payload

# Cleanup
rm entitlements.plist
rm -r Payload/
1
ответ дан simonseyer 22 August 2018 в 08:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: