ios - Xcode 9, Cartago. Error de conexión de iTunes: "Paquete no válido-Instrumentación LLVM no permitida"
itunesconnect carthage (4)
Hoy descargué Xcode 9 e hice los cambios necesarios para compilar mi aplicación. La aplicación se está compilando y ejecutando localmente sin ningún problema.
Usando Xcode 9 lo subí a la App Store. Subida fue exitosa sin ningún error.
A continuación voy el siguiente correo electrónico de Apple:
Estimado desarrollador,
Hemos descubierto uno o más problemas con su entrega reciente para "KiteSpotter: pronóstico del viento y el clima de Kitesurf". Para procesar su entrega, se deben corregir los siguientes problemas:
Paquete inválido - Instrumentación LLVM no permitida. No envíe aplicaciones que tengan habilitada la recopilación de cobertura o instrumentación de perfiles LLVM. Desactive el perfil de LLVM o la cobertura de código, reconstruya su aplicación y vuelva a enviarla.
Una vez que se han corregido estos problemas, puede volver a enviar el binario corregido.
Saludos,
El equipo de la App Store
Fui y apagué la cobertura de código para mi objetivo y el objetivo de vainas de cacao, que fue el único ajuste relevante que pude encontrar:
Vuelva a enviar la aplicación y me aparece el mismo error.
En mi proyecto estoy usando Cartago, que tiene más de 15 dependencias. Buscando una solución, encontré que todos los proyectos deben actualizarse con la configuración anterior.
- ¿Existe alguna solución para automatizar esta configuración para todos los marcos, si eso está causando el problema?
- ¿Alguien más ha enfrentado este problema y lo ha solucionado? ¿Los marcos de Cartago estaban creando el problema o algo más?
Como solución rápida, ejecute estos comandos en la Terminal (asegúrese de ir a la carpeta raíz de su proyecto):
carthage update --platform iOS --no-use-binaries --no-build
Esto actualizará sus dependencias, pero no construirá nada.grep -lR "codeCoverageEnabled" --include *.xcscheme --null Carthage | xargs -0 sed -i '''' -e ''s/codeCoverageEnabled = "YES"/codeCoverageEnabled = "NO"/g''
grep -lR "codeCoverageEnabled" --include *.xcscheme --null Carthage | xargs -0 sed -i '''' -e ''s/codeCoverageEnabled = "YES"/codeCoverageEnabled = "NO"/g''
Esto establecerá la cobertura del código enNO
.carthage build --platform iOS
Esto finalmente construirá todos los marcos sin cobertura de código.
Ahora puedes archivar tu proyecto y subirlo a iTunes Connect.
La buena gente en el proyecto de Carthage
ya está trabajando en una solución más fácil de usar, así que asegúrese de revisar los lanzamientos allí.
La solución para automatizar la cobertura del código de configuración en falso para todas las dependencias es ejecutar el siguiente comando en el terminal (vaya al directorio de su proyecto):
grep -lR "codeCoverageEnabled" --include *.xcscheme --null Carthage | xargs -0 sed -i '''' -e ''s/codeCoverageEnabled = "YES"/codeCoverageEnabled = "NO"/g''
Esto establecerá la cobertura del código en NO y iTunes connect no se quejará.
La secuencia para hacer que todo funcione es la siguiente
- Ejecute la
carthage update --platform iOS --no-use-binaries --no-build
. Esto actualizará y descargará todas las dependecies. Cuando Carthage comience a compilar, puede presionar ctrl + c para cancelar. - Ejecute el comando anterior para establecer la cobertura del código en NO
- Ahora que todo está en su lugar, ejecute
carthage build --platform iOS
. Esto construirá todo con cobertura de código a NO
Ahora puede archivar y subir a iTC.
El comando fue dado por https://github.com/gunterhager , así que el crédito va para él
Como alternativa para los usuarios de fastlane , agregue lo siguiente a su archivo de fastlane, que automatizará todo:
desc "Update Carthage"
lane :update_carthage do
carthage(
command: "update", # One of: build, bootstrap, update, archive. (default: bootstrap)
use_binaries: false, # Check out dependency repositories even when prebuilt frameworks exist
no_build: true, # When bootstrapping Carthage do not build
platform: "iOS" # Define which platform to build for (one of ‘all’, ‘Mac’, ‘iOS’, ‘watchOS’, ‘tvOS‘, or comma-separated values of the formers except for ‘all’)
)
sh("grep -lR ''codeCoverageEnabled'' --include *.xcscheme --null Carthage | xargs -0 sed -i '''' -e ''s/codeCoverageEnabled = ''YES''/codeCoverageEnabled = ''NO''/g''")
carthage(
command: "build", # One of: build, bootstrap, update, archive. (default: bootstrap)
platform: "iOS" # Define which platform to build for (one of ‘all’, ‘Mac’, ‘iOS’, ‘watchOS’, ‘tvOS‘, or comma-separated values of the formers except for ‘all’)
)
end
Simplemente actualice Carthage
a la versión 0.26.0
o superior y luego ejecute nuevamente el comando de carthage update
.
También recibí el mismo error de Xcode 9.1, aunque he actualizado Carthage a la última versión https://github.com/Carthage/Carthage/releases No he podido cargar la versión en iTunes.
Trabajó para mí de esta manera: -
Si ha actualizado su Xcode a 9.1 entonces
Actualice su descarga de carthage.pkg
desde https://github.com/Carthage/Carthage/releases
Instale .pkg
y
Da el comando de carthage update
en la Terminal
refiriéndose a tu proyecto
y
luego diríjase a su proyecto Build Settings
encontrar Enable Code Coverage Support
cambiar esa configuración de Yes
a No
Luego archivar y subir a AppStore
. Tu construcción estará ready
. Happy