software ipsw ios xcode xcodebuild

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:

  1. construir un archivo con el xcodebuild archive
  2. 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>&lt;none&gt;</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