Я пытаюсь заставить Fastlane взять исходный код моего приложения для iOS и собрать/спроектировать его в архив/файл IPA. Вот мой Fastfile:
default_platform(:ios)
platform :ios do
lane :staging do
puts "iOS staging build"
clean_build_artifacts
disable_automatic_code_signing(path: "./ios/myappmobile.xcodeproj")
build_app(
scheme: "myappmobile",
project: "./ios/myappmobile.xcodeproj",
export_options: {
signingStyle: "manual",
provisioningProfiles: {
"com.myapp" => "/Users/myuser/workspace/myapp/myappprovisioningprofile.mobileprovision"
}
},
clean: true
)
end
end
Важно отметить, что /Users/myuser/workspace/myapp/myappprovisioningprofile.mobileprovision — это действительный путь/расположение файла, и именно сюда я загрузил файл профиля обеспечения.
Когда я запускаю fastlane ios staging, я получаю следующую ошибку:
error: "myappmobile" requires a provisioning profile with the Push Notifications feature. Select a provisioning profile in the Signing & Capabilities editor. (in target 'myappmobile' from project 'myappmobile')
Когда я создавал свое приложение и все соответствующие ресурсы (сертификат, профиль обеспечения и т. д.), я помню, как установил флажок, в котором говорилось, что я хотел бы предоставить своему приложению возможности push-уведомлений.
Итак, моим первым предположением было то, что Fastlane нашел мой файл профиля обеспечения (myappprovisioningprofile.mobileprovision) и, возможно, что-то внутри него было настроено неправильно. Но я получаю ту же ошибку, даже если изменю значение provisioningProfiles на:
provisioningProfiles: {
"com.myapp" => "/Users/myuser/workspace/myapp/myappprovisioningprofile.mobileprovision"
}
бредить:
provisioningProfiles: {
"com.myapp" => "flim-flam-fizz-buzz"
}
Что здесь происходит?! Почему Fastlane не может найти файл моего профиля обеспечения (по какой-то причине это должен быть относительный путь?!). Но самое безумное: оно знает, что приложению требуются push-уведомления, но не имеет возможности читать/анализировать профиль обеспечения, так откуда же ему знать, что push-уведомления являются обязательными?!
После повторной настройки команды build_app с некоторыми рекомендуемыми настройками я решил проблему с push-уведомлениями, но теперь столкнулся с этим:
error: No signing certificate "iOS Distribution" found: No "iOS Distribution" signing certificate matching team ID "<redacted>" with a private key was found. (in target 'myappmobile' from project 'myappmobile')
У меня есть сертификат распространения (ios_distribution.cer), который я создал в консоли разработчика Apple (в Интернете) и загрузил. Как я могу настроить Fastlane, чтобы «видеть» (или использовать) этот сертификат?





Не нужно вводить путь, просто имя вашего профиля, как оно называется в вашей учетной записи Apple, вот часть моего быстрого файла.
export_options: {
"signingStyle" => "manual",
provisioningProfiles: {
"com.YOUR_APP.application" => "Distribution",
"com.YOUR_APP.application.AB24Intents" => "AB24Intents",
"com.YOUR_APP.application.ABRPWidget" => "ABRPWidget"
}
Как я вижу, ваш сертификат, который вы добавляете в связку ключей, не имеет закрытого ключа. Вы установили свои профили в xcode?
Я установил профиль в XCode, но, похоже, забыл установить сертификат (после его загрузки) локально на свой Mac. Может ли это вызвать эту ошибку?
Надеюсь, это решит проблему. Почему бы вам не использовать автоматические настройки, это намного проще.
Я не верю, что смогу использовать автоматические настройки с сервера CI/CD. Автоматические настройки отлично подходят для локальной разработки, но в конечном итоге мне понадобится сборка моего CI-сервера + разработка кода и создание архивного файла, который я могу загрузить либо в TestFlight, либо в App Store. Но @Александр Колесник, пожалуйста, дайте мне знать, если это не так!
Если ваши настройки в xcode являются автоматическими, вам не нужны ручные параметры в вашем скрипте.
Огромное спасибо @Александр Колесник. Пожалуйста, ознакомьтесь с моим обновлением выше. Рекомендуемые вами изменения приводят к появлению еще одной ошибки (на этот раз на основе сертификата). Знаете ли вы, почему я могу это видеть, и, что более важно, какое исправление/решение? Еще раз спасибо!