Конвейер Azure DevOps Flutter CI/CD для iOS и приложению watchOS не удается опубликовать в TestFlightIOS

Программируем под IOS
Ответить Пред. темаСлед. тема
Гость
 Конвейер Azure DevOps Flutter CI/CD для iOS и приложению watchOS не удается опубликовать в TestFlight

Сообщение Гость »


У меня есть существующий конвейер Azure DevOps для создания приложения Flutter для iOS. Это приложение включает в себя приложение Watch и расширение для приложения Watch.

Я использую подпись вручную с помощью сертификата распространения Apple (.p12) и трех профилей .mobileprovision (для основного приложения, Watchkit и расширения Watchkit).

Конвейер сборки создает файл IPA и начинает загружать его в TestFlight с помощью Fastlane.

Здесь мы получаем ошибку:

Ошибка: проверка актива не удалась. Неверный идентификатор подписи кода. Идентификатор «com.apple.WK» в вашей подписи кода для «Приложения» должен совпадать с его идентификатором пакета «com.org.app.watchkitapp». Вот код конвейера:

этапы: - этап: iOSStage бассейн: vmImage: 'macos-последний' зависит от: [] отображаемое имя: iOS вакансии: - работа: iOSJob отображаемое имя: iOS переменные: FLUTTER_XCODE_CODE_SIGN_IDENTITY: "" FLUTTER_XCODE_CODE_SIGNING_REQUIRED: НЕТ FLUTTER_XCODE_CODE_SIGNING_ALLOWED: НЕТ шаги: - задача: InstallAppleProvisioningProfile@1 displayName: Установить основной профиль подготовки приложения. входы: ProvisioningProfileLocation: 'secureFiles' provProfileSecureFile: 'baseapp_provisioning.mobileprovision' # Установите профиль обеспечения расширения WatchKit. - задача: InstallAppleProvisioningProfile@1 displayName: Установить профиль обеспечения расширения WatchKit. входы: ProvisioningProfileLocation: 'secureFiles' provProfileSecureFile: 'watchkitapp_provisioning.mobileprovision' # Установите профиль подготовки приложения WatchKit. - задача: InstallAppleProvisioningProfile@1 displayName: Установить профиль подготовки приложения WatchKit. входы: ProvisioningProfileLocation: 'secureFiles' provProfileSecureFile: 'watchkitextension_provisioning.mobileprovision' # замените «iosKey» и «yourPwd» на безопасное имя файла и пароль. - задача: УстановитьAppleCertificate@2 displayName: Установить сертификат входы: certSecureFile: 'apple_distribution.p12' certPwd: '$(PASS)' брелок: 'temp' setUpPartitionIdACLForPrivateKey: правда - задача: FlutterInstall@0 displayName: «Установить Flutter SDK» входы: режим: «авто» канал: 'стабильный' версия: «последняя» - задача: FlutterCommand@0 displayName: «Запустить диагностику Flutter» входы: ProjectDirectory: '.' аргументы: 'доктор -v' - сценарий: | установка драгоценных камней какаоподов # корректируем путь к файлу *.plist - задача: FlutterBuild@0 displayName: «Создать приложение» входы: цель: IPA projectDirectory: '$(Build.SourcesDirectory)' buildName: '$(Build.BuildNumber)' ExportOptionsPlist: 'ios/ExportOptions.plist' режим отладки: ложь Режим профиля: ложь многословный режим: правда - задача: CopyFiles@2 displayName: "Копировать приложение в промежуточный каталог" входы: sourceFolder: '$(Agent.BuildDirectory)' содержимое: '**/ipa/*.ipa' targetFolder: '$(Build.StagingDirectory)' FlattenFolders: правда - задача: PublishBuildArtifacts@1 displayName: "Опубликовать IPA-файл" входы: PathtoPublish: '$(Build.ArtifactStagingDirectory)' Имя Артефакта: 'IPA' publicLocation: «Контейнер» - задача: AppStoreRelease@1 displayName: "Опубликовать в треке TestFlight в App Store" входы: authType: 'ApiKey' apiKeyId: 'идентификатор какого-то ключа' apiKeyIssuerId: 'идентификатор какого-то эмитента' апитокен: 'base64-api-токен' ReleaseTrack: 'TestFlight' appIdentifier: 'com.org.app' Тип приложения: «iOS» ipaPath: '$(Build.ArtifactStagingDirectory)/**/*.ipa' должноSkipWaitingForProcessing: true должноSkipSubmission: true appSpecificId: '1234' TeamId: 'какой-то-идентификатор' TeamName: 'моя-команда' включено: правда таймаутИнминуты: 30 ретрикаунтонтаскфаилуре: 1 И ExportOptions.plist

компилировать биткод загрузить биткод загрузить символы stripSwiftSymbols ID команды SOME-TEAM-ID метод магазин приложений стиль подписи руководство подписной сертификат Распространение Apple: ORG (ORG_ID) Профили обеспечения com.org.app baseapp_provisioning com.org.app.watchkitapp watchkitapp_provisioning com.org.app.watchkitapp.watchkitextension watchkitextension_provisioning Я застрял на этой ошибке уже несколько дней и понятия не имею, где еще искать решение.

Я пытался создать различные типы сертификатов (.p12) и профили .mobileprovision. Я пробовал разные флаги для подписи в конвейере, но не могу избавиться от этой ошибки.

Я предполагаю, что проблема связана либо с настройками iOS (watchOS), ExportOptions, конвейером сборки DevOps, либо с сертификатами.

Если все будет работать, этот конвейер должен опубликовать файл IPA в TestFlight.

ОБНОВЛЕНИЕ:

Я исследовал дальше и, основываясь на этой ветке форума как пользователь @[wade zhou – предложил MSFT], я выполнил эти две команды для своего приложения iOS, приложения watchOS и расширения watchOS:

$ codesign -d -v My-App.app ... Идентификатор=com.myorg.My-App ... $ /usr/libexec/PlistBuddy -c "печать:CFBundleIdentifier" My-App.app/Info.plist com.myorg.My-App И получил такие результаты:

Приложение для iOS: кодовый дизайн: Identifier=com.myorg.My-App PlistBuddy: com.myorg.My-App Приложение WatchOS: кодовый дизайн: Идентификатор=com.apple.WK PlistBuddy: com.myorg.My-App.watchkitapp Расширение watchOS: кодовый знак: Identifier=com.myorg.My-App.watchkitapp.watchkitextension PlistBuddy: com.myorg.My-App.watchkitapp.watchkitextension Поэтому подпись приложения watchOS неверна и не соответствует подписи в Info.plist приложения watchOS. Я до сих пор не знаю почему.
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «IOS»