Ответ 1
Если вы четко укажете свой профиль подготовки, как я. Как это в вашей Кордове build.json:
"ios": {
"debug": {
"codeSignIdentitiy": "iPhone Developer",
"developmentTeam":"MYTEAMID",
"packageType": "developer",
"iCloudContainerEnvironment": "Development"
},
"release": {
"codeSignIdentitiy": "iPhone Distribution",
"developmentTeam":"MYTEAMID",
"provisioningProfile": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
"packageType": "ad-hoc",
"iCloudContainerEnvironment": "Production"
}
}
Обратите внимание iCloudContainerEnvironment = Производство/разработка требуется только при использовании push-уведомлений
Вам нужно явно указать ручное подписание и предоставить ключи обеспечения в вашем ExportOptions.plist, который генерируется Кордовой. К сожалению, Кордова в настоящее время не генерирует все необходимые ключи.
Вот как это должно выглядеть, по крайней мере для меня:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>compileBitcode</key>
<false/>
<key>method</key>
<string>ad-hoc</string>
<key>iCloudContainerEnvironment</key >
<string>Production</string>
<key>provisioningProfiles</key>
<dict>
<key>my.bundle.idenifier</key>
<string>My Provisioning Profile Name</string>
</dict>
<key>signingCertificate</key>
<string>iPhone Distribution</string>
<key>signingStyle</key>
<string>manual</string>
<key>stripSwiftSymbols</key>
<true/>
<key>teamID</key>
<string>YOURTEAMID</string>
<key>thinning</key>
<string><none></string>
</dict>
</plist>
Файл Cordova генерирует @cordova/app/platform/ios/exportOptions.plist выглядит так:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>compileBitcode</key>
<false/>
<key>method</key>
<string>development</string>
<key>teamID</key>
<string>MYTEAMID</string>
</dict>
</plist>
заметить, что отсутствуют важные биты, требуемые Xcode 9.
Я сгенерировал правильный файл, выполнив архивирование сборки вручную, а затем экспортировав его, который также создает exportOptions.plist, который я теперь использую в качестве ссылки.
После глубокого углубления я обнаружил, что это невозможно устранить после запуска "Cordova add platform iOS", потому что он генерируется во время фазы сборки динамически. Я решил разблокировать репо Cordova-ios и отправить запрос на тяну. Вы можете напрямую использовать мою вилку или подождать, пока запрос на растяжение не будет объединен.
Запрос Pull https://github.com/apache/cordova-ios/pull/338/commits
вилка https://github.com/jrryhrtn/cordova-ios
Замечания по использованию от запроса pull
См. пример ниже, обратите внимание, что профилем подготовки может быть имя или UUID профиля. Имя предпочтительнее для поддержания, поскольку UUID каждый раз меняет регенерацию профиля.
{
"ios": {
"debug": {
"codeSignIdentity": "iPhone Developer",
"developmentTeam":"YOURTEAMID",
"provisioningProfile": "provisioning profile name or UUID",
"packageType": "development"
},
"release": {
"codeSignIdentity": "iPhone Distribution",
"developmentTeam":"YOURTEAMID",
"provisioningProfile": "provisioning profile name or UUID",
"packageType": "ad-hoc"
}
}
}
Я планирую вручную запланировать до тех пор, пока исправление /a не будет объединено со следующей версией Cordova. Вам придется регенерировать свою платформу iOS после патча через "платформу Кордовы rm iOS", а затем "Платформа Кордова add ~/forks/cordova-ios". ~/forks/cordova-ios мой локальный путь, используйте путь на вашем локальном компьютере, где вы скачали раздвоенный репортер Cordova-ios.
Обновление
cordova-ios 4.5.2 официально выпущен! Обновите, выполнив следующие команды: "кордовая платформа rm ios", а затем "платформа кордовы add [email protected]"
Ура!