xcodebuild inny profil aprowizacji Dla zależności docelowych
[[2]}próbuję zbudować swoją aplikację z xcodebuild:
xcodebuild -workspace "RG.xcworkspace" -scheme "Production" -configuration "Release" build CONFIGURATION_BUILD_DIR="${TEMP_DIR}" PROVISIONING_PROFILE="1234-5678-9098-7654-3210"
Mój plan ma dwa cele. Jeden cel to aplikacja, drugi to rozszerzenie aplikacji (zbudowałem rozszerzenie dla Safari). Rozszerzenie aplikacji jest zależnością docelową. Każdy obiekt docelowy wymaga osobnego profilu aprowizacji. Nie wiem jak określić PROVISIONING_PROFILE Dla zależności. Dostaję ten błąd, zgodnie z oczekiwaniami:
CodeSign error: code signing is required for product type 'App Extension' in SDK 'iOS 8.1'
StackOverflow i strona man dla xcodebuild nie wydają się nic wymyślać. Czy czy ktoś wie jak zbudować projekt z xcodebuild, który opiera się na dwóch profilach provisioning?
4 answers
Zbyt długo nad tym pracowałem. Byłem w drodze do łóżka, gdy odpowiedź mnie uderzyła:
W Ustawieniach budowania każdego z celów powinieneś ustawić $VARIABLE
dla nazwy profilu. Aby to zrobić, wybierz "inne" na dole listy profili. Spowoduje to otwarcie pola tekstowego-wybierz inny $VARIABLE
dla każdego celu-na przykład wybrałem {[3] } dla celu aplikacji kontenerów i $EXTENSION_PROFILE
dla mojego celu rozszerzenia Today
To spowoduje w coś takiego:
Na koniec, gdy budujesz z xcodebuild
, określ uuid profilu tak, jak to zrobiłeś z PROVISIONING_PROFILE
:
xcodebuild ... APP_PROFILE="85b6f019-d5e5-43a7-9e8f-e3aaed64a7e4" EXTENSION_PROFILE="e50cf605-ab63-40ad-8329-2758359ea748"
[7]}budowanie z XCode wydaje się być nienaruszone - z tego co wiem XCode wybiera domyślne profile (tak jakby w trybie "automatycznym")
Teoretycznie może to również obsługiwać wiele rozszerzeń.
Działa dla mnie z XCode 6.3:)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-13 12:47:02
Rozwiązanie Bez Zmiennej
Istnieje opcja -exportSigningIdentity
, która może Ci pomóc, ponieważ profile obsługi aplikacji i rozszerzenia / widżetu mogą być różne, ale tożsamości podpisywania aplikacji i rozszerzenia powinny być takie same.
Na przykład, zobaczysz, że,
- TargetApp - > Build Settings - > "Code Signing Identity (id)" (Release)
- TargetExtension - > Build Settings - > "Code Signing Identity (id)" (Release)
Są zasadniczo takie same string, powiedzmy, że ta tożsamość to "Code Signing Identity (id)" . Tak więc, aby zbudować & eksport archiwum, co można uruchomić, są po prostu,
Czyszczenie
xcodebuild clean -workspace HelloWorld.xcworkspace -scheme HelloWorld
Budynek
xcodebuild -workspace HelloWorld.xcworkspace -scheme HelloWorld archive -archivePath ~/output/HelloWorld.xcarchive
Eksport
xcodebuild -exportArchive -exportFormat ipa -archivePath ~/output/HelloWorld.xcarchive -exportPath "HelloWorld.ipa" -exportSigningIdentity "Code Signing Identity (id)"
Reference: xcodebuild documentation
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-20 07:38:23
Miesiące później... Znalazłem rozwiązanie, które nie obejmuje wartości ustawień w Xcode: wewnątrz sigh
istnieje skrypt , który potrafi usunąć plik ipa z podanymi profilami. Dla mnie działa:
bash resign.sh Experiments-AdHocProd.ipa "iPhone Distribution: Company Pty Ltd" output.ipa -p com.company.experiments.AudioPlugin=Experiments-AdHocProd_com.company.experiments.AudioPlugin.mobileprovision -p com.company.experiments=Experiments-AdHocProd.mobileprovision --verbose
Gdzie:
-
Experiments-AdHocProd.ipa
jest istniejącym ipa -
com.company.experiments.AudioPlugin
jest identyfikatorem pakietu rozszerzeń -
Experiments-AdHocProd_com.company.experiments.AudioPlugin.mobileprovision
jest profilem rozszerzenia -
com.company.experiments
jest głównym identyfikatorem pakietu aplikacji -
Experiments-AdHocProd.mobileprovision
jest główną aplikacją profil
Identyfikator pakietu każdego profilu musi być zgodny z identyfikatorem aplikacji, z którą zostanie podpisany.
Znalazłem coś, co jest Ważne, aby pamiętać jest to, że jeśli identyfikator pakietu ma symbol wieloznaczny (w moim przypadku Experiments-AdHocProd.mobileprovision
ma), to profile z jawnymi identyfikatorami muszą być najpierw przekazane do -p
.
Alternatywnie, możesz użyć sigh
, Aby wykonać rezygnację. Niestety, sigh --help
nie mówi nic o rezygnacji z plików binarnych z rozszerzeniami, jednak sigh resign --help
tak.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-05-13 00:24:38
W języku Swift, Framework plików Pod będzie pakowany osobno. Następujące kroki rozwiązały problem.
1. Select pods
2. Targets
3. General
4. Edit bundle id
5. Build Settings
6. Code Signing
7. Provisioning profile -> select the valid profile
8. Code Signing Identity -> Select the respective identity from
profile.
Powtórz to samo dla wszystkich celów.
Jestem w stanie wygenerować build.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-08-04 12:40:47