Как упаковать приложение Watch Watch в приложении Cordova

У нас есть кроссплатформенное приложение Cordova, разработанное с использованием Telerik AppBuilder, и приложение WatchKit (расширение + приложение Watchkit), созданное с использованием Xamarin Studio. Я не знаю, каковы правильные шаги для объединения скомпилированного Расширения (.appex, верно?) И IPA-вывода Telerik AppBuilder.

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

2 ответа

Решение

Этого можно добиться, отредактировав .ipa файл основного приложения Cordova. В общем, следует добавить .appex файл под Plugins папка, создать .entitlements файл для хост-приложения iPhone / iPad и, наконец, повторно закодировать двоичный файл и заархивировать Payload для .ipa подать снова. Ниже приведены шаги, описывающие, как объединить приложение Cordova, разработанное с использованием Telerik AppBuilder, и приложение WatchKit (приложение extension + watchkit).

  1. Прежде всего вам нужно иметь .ipa файл для вашего основного приложения и .appex пакет для приложения WatchKit. .ipa file - это обычный архивный файл приложения iOS, который может быть распакован как любой другой архив. Например, вы можете использовать unzip инструмент командной строки (например, unzip <my_ipa_file>.ipa). Разархивируйте оба Telerik AppBuilder .ipa и приложение WatchKit.
    Примечание: каждый .ipa архив содержит папку с именем Payload где актуальный .app Пакет приложений находится. Следует соблюдать это соглашение об именах при заархивировании этой папки.
  2. Удалить _CodeSignature папка в Payload/<cordova_application_name>.app/_CodeSignature, _CodeSignature Папка содержит файл XML, который представляет собой хэш-таблицу, созданную в процессе двоичного кодирования приложения. Он содержит информацию в основном о ресурсах приложения. Нам это не нужно, потому что наша цель - создать новый.
  3. Скопируйте .appex Расширение WatchKit в Payload/cordova_application_name>.app/Plugins (вам, скорее всего, придется создать Plugins папка).
  4. Создайте archived-expanded-entitlements.xcent с помощью шаблона

    <?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>application-identifier</key> <string>'App_Identifier_Prefix'.'Main_Application_Bundle_Identifier'</string> <key>keychain-access-groups</key> <array> <string>'App_Identifier_Prefix'.'Main_Application_Bundle_Identifier'</string> </array> </dict> </plist>

Добавить archived-expanded-entitlements.xcent под Payload/<cordova_application_name>.app/archived-expanded-entitlements.xcent
Примечание: Main_Application_Bundle_Identifier это CFBundleIdentifier стоимость вашего кордова приложения. Подробнее о App_Identifier_Prefix проверьте этот вопрос SO Изменение вручную $(AppIdentifierPrefix) свойство?

  1. Все .mobileprovision файлы должны использовать правильные идентификаторы приложений и тот же сертификат. Я бы порекомендовал, чтобы изначально .ipa файл заявки на кордову должен быть подписан с правильным .mobileprovision обеспечение. В противном случае вы должны разместить свой .mobileprovision под Payload/<cordova_application_name>.app/embedded.mobileprovision,
  2. использование codesign инструмент для повторной подписи двоичного файла приложения Cordova.

    codesign -f -s "Certificate_Name" --entitlements Payload/<cordova_application_name>.app/archived-expanded-entitlements.xcent Payload/<cordova_application_name>.app/<cordova_application_name>
  3. Zip отредактированный Payload вернуться к .ipa файл. (например zip -r <expected_ipa_name>.ipa Payload/)
  4. Мы в порядке!

Дайте мне знать, если вам нужна дополнительная помощь по этому вопросу.

У меня тот же вопрос, что и у Тайлера. И я немного озадачен ответом, потому что гибридные приложения для iOS естественно хотели бы также поддерживать ios с поддержкой приложений для часов, поэтому существует так много плагинов Cordova, которые пытаются поддерживать интеграцию Apple Watch.

Вопрос, который у меня возникает, заключается в том, где в буквальном смысле поместить в структуру папок гибридного проекта IPA или другие ресурсы, относящиеся к iOS и Apple, так, чтобы расширение Apple Watch было развернуто, а приложение часов было доступно тем владельцам, которые имеют Часы?

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

Дэйв Дж

Другие вопросы по тегам