tworzenie iOS builds / IPA nie działa już z wiersza poleceń
Przegląd
Nasza linia poleceń buduje (aby budować i tworzyćipa) nie działają już.
ITunesConnect zaczął odrzucać Kompilacje, które używają ustawienia budowania CODE_SIGN_RESOURCE_RULES_PATH
.
Jeśli zbudujemy bez tego ustawienia narzędzie PackageApplication (którego używamy do tworzenia podpisanego .IPA).
Wygląda na to, że PackageApplication wywołuje /usr / bin / codesign z argumentami resource-rules, nawet jeśli ustawienie budowaniaCODE_SIGN_RESOURCE_RULES_PATH
jest wyłączone
I podejrzewa, że PackageApplication musi zostać zaktualizowany tak, aby nie wywoływał /usr/bin / codesign z argumentami resource-rules, gdy ustawienie kompilacji CODE_SIGN_RESOURCE_RULES_PATH
jest wyłączone.
Czy ktoś znalazł na to rozwiązanie?
Szczegóły
Naszą aplikację budujemy w wierszu poleceń w następujący sposób:
xcodebuild -workspace myApp.xcworkspace -scheme myApp -sdk iphoneos -configuration AppStoreDistribution OBJROOT=$PWD/build SYMROOT=$PWD/build ONLY_ACTIVE_ARCH=NO 'CODE_SIGN_RESOURCE_RULES_PATH=$(SDKROOT)/ResourceRules.plist'
Tworzymy podpis .ipa w wierszu poleceń tak:
xcrun -log -sdk iphoneos PackageApplication "/Users/mpv/dev/myApp/build/AppStoreDistribution-iphoneos/myApp.app" -o "/Users/mpv/dev/myApp/build/AppStoreDistribution-iphoneos/myApp.ipa" -sign "iPhone Distribution: MyTeam (XXXXXXXXXX)" -embed /Users/mpv/Library/MobileDevice/Provisioning\ Profiles/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.mobileprovision
ITunesConnect odrzuca teraz nasze buildy z następującym błędem:
" ten pakiet jest nieprawidłowy. Info.plist zawiera nieprawidłowy klucz "CFBundleResourceSpecification" w pakiecie myApp [myApp.app] "
Jeśli usuniemy bit 'CODE_SIGN_RESOURCE_RULES_PATH=$(SDKROOT)/ResourceRules.plist'
z polecenia build, aplikacja zostanie zbudowana bez klucza CFBundleResourceSpecification
plist(co zakładam, że jest tym, czego chcemy). Nowe polecenie build wygląda tak:
xcodebuild -workspace myApp.xcworkspace -scheme myApp -sdk iphoneos -configuration AppStoreDistribution OBJROOT=$PWD/build SYMROOT=$PWD/build ONLY_ACTIVE_ARCH=NO
Problem polega teraz na tym, że komenda do budowaniaipa nie występuje z następującym błędem:
Błąd: / usr / bin / codesign --force --preserve-metadata = identyfikator,uprawnienia, resource-rules --sign iPhone Distribution: MyTeam (XXXXXXXXX) --resource-rules=/var/folders/2B/7hylk7nn13dgrl9yyh2wp0lm0000gn/t/zdrjmkktq/Payload/myApp.App / ResourceRules.plist --entitlements /var/folders/2b/7hylk7nn13dgrl9yyh2wp0lm0000gn/t/zdrjmkktq/entitlements_plistIUdGWLYe / var/folders/2B/7hylk7nn13dgrl9yyh2wp0lm0000gn/t/zdrjmkktq/Payload / myApp.aplikacja nie powiodło się z błędem 1. Wyjście: Warning: usage of --preserve-metadata z opcją "resource-rules" (deprecated in Mac OS X >= 10.10)!
Warning: -- resource-rules has been deprecated in Mac OS X > = 10.10! / var/folders/2B/7hylk7nn13dgrl9yyh2wp0lm0000gn/t/zdrjmkktq/Payload / myApp.App / ResourceRules.plist: nie można odczytać zasobów
Wygląda na to, że PackageApplication wywołuje /usr/bin/codesign z argumentami resource-rules, nawet jeśli ustawienie CODE_SIGN_RESOURCE_RULES_PATH
argument / build jest wyłączone.
Myślę, że PackageApplication musi zostać zaktualizowany, aby nie wywołuje /usr/bin/codesign z argumentami resource-rules, gdy ustawienie CODE_SIGN_RESOURCE_RULES_PATH
argument / build jest wykluczone.
5 answers
Apple wróciło do mnie z rozwiązaniem. Od Xcode 7 powinniśmy używać xcodebuild
zamiast PackageApplication
do produkcji .plik ipa.
Xcodebuild ma nową opcję-exportArchive, aby utworzyć .ipa, który działa bardziej jak Xcode Organizer.
Więc powinniśmy teraz:
- zbuduj archiwum za pomocą
xcodebuild archive
- create the .ipa z
xcodebuild -exportArchive
Teraz tworzymy archiwum w następujący sposób:
xcodebuild -workspace myApp.xcworkspace -scheme myApp -sdk iphoneos -configuration AppStoreDistribution archive -archivePath $PWD/build/myApp.xcarchive
Teraz eksportujemy .IPA jak to:
xcodebuild -exportArchive -archivePath $PWD/build/myApp.xcarchive -exportOptionsPlist exportOptions.plist -exportPath $PWD/build
Te dwa polecenia tworzą pliki build/myApp.xcarchive
i build/myApp.ipa
Zauważ, że xcodebuild -exportArchive
wymaga argumentu -exportOptionsPlist
, który wskazuje naplik plist z opcjami eksportu. Aby uzyskać pełną listę tego, co możesz umieścić w pliście, Uruchom xcodebuild -help
. Minimalna zawartość pliku wygląda następująco:
<?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>method</key>
<string>app-store</string>
<key>teamID</key>
<string>YOUR_TEN_CHARACTER_TEAM_ID</string>
</dict>
</plist>
W Xcode 9, musisz teraz określić więcej szczegółów w exportOptions.plist jak poniżej:
<?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>compileBitcode</key>
<false/>
<key>method</key>
<string>ad-hoc</string>
<key>provisioningProfiles</key>
<dict>
<key>my.bundle.idenifier</key>
<string>My Provisioning Profile Name</string>
</dict>
<key>signingCertificate</key>
<string>iPhone Distribution</string>
<key>signingStyle</key>
<string>manual</string>
<key>stripSwiftSymbols</key>
<true/>
<key>teamID</key>
<string>YOURTEAMID</string>
<key>thinning</key>
<string><none></string>
</dict>
</plist>
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-09-26 01:58:31
Kroki, aby terminal IPA Usig
Czysty Projekt:
Release
xcodebuild clean -project ProjectPath/myApp.xcodeproj -configuration ReleaseAdhoc -alltargets
Debug
xcodebuild clean -project ProjectPath/myApp.xcodeproj -configuration Debug -alltargets
Projekt Archiwum:
Debug
xcodebuild archive -project ProjectPath/myApp.xcodeproj -scheme “myApp” -configuration Debug -archivePath pathForArchiveFolder/myApp.xcarchive
Release
xcodebuild archive -project ProjectPath/myApp.xcodeproj -scheme “myApp” -archivePath pathForArchiveFolder/myApp.xcarchive
Export IPA
starsza wersja: Może to oznaczać, że podpisany zasób został dodany, zmodyfikowany lub usunięty. Błąd
xcodebuild -exportArchive -archivePath projectPath/myapp.xcarchive -exportPath projectPath/myApp.ipa -exportFormat ipa -exportProvisioningProfile “provisioning profile”
nowa wersja:
xcodebuild -exportArchive -archivePath ProjectPath/myapp.xcarchive -exportPath projectPath/myApp.ipa -exportOptionsPlist ProjectFolder/exportPlist.plist
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-12-19 11:31:11
Oto szybka wskazówka w przypadku, gdy trzeba utworzyć exportOptions.plik plist jako część procesu budowania (może Jenkins).
Możesz użyć narzędzia plutil
, Aby zmienić JSON w plist. Przykład:
echo "{\"method\":\"app-store\"}" | plutil -convert xml1 -o /tmp/exportOptions.plist -- -
Smacznego!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-03-31 19:06:38
Przejdź do folderu projektu:
Archiwum:
Dla debugowania:
xcrun xcodebuild -scheme MyApp -configuration Debug archive -archivePath build/MyApp.xcarchive
Dla Wydania:
xcrun xcodebuild -scheme MyApp -configuration Release archive -archivePath build/MyApp.xcarchive
IPA:
xcrun xcodebuild -exportArchive -exportPath build/ -archivePath build/MyApp.xcarchive/
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-12-15 14:15:20
Utworzyłem nazwę projektu myFirstApp, a lokalizacja projektu to Desktop / myFirstApp.
Sprawdzone na Xcode
8.3
Krok 1 -
cd /Users/Ved/Desktop/myFirstApp/
Krok 2 -
xcodebuild -scheme myFirstApp archive \
-archivePath /Users/Ved/Desktop/myFirstApp.xcarchive
Krok 3 -
xcodebuild -exportArchive -exportFormat ipa \
-archivePath "/Users/Ved/Desktop/myFirstApp.xcarchive" \
-exportPath "/Users/Ved/Desktop/myFirstApp.ipa" \
-exportProvisioningProfile "myFirstAppDevProfile"
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-10-15 11:54:14