Как я могу доказать, что в моем приложении Xamarin.iOS Watch включен биткод?

Мне позвонил представитель Apple и сообщил, что мое приложение с расширением WatchOS не скомпилировано с поддержкой Bitcode и что если я попытаюсь отправить дальнейшие обновления, они будут отклонены.

Это приложение Xamarin.iOS. Я использую Visual Studio 2017 15.8.2, Xamarin.iOS 11.14.0.14 и XCode 9.4.1.

Насколько я знаю, Bitcode был включен в мои проекты WatchOS в течение некоторого времени, и у меня сложилось впечатление, что я уже получил бы отказы, если бы это было не так (последнее обновление менее 4 недель назад). ).

В обоих проектах WatchOS и WatchOS Extension у меня есть следующие параметры проекта для моих сборок AppStore:

<MtouchUseLlvm>True</MtouchUseLlvm>
<MtouchEnableBitcode>True</MtouchEnableBitcode>

Я не знаю, как доказать, что Bitcode действительно был включен в полученных двоичных файлах. Я пробовал использовать otool:

$ otool -l MyApp.ipa/Payload/MyApp.app/Watch/MyAppWatch.app/MyAppWatch | grep bitcode

(no output)

$ otool -l MyApp.ipa/Payload/MyApp.app/Watch/MyAppWatch.app/MyAppWatch | grep __LLVM

(no output)

$ otool -l MyApp.ipa/Payload/MyApp.app/Watch/MyAppWatch.app/MyAppWatch/PlugIns/MyAppWatchExtension.appex/MyAppWatchExtension | grep bitcode

(no output)

$ otool -l MyApp.ipa/Payload/MyApp.app/Watch/MyAppWatch.app/MyAppWatch/PlugIns/MyAppWatchExtension.appex/MyAppWatchExtension | grep __LLVM

segname __LLVM
segname __LLVM

Таким образом, похоже, что в проекте Watch Extension включен LLVM, но ничто не указывает на то, что Bitcode включен. В самом проекте Watch нет никаких указаний ни на то, ни на другое, но я не уверен, что это имеет значение.

Я пытался отправить новый двоичный файл с помощью Application Uploader, и у меня не было проблем, но я обеспокоен тем, что получу отказ в процессе проверки, и хочу сделать все возможное, прежде чем дойти до этого момента, или, по крайней мере, иметь возможность защитить я против отказа.

РЕДАКТИРОВАТЬ: С тех пор я отправил свое приложение с расширением для часов, скомпилировал его с помощью тех же инструментов, упомянутых выше, и получил одобрение магазина приложений, несмотря на телефонный звонок Apple с предупреждением. Я обновил свой набор инструментов до Xamarin.iOS 12 и XCode 10 и заказал Apple Watch 4. Я оставлю этот вопрос открытым, чтобы посмотреть, станет ли проблема более ощутимой (и предупреждение Apple более законным) с новым набором инструментов.


person jahmai    schedule 18.09.2018    source источник
comment
Вы обновили VS или Xcode? Или вы импортировали какой-то сторонний пакет? Если проекту необходимо поддерживать биткод, необходимо потребовать, чтобы все внедряемые сторонние библиотеки поддерживались   -  person Lucas Zhang    schedule 18.09.2018
comment
@LucasZ Я еще не обновился до XCode 10, но все остальное обновлено. Мой проект WatchOS Extension не зависит от каких-либо собственных сторонних библиотек, а только от управляемых сборок Xamarin и пары небольших управляемых только портативных сборок.   -  person jahmai    schedule 18.09.2018


Ответы (1)


См. https://github.com/xamarin/xamarin-macios/issues/4810. Существует обходной путь для отправки приложения Xamarin watchOS в магазин. Этот скрипт отредактировал мое расширение Info.plist:

/usr/libexec/PlistBuddy -c 'Add :DTPlatformBuild string "15T212"' Info.plist
/usr/libexec/PlistBuddy -c 'Add :DTPlatformVersion string "4.3"' Info.plist
/usr/libexec/PlistBuddy -c 'Add :DTSDKBuild string "15T212"' Info.plist
/usr/libexec/PlistBuddy -c 'Add :DTSDKName string "watchos4.3"' Info.plist
/usr/libexec/PlistBuddy -c 'Add :DTXcode string "0940"' Info.plist
/usr/libexec/PlistBuddy -c 'Add :DTXcodeBuild string "9F1027a"' Info.plist

В настоящее время поддерживается только watchOS 4.3 :-(.

person t9mike    schedule 23.09.2018
comment
Хотя это действительно полезно знать, я все еще работаю с XCode 9.4.1, и у меня нет проблем с загрузкой двоичного файла, и я не уверен, как этот обходной путь связан с знанием того, включен ли биткод или нет? - person jahmai; 23.09.2018
comment
Я получил аналогичный звонок, но он был больше похож на то, что бит-код несовместим. У меня сложилось впечатление, что мое приложение не будет работать на новых часах. Мое приложение работает на моем новом Series 4, если оно скомпилировано под последнюю стабильную версию Xamarin, Xcode 10 GM и применяет указанное выше исправление plist. - person t9mike; 23.09.2018
comment
Хорошо, это интересно. Еще не пробовал свой двоичный файл на новых часах, нужно будет его взять. - person jahmai; 24.09.2018
comment
Я отмечаю это как ответ. Хотя он не дает прямого ответа на вопрос, он решает проблему в Xamarin, которая еще не поддерживает архитектуру arm64_32, что приводит к отклонению от AppStore. Я полагаю, что это то, на что (расплывчато) ссылались сотрудники службы поддержки Apple. - person jahmai; 16.11.2018