Agregaré mis 2 centavos aquí (de una manera menos aterradora :-). He encontrado una gran cantidad de bibliotecas gordas de proveedores que (por alguna razón) no funcionan de la manera normal al agregarlas al Frameworks
directorio como lo documenta Apple. La única forma en que hemos podido hacer que funcionen es tirando a la .framekwork
derecha en el directorio del proyecto y vinculando Embedded Frameworks
y Link Binary with Libraries
manualmente en la Configuración de compilación. Sin embargo, esto parece haber funcionado sin ningún problema, ya que con cualquier biblioteca gorda vienen con las arquitecturas de Simulator extrañas i386
y x86_64
junto con las arm
arquitecturas.
Una forma rápida de verificar las arquitecturas en la biblioteca gorda es
$ cd 'Project_dir/Project'
$ lipo -info 'YourLibrary.framework/YourLibExec`
Lo que debería escupir una salida como esta
Architectures in the fat file: YourLibrary.framework/YourLibExec are: i386 x86_64 armv7 arm64
Esto confirma que necesitará "recortar la grasa" (a saber, i386
& x86_64
) de su marco antes de la carga de iTunesConnect Archival, que no permite estas arquitecturas (ya que no son compatibles con iOS).
Ahora, todas las respuestas (o al menos algunas de las respuestas) aquí proporcionan estos maravillosos scripts de ejecución que estoy seguro que funcionan muy bien, pero solo si su Framework reside en el Frameworks
directorio. Ahora, a menos que seas un adicto al script de shell, esos scripts sin modificaciones no funcionarán para el escenario que explico anteriormente. Sin embargo, hay una manera muy simple de deshacerse de las arquitecturas i386
& x86_64
desde el marco.
Abra la terminal en el directorio de su proyecto.
Cambiar el directorio directamente en el .framekwork
, como
cd YourProjectDir/YourProject/YourLibrary.framework
Ejecute la serie de comandos como se muestra a continuación:
$ mv YourLibrary YourLibrary_all_archs
$ lipo -remove x86_64 YourLibrary_all_archs -o YourLibrary_some_archs
$ lipo -remove i386 YourLibrary_some_archs -o YourLibrary
$ rm YourLibrary_all_archs YourLibrary_some_archs
Algunas cosas a tener en cuenta aquí: lipo -remove
se debe hacer una vez para que cada arquitectura se elimine. lipo
no modifica el archivo de entrada, solo produce un archivo, por lo que debe ejecutarlo lipo -remove
una vez para x86_64
y i386
. Los comandos anteriores simplemente hacen eso al primero renombrar el ejecutable y luego eventualmente eliminar los arcos deseados, y luego limpiar los archivos sobrantes. Y eso es todo, ahora debería ver una marca de verificación verde en la carga del archivo del cargador de aplicaciones en iTunesConnect.
Cosas a tener en cuenta : los pasos anteriores solo se deben realizar durante la compilación de producción, ya .framework
que se eliminarán de las arquitecturas del simulador, las compilaciones en simuladores dejarán de funcionar (lo que se espera). En el entorno de desarrollo, no debería haber necesidad de quitar las arquitecturas del .framework
archivo ya que desea poder realizar pruebas tanto en Simulator como en un dispositivo físico. Si su biblioteca gorda reside en la Frameworks
carpeta del proyecto, mire la respuesta aceptada.