ios xcode7 ios-frameworks bitcode

ios - Cómo verificar si un framework es BITCODE para Xcode7



ios-frameworks (4)

He observado que la sección __bitcode solo está presente para las bibliotecas estáticas y no para las dinámicas. Entonces, en la solución está el siguiente comando.

otool -l libDeviceManager.a | grep __LLVM

Además, a veces con binarios de grasa, el otool puede no dar segmentos __LLVM aunque esté presente. Puedes usar el siguiente comando para esos casos

otool -arch armv7 libDeviceManager.framework/libDeviceManager | grep __LLVM

Desde Xcode 7 se convirtió en uno de los problemas comunes que los marcos de terceros deberían admitir Bitcode . También podemos deshabilitar el BITCODE configurando ENABLE_BITCODE en NO en la configuración de compilación. Pero no quiero desactivarlo, en cambio quiero convertir todos mis marcos a BITCODE compatible.

Entonces, ¿cómo verificar si un marco es compatible con BITCODE además de compilar el marco en Xcode? A veces, Xcode da error para la compatibilidad con BITCODE para un marco, dejando a los otros a pesar de que no tienen soporte para BITCODE.

¿Hay alguna herramienta / control de línea de comando?


La respuesta aceptada sugiere que debes hacer grep __LLVM pero prefiero hacer esto

otool -l libName.o | grep __bitcode

Como hay diferentes segmentos __LLVM y no todos estos indican la presencia de Bitcode. Aquí hay un ejemplo:

Section sectname __bitcode segname __LLVM addr 0x00000000000007d0 size 0x0000000000000f10 offset 3360 align 2^4 (16) reloff 0 nreloc 0 flags 0x00000000 reserved1 0 reserved2 0 Section sectname __cmdline segname __LLVM addr 0x00000000000016e0 size 0x0000000000000069 offset 7216 align 2^4 (16) reloff 0 nreloc 0 flags 0x00000000 reserved1 0 reserved2 0

La presencia de la Sección __cmdline no indica que Bitcode esté presente, pero también se encontraría cuando solo se busca __LLVM .


Puedes probar estos comandos:

otool -arch armv7 -l libDeviceManager.a | grep bit code

y

otool -arch arm64 -l libDeviceManager.a | grep bitcode


En esta discusión del Foro de Desarrolladores de Apple , los usuarios dshirley y bwilson sugieren usar las herramientas de línea de comandos otool y grep para verificar si existen secciones de códigos de bits.

$ otool -l libName.o | grep __LLVM

o

$ otool -l MyFramework.framework/Versions/A/MyFramework | grep __LLVM

Al ejecutar el comando anterior, si la biblioteca contiene código de segname __LLVM salida de segname __LLVM .