ios - software - ipsw iphone 8
La creación de ips/iOS ya no funciona desde la línea de comando (5)
Apple me respondió con una solución. A partir de Xcode 7 deberíamos usar xcodebuild
lugar de PackageApplication
para producir el archivo .ipa.
xcodebuild tiene una nueva opción -exportArchive para crear un .ipa que funcione más como Xcode Organizer.
Entonces deberíamos ahora:
- construir un archivo con el
xcodebuild archive
- crea el .ipa con
xcodebuild -exportArchive
Ahora construimos el archivo de esta manera:
xcodebuild -workspace myApp.xcworkspace -scheme myApp -sdk iphoneos -configuration AppStoreDistribution archive -archivePath $PWD/build/myApp.xcarchive
Ahora exportamos el .ipa así:
xcodebuild -exportArchive -archivePath $PWD/build/myApp.xcarchive -exportOptionsPlist exportOptions.plist -exportPath $PWD/build
Estos dos comandos crean los archivos build/myApp.xcarchive
y build/myApp.ipa
Tenga en cuenta que xcodebuild -exportArchive
requiere un argumento -exportOptionsPlist
que apunta a un archivo .plist con opciones de exportación. Para obtener una lista completa de lo que puede poner en ese plist, ejecute xcodebuild -help
. El contenido mínimo del archivo se ve así:
<?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>
En Xcode 9, ahora debe especificar más detalles en exportOptions.plist como a continuación:
<?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>
Visión de conjunto
Nuestras construcciones de línea de comando (para construir y crear el .ipa) ya no funcionan.
iTunesConnect ha comenzado a rechazar compilaciones que usan la CODE_SIGN_RESOURCE_RULES_PATH
compilación CODE_SIGN_RESOURCE_RULES_PATH
.
Si construimos SIN esa configuración, falla la herramienta PackageApplication (que usamos para crear el archivo .ipa).
Parece que PackageApplication llama a / usr / bin / codesign con argumentos de reglas de recursos incluso si se excluye la configuración de compilación CODE_SIGN_RESOURCE_RULES_PATH
Sospecho que la PackageApplication necesita ser actualizada para que no llame a / usr / bin / codesign con argumentos de reglas de recursos cuando se CODE_SIGN_RESOURCE_RULES_PATH
configuración de compilación CODE_SIGN_RESOURCE_RULES_PATH
.
¿Alguien ha encontrado una solución para esto?
Detalles
Construimos nuestra aplicación en la línea de comandos de esta manera:
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''
Creamos el .ipa firmado en la línea de comandos de esta manera:
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 ahora está rechazando nuestras compilaciones con el siguiente error:
"Este paquete no es válido. Info.plist contiene una clave no válida ''CFBundleResourceSpecification'' en el paquete myApp [myApp.app]"
Si eliminamos el ''CODE_SIGN_RESOURCE_RULES_PATH=$(SDKROOT)/ResourceRules.plist''
del comando de compilación, entonces la aplicación se CFBundleResourceSpecification
sin la clave de CFBundleResourceSpecification
CFBundleResourceSpecification (que supongo que es lo que queremos). El nuevo comando de compilación tiene este aspecto:
xcodebuild -workspace myApp.xcworkspace -scheme myApp -sdk iphoneos -configuration AppStoreDistribution OBJROOT=$PWD/build SYMROOT=$PWD/build ONLY_ACTIVE_ARCH=NO
El problema ahora es que el comando para construir el .ipa falla con el siguiente error:
error: / usr / bin / codesign --force --preserve-metadata = identificador, derechos, reglas de recurso --sign Distribución de iPhone: MyTeam (XXXXXXXXXX) --resource-rules = / var / folders / 2b / 7hylk7nn13dgrl9yyh2wp0lm0000gn / T /zDRRJMkKtQ/Payload/myApp.app/ResourceRules.plist --entitlements / var / carpetas / 2b / 7hylk7nn13dgrl9yyh2wp0lm0000gn / T / zDRRJMkKtQ / entitlements_plistIUdGWLYe /var/folders/2b/7hylk7nn13dgrl9yyh2wp0lm0000gn/T/zDRRJMkKtQ/Payload/myApp.app se produjo el error 1. Salida: Advertencia: uso de --preserve-metadata con la opción "resource-rules" (obsoleto en Mac OS X> = 10.10)!
Advertencia: --resource-rules ha quedado en desuso en Mac OS X> = 10.10! /var/folders/2b/7hylk7nn13dgrl9yyh2wp0lm0000gn/T/zDRRJMkKtQ/Payload/myApp.app/ResourceRules.plist: no se pueden leer los recursos
Parece que PackageApplication llama a / usr / bin / codesign con argumentos de reglas de recursos, incluso si se CODE_SIGN_RESOURCE_RULES_PATH
la CODE_SIGN_RESOURCE_RULES_PATH
argumento / compilación CODE_SIGN_RESOURCE_RULES_PATH
.
Creo que PackageApplication debe actualizarse para que no llame a / usr / bin / codesign con argumentos de reglas de recursos cuando se CODE_SIGN_RESOURCE_RULES_PATH
la CODE_SIGN_RESOURCE_RULES_PATH
argumento / compilación CODE_SIGN_RESOURCE_RULES_PATH
.
Aquí hay un consejo rápido en caso de que necesite crear el archivo exportOptions.plist como parte de su proceso de compilación (quizás Jenkins).
Puede usar la herramienta plutil
para convertir JSON en un plist. Ejemplo:
echo "{/"method/":/"app-store/"}" | plutil -convert xml1 -o /tmp/exportOptions.plist -- -
¡Disfrutar!
He creado un nombre de proyecto myFirstApp y la ubicación del proyecto es Desktop / myFirstApp. Probado en Xcode
8.3
Paso 1 -
cd /Users/Ved/Desktop/myFirstApp/
Paso 2 -
xcodebuild -scheme myFirstApp archive /
-archivePath /Users/Ved/Desktop/myFirstApp.xcarchive
Paso 3 -
xcodebuild -exportArchive -exportFormat ipa /
-archivePath "/Users/Ved/Desktop/myFirstApp.xcarchive" /
-exportPath "/Users/Ved/Desktop/myFirstApp.ipa" /
-exportProvisioningProfile "myFirstAppDevProfile"
Ir a la carpeta del proyecto:
Archivo:
para DEPURAR:
xcrun xcodebuild -scheme MyApp -configuration Debug archive -archivePath build/MyApp.xcarchive
para el lanzamiento:
xcrun xcodebuild -scheme MyApp -configuration Release archive -archivePath build/MyApp.xcarchive
Obtener iPA:
xcrun xcodebuild -exportArchive -exportPath build/ -archivePath build/MyApp.xcarchive/
Pasos para hacer iPA Usig terminal
Proyecto limpio:
Lanzamiento
xcodebuild clean -project ProjectPath/myApp.xcodeproj -configuration ReleaseAdhoc -alltargets
Depurar
xcodebuild clean -project ProjectPath/myApp.xcodeproj -configuration Debug -alltargets
Proyecto de archivo:
Depurar
xcodebuild archive -project ProjectPath/myApp.xcodeproj -scheme “myApp” -configuration Debug -archivePath pathForArchiveFolder/myApp.xcarchive
Lanzamiento
xcodebuild archive -project ProjectPath/myApp.xcodeproj -scheme “myApp” -archivePath pathForArchiveFolder/myApp.xcarchive
Exportar IPA
Versión anterior: Esto puede dar Se agregó, modificó o eliminó un recurso firmado. Error
xcodebuild -exportArchive -archivePath projectPath/myapp.xcarchive -exportPath projectPath/myApp.ipa -exportFormat ipa -exportProvisioningProfile “provisioning profile”
Nueva versión:
xcodebuild -exportArchive -archivePath ProjectPath/myapp.xcarchive -exportPath projectPath/myApp.ipa -exportOptionsPlist ProjectFolder/exportPlist.plist