Xcode 7 + Dropbox Core API: Simplemente deshabilita Bitcode?

He estado usando Dropbox Core API en mi aplicación iOS desde hace bastante time. Después de actualizar a Xcode 7, recibí el siguiente error cuando trato de comstackr mi proyecto:

ld: '.../Frameworks/Dropbox/iOS/DropboxSDK.framework/DropboxSDK' does not contain bitcode. You must rebuild it with bitcode enabled (Xcode setting ENABLE_BITCODE), obtain an updated library from the vendor, or disable bitcode for this target. 

Sé para qué sirve Bitcode y para qué sirve. El error se puede resolver simplemente configurando la opción Enable Bitcode en No en los ajustes de generación de objectives. Después de esto todo se comstack sin ningún error y la aplicación se ejecuta sin ningún problema.

Hasta ahora, bueno, pero ¿es esta la solución "correcta"? Revisé la página de Dropbox para get una versión actualizada del SDK, pero ya usé la última versión.

El proyecto contiene otro objective para un Widget de aplicaciones, una Extensión de reloj, etc., que no usan el SDK de Dropbox. ¿Qué opción para Enable Bitcode debe usarse aquí? ¿Es (por alguna razón) mejor usar el mismo valor ( No en mi caso) para todos los objectives? ¿Tiene algún sentido habilitar Bitcode para los objectives Mira y Widget si el objective principal de la aplicación no usa Bitcode?

¿Cuál es la mejor práctica aquí?

Parece que no han lanzado una API compatible con bitcode. Aquí está el enlace al hilo en los foros oficiales de Dropbox, que incluye a una persona de apoyo de Dropbox que responde a las preguntas de otros desarrolladores en este context.

Aquí está la respuesta relevante de la persona de soporte de Dropbox:

¡Oh, genial! No hemos lanzado una actualización del iOS Core SDK con bitcode, pero si necesita soporte de bitcode para Core SDK, puede agregar la fuente directamente, ya que es de código abierto. Hay un hilo sobre esto para el Core SDK aquí: https://www.dropboxforum.com/hc/en-us/community/posts/204352929-Need-Bitcode-Framework

Desde que hice esta pregunta, simplemente configuré la opción Enable Bitcode de Enable Bitcode en No en los Build Settings objectives mientras uso Yes en los objectives Widget y Apple Watch. Eso funcionó bien y no noté ningún problema o limitación.

Ahora intenté lanzar una nueva versión de mi aplicación a la App Store y noté una checkbox Include Bitcode cuando Include Bitcode el file de la aplicación a Apple. Cuando esta casilla está habilitada, recibo el siguiente error:

Formato de emparejamiento no válido. El package Match-O "MyApp.app/PlugIns/MyApp WatchKit Extension.appex" no es consistente con Match-O en el package principal.

El package principal Match-O contiene armv7 (código máquina) y arm64 (código máquina), mientras que el package nested Match-O contiene armv7 (código de bit y código de máquina) y arm64 (código de bit y código de máquina).

Varifiquen que todos los objectives de una plataforma tengan un valor consistente para la configuration de compilation ENABLE_BITCODE.

No tengo idea de por qué este es un problema ahora, mientras que todas las demás versiones que subí durante el año pasado pasaron sin ningún problema. Sin embargo, el problema se puede resolver fácilmente Include Bitcode checkbox Include Bitcode . La carga se acepta sin ningún problema.

Pero hay una solución mejor: ¡Como lo señaló Greg, Dropbox finalmente lanzó una versión habilitada para Bitcode del SDK!

Descargue el nuevo SDK 1.3.14 , ENABLE_BITCODE en su proyecto y establezca ENABLE_BITCODE en Yes para todos los objectives, y ENABLE_BITCODE terminado. Al less hasta que Apple encuentre una nueva forma de perturbar su flujo de trabajo de lanzamiento 🙂