Кодирование ios-приложения из командной строки


Я работаю над созданием рабочего процесса командной строки для моей разработки ios, и я застрял на последнем этапе: codesigning.

Я создал приложение для armv7 и armv7s, связал его и создал пакет приложений:

$ codesign -d -v path/to/myapp.app
Executable=/path/to/myapp.app/myapp
Identifier=com.mycompany.myapp
Format=bundle with Mach-O universal (armv7 armv7s)
CodeDirectory v=20200 size=2292 flags=0x0(none) hashes=105+5 location=embedded
Signature size=4332
Signed Time=Sep 7, 2014, 2:47:55 AM
Info.plist entries=26
TeamIdentifier=XXXXXX
Sealed Resources version=2 rules=5 files=3
Internal requirements count=1 size=192

Я получаю кодовый хэш XXXXX от:

$ security find-identity -pcodesigning -v
  1) XXXXX "iPhone Developer: My Name (YYYY)"
     1 valid identities found

Однако после I codesign использует следующее:

codesign --force -vvvv --sign XXXXX --resource-rules=path/to/myapp.app/ResourceRules.plist --entitlements path/to/myapp.xcent path/to/myapp.app
path/to/myapp.app: replacing existing signature
path/to/myapp.app: signed bundle with Mach-O universal (armv7 armv7s) [com.mycompany.myapp]

Он все еще кажется несчастным:

$ codesign --verify -vvvv path/to/myapp.app
path/to/myapp.app: invalid Info.plist (plist or signature have been modified)
In architecture: armv7s

В качестве ссылки я построил (похожее) приложение, используя xcode (я фактически использовал строку codesign из журналов, чтобы подпишите это приложение), и оно работает просто отлично:

$ codesign --verify -vvvv path/to/otherapp.app
path/to/otherapp.app: valid on disk
path/to/otherapp.app: satisfies its Designated Requirement

Я определенно уверен, что у меня есть правильный хэш кодового дизайна, так как я подписывал и развертывал приложения через xcode. Я просто пытаюсь воспроизвести те же шаги в командной строке и терплю неудачу. Очевидно, если я изменил информацию.plist или что-то еще, я ожидал бы увидеть эту ошибку, но я не ожидаю увидеть ее сразу после того, как я сделаю шаг codesign. Здесь действует какая-то черная магия. Может ли кто-нибудь пролить свет или помочь с некоторыми указателями пожалуйста.

EDIT:

Я удалил armv7s и только что построил armv7, и теперь он кажется счастливым на стадии верификации codesign, однако я все еще не могу развернуть приложение со следующей ошибкой из журналов:

Installd[26777]: 0x10050c000 verify_signer_identity: ошибка MISValidateSignatureAndCopyInfo для /var / tmp / install_staging.Mvi7tR / myapp.app / myapp: 0xe8008019

Я понятия не имею, что происходит:

ЕЩЕ ОДНА ПРАВКА :

Я получил проверка кодового дизайна снова провалится, хех. Итак, если я проверю свое приложение.приложение, то оно говорит, что все в порядке. Однако, если я попытаюсь проверить свое приложение.app / myapp binary напрямую, то он говорит, что проверка не удалась (с вышеуказанной ошибкой, за исключением архитектуры armv7)

1 2

1 ответ:

Короче говоря, если я кодирую myapp.приложение / myapp вместо myapp.приложение, то я могу развернуть приложение на свой телефон без каких-либо проблем. Похоже, я пока не могу кодировать оба, как один из моих приложений.приложение/приложение или приложение.приложение не справляется с codesign-verify, но пока этого достаточно, так как я могу развернуть приложение.

Надеюсь, это поможет тому, кто бьется головой о стену.

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