О стратегии подписи кода iOS — что происходит, когда мы архивируем проект без подписи кода и позже экспортируем его с профилем?

#ios #code-signing #provisioning-profile

Вопрос:

У меня есть несколько вопросов о стратегии подписания кода в соответствии с последовательностью подписания (на которые я не смог найти ответ, выполнив поиск).

То есть,

  • Что происходит, когда мы НЕ предоставляем никаких удостоверений подписи кода и профиля в АРХИВЕ, а затем предоставляем их на этапе ЭКСПОРТА? например,
 xcodebuild archive 
    -project <ProjectName>.xcodeproj 
    -sdk iphoneos 
    -scheme <SchemeName>
    -configuration Release 
    CODE_SIGN_IDENTITY="" #disable code sign 
    CODE_SIGNING_REQUIRED=NO #disable code sign
    CODE_SIGNING_ALLOWED=NO #disable code sign
 

Выше приведен код для архива без кодового знака.
И ниже, для экспорта, я предоставляю профиль с использованием exportOptions.plist .

 xcodebuild -exportArchive -archivePath <ProjectName>.xcarchive -exportOptionsPlist <ProjectName>/exportOptions.plist -exportPath <ProjectName>.ipa
 

Доступно ли это для распространения в магазине приложений, если я использовал профиль с опцией распространения?

  • Являются ли эти правильные параметры для предоставления сведений о профиле подготовки при архивировании проекта? (Я искал много примеров, но ответы немного отличаются).
 xcodebuild archive 
    -project <ProjectName>.xcodeproj 
    -sdk iphoneos 
    -scheme <SchemeName> 
    -configuration Release 
    CODE_SIGN_IDENTITY="****...D21C78" 
    PROVISIONING_PROFILE="********-****-..."
 

приведенный выше код продолжает выдавать ошибку : <ProjectName> requires a provisioning profile. Select a provisioning profile in the Signing amp; Capabilities editor , даже несмотря на то, что я работаю над CLI.

Если есть какое-либо решение для вопросов, пожалуйста, направьте меня. Любой документ / бумага или другие материалы, на которые можно сослаться, тоже хороши.

Ответ №1:

(Сам отвечаю на мой вопрос)

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

Чтобы правильно развернуть ipa(экспортированный) файл, архивированный файл должен быть подписан с помощью команды codesign.

И для этого они должны содержать права и идентификатор кодового дизайна.

codesign -s {IDENTITY} --entitlements {PATH_TO_ENTITLEMENTS_FILE} ... {PROJECT_PATH}/~~~/{NAME}.app

Что касается второго вопроса, я не смог найти ответа, но альтернативой может быть использование такой стратегии, как пустая подпись-архив- > дизайн кода — > > экспорт.