Как мога да докажа, че моето приложение 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 няма индикация за нито едно от двете, но не съм сигурен дали това има значение.

Опитах да изпратя нов двоичен файл с помощта на програмата за качване на приложения и нямах проблеми, но се притеснявам, че ще получа отказ по време на процеса на преглед и искам да направя каквото мога, преди да стигна до този момент или поне да мога да защитя себе си срещу отказ.

РЕДАКТИРАНЕ: Оттогава изпратих приложението си с разширение за гледане, компилирано със същите инструменти, споменати по-горе, и получих одобрение от магазина за приложения, въпреки предупредителното телефонно обаждане на 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 не зависи от никакви собствени библиотеки на трети страни, само от управляваните сглобки на 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 и нямам никакви проблеми с качването на двоичния файл и не съм сигурен как това решение е свързано с това дали Bitcode е активиран или не? - person jahmai; 23.09.2018
comment
Получих подобно обаждане, но беше по-скоро в смисъл, че биткодът не е съвместим. Останах с впечатлението, че приложението ми няма да работи на нови часовници. Моето приложение работи на моята нова серия 4 за това, което си струва, когато е компилирано под най-новата стабилна версия на Xamarin, Xcode 10 GM и прилагане на plist fix по-горе. - person t9mike; 23.09.2018
comment
Добре, това е интересно. Все още не съм пробвал двоичния си файл на новия часовник, ще трябва да го взема. - person jahmai; 24.09.2018
comment
Отбелязвам това като отговор. Въпреки че не отговаря директно на въпроса, той адресира проблема в Xamarin, който все още не поддържа arm64_32 архитектура, което води до отхвърляне от AppStore. Вярвам, че това е нещото, което екипът за поддръжка на Apple (неясно) има предвид. - person jahmai; 16.11.2018