To było coś, co rozwiązałem w jednym z moich własnych systemów kompilacji w tym samym celu ... cofnijmy się w czasie do Dnia 1 ówczesnego "Programu dla programistów iPhone'a". Jeśli byłeś wtedy w pobliżu społeczności, możesz pamiętać, że toolchain był ... powiedzmy mniej przyjazny ... niż jest dzisiaj.
Gdy chcesz zbudować dla AppStore lub dla buildów AdHoc, musisz zrobić ten ciekawy plik privileglements.plist, a następnie wkleić blob XML do treści tego pliku. Następnie uruchomiłeś kompilację i wtedy pojawiło się coś, co wydawało się być magią, a sama obecność tego pliku sprawiła, że praca została wykonana, pozwoliła ci na ręczne skonstruowanie twojego IPA i kontynuowanie działalności tak jak zwykle. Teraz, gdy jesteśmy o kilka lat starsi i mam nadzieję, że jest nieco mądrzejszy niż w początkach SDK, zrozumieliśmy, że magiczny blob XML nie był w rzeczywistości tak magiczny - "get-task-allow" key to ustawienie wskazujące, czy plik binarny powinien zezwalać innym procesom (takim jak debugger) na dołączanie do pliku binarnego. Podczas podpisywania aplikacji przy użyciu profilu obsługi wersji programistycznych ten klucz zostanie ustawiony na "true" (i tym samym pozwoli LLDB na dołączanie i interakcję z aplikacją) ... i oczywiście podczas podpisywania aplikacji przy użyciu profilu udostępniania dystrybucji, ten klucz zostanie ustawiony na "fałsz".
Apple przedstawił kilka nowości w Tech Note TN2250 o czytanie XML (a co za tym idzie uprawnienia) z Provisioning Profile:
bezpieczeństwo cms -D -i /path/to/the.app/embedded. mobileprovision
ta zwróci XML w profilu Provisioning - stamtąd można analizować z pary wartość klucza dla „get-task-allow” i użyć tej wartości w celu określenia, czy profil jest Provisioning Development lub Dystrybucja .
Absolutnie zgadzam się, że byłoby miło mieć narzędzie, które powie nam, że bezpośrednio, więc nie musimy węszyć przez profil w poszukiwaniu wskazówek, ale jednocześnie mamy przynajmniej wysoce niezawodne, choć okrężną drogą do zrobienia tego rozróżnienia przed ucieczką i budowaniem, którego nie możemy użyć.
Powodzenia i daj mi znać, jeśli potrzebujesz więcej wyjaśnień lub masz inne pytania.
To interesujące pytanie, +1. –
Oczywiście ludzie z 'testflightapp.com' robią to dla plików .ipa, ale ja nawet nie wiem jak odróżnić adhoc/appstore, który robisz. Sądzę, że narzędzia wiersza poleceń XCode powinny zawierać "narzędzie do profilowania narzędzi do profilowania" i powinno to być zrobione za nas. To tylko bogate źródło dezorientacji użytkownika. Dzięki Apple. –
Hi Warren P, fyi Wszystko, co robię, aby wykryć profil ad hoc vs appstore sprawdza obecność klucza "ProvisionedDevices" w pliku plist profilu, ponieważ profile aplikacji nie będą zawierały żadnych urządzeń. Może nie być głupim dowodem, ale system, w którym pracuję, służy temu celowi. Mam nadzieję, że to jest przydatne. –