La configuración de Xcode 7 y ENABLE_BITCODE = YES no funciona

96

He seguido varios hilos sobre la nueva configuración ENABLE_BITCODE en Xcode, también he intentado todo lo que he podido (admití que no soy un profesional de xcode) pero todavía no puedo compilar el proyecto para usarlo en mi teléfono de prueba.

Mi aplicación funciona bien en el simulador, pero no puedo implementarla en mi iPhone para realizar pruebas. En el último, acabo de instalar iOS 9 beta.

Ahora, aquí está el mensaje de error que recibo. Parece que la configuración no afecta la biblioteca PARSE.com, ¿eso es parte de mi proyecto? ¿Cómo puedo implementar mi proyecto en mi teléfono? Gracias por cualquier consejo.

    Ld /Users/xxxxxx/Library/Developer/Xcode/DerivedData/graffiti-  bnmizxueojwiqcbbnsvilljhosrw/Build/Products/Debug-iphoneos/Pods/Parse.framework/Parse normal armv7
cd /Users/xxxxxx/Documents/DigitalTempusDev/graffiti/Pods
export IPHONEOS_DEPLOYMENT_TARGET=8.0
export PATH="/Applications/Xcode-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:/Applications/Xcode-beta.app/Contents/Developer/usr/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin"
/Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -arch armv7 -dynamiclib -isysroot /Applications/Xcode-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.0.sdk -L/Users/xxxxxx/Library/Developer/Xcode/DerivedData/graffiti-bnmizxueojwiqcbbnsvilljhosrw/Build/Products/Debug-iphoneos/Pods -L/Users/xxxxxx/Documents/DigitalTempusDev/graffiti/Pods/Parse -F/Users/xxxxxx/Library/Developer/Xcode/DerivedData/graffiti-bnmizxueojwiqcbbnsvilljhosrw/Build/Products/Debug-iphoneos/Pods -filelist /Users/xxxxxx/Library/Developer/Xcode/DerivedData/graffiti-bnmizxueojwiqcbbnsvilljhosrw/Build/Intermediates/Pods.build/Debug-iphoneos/Pods-Parse.build/Objects-normal/armv7/Parse.LinkFileList -install_name @rpath/Parse.framework/Parse -Xlinker -rpath -Xlinker @executable_path/Frameworks -Xlinker -rpath -Xlinker @loader_path/Frameworks -miphoneos-version-min=8.0 -dead_strip -fembed-bitcode-marker -ObjC -lParseLib -lz -framework AudioToolbox -framework CFNetwork -framework CoreGraphics -framework CoreLocation -framework QuartzCore -framework Security -framework StoreKit -framework SystemConfiguration -weak_framework Accounts -weak_framework Social -ObjC -fobjc-arc -fobjc-link-runtime -framework AudioToolbox -framework Bolts -framework CFNetwork -framework CoreGraphics -framework CoreLocation -framework Foundation -framework QuartzCore -framework Security -framework StoreKit -framework SystemConfiguration -single_module -compatibility_version 1 -current_version 1 -Xlinker -dependency_info -Xlinker /Users/xxxxxx/Library/Developer/Xcode/DerivedData/graffiti-bnmizxueojwiqcbbnsvilljhosrw/Build/Intermediates/Pods.build/Debug-iphoneos/Pods-Parse.build/Objects-normal/armv7/Parse_dependency_info.dat -o /Users/xxxxxx/Library/Developer/Xcode/DerivedData/graffiti-bnmizxueojwiqcbbnsvilljhosrw/Build/Products/Debug-iphoneos/Pods/Parse.framework/Parse

---
ld: warning: -weak_framework is treated as -framework when used with -bitcode_bundle (Xcode setting ENABLE_BITCODE=YES). Weak linking may still happen based on availability mark-up in headers
ld: warning: -weak_framework is treated as -framework when used with -bitcode_bundle (Xcode setting ENABLE_BITCODE=YES). Weak linking may still happen based on availability mark-up in headers
ld: '/Users/xxxxxx/Documents/DigitalTempusDev/graffiti/Pods/Parse/libParseLib.a(PFSQLiteDatabase.o)' 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. for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)
DirkLX
fuente
1
¿Está seguro de que ha seleccionado Enable Bitcodea NOcontra la acumulación de configuración que está utilizando (por ejemplo DEBUG)? Puede comprobarlo en project-> target-> build settings-> search enable bitcode-> set NOin DEBUG (es bueno recordar intentar actualizar las bibliotecas antes del lanzamiento de prueba, tal vez ya contenga bitcode). Entonces Edit Scheme-> Run-> compruebe si tiene DEBUGconfig atm.
Vive
1
¡BIEN! si y no. No lo puse en los objetivos POD, ese fue mi punto de vista. Tu pista me llevó allí. Gracias
DirkLX
Es bueno escucharlo :) lo publicará como una respuesta, ya que puede ser útil para otras personas.
Vive el
¿Por qué necesitamos cambiar Bitcode? Previamente no necesitamos actualizar su valor. ¿Alguna razón lógica? Gracias
msmq
Lo hice todo, pero la aplicación se bloqueó en el dispositivo con el mismo error. Estoy usando iOS 9.1. ¡Por favor ayuda!
Md Rais

Respuestas:

133

¿Está seguro de que ha seleccionado Enable Bitcodea NOcontra la acumulación de configuración que está utilizando (por ejemplo DEBUG)? Se puede comprobar que en Proyecto-> Destino-> acumulación configuración-> buscar enable bitcode-> set NOen DEBUG(bueno recordar para tratar de librerías de actualización antes del lanzamiento de prueba, tal vez que va a contener código binario ya). Luego Editar esquema -> Ejecutar -> verifique si tiene un DEBUGcajero automático de configuración.

ingrese la descripción de la imagen aquí

Vive
fuente
1
@Zorayr Como ha agregado una imagen a mi publicación: primero debe verificar la configuración de compilación de su aplicación y cambiar esta bandera en la configuración de compilación de la aplicación. Solo si no ayuda, haga lo mismo con Pods.
Vive el
3
¿Se aceptará la aplicación en la tienda de aplicaciones si Enable Bitcodeestá configurado como NO?
Ne AS
@NeAS Sí. Actualmente, no existe ningún requisito para habilitar el código de bits.
Vive el
Debe deshabilitar el código de bits para todos sus pods
Vadim Kurochkin
53

Tenga en cuenta que para los proyectos que usan CocoaPods, debe establecer ENABLE_BITCODE = NOlos objetivos del proyecto del proyecto y del contenedor de Pods.

Este error

Ld /Users/maximveksler/Library/Developer/Xcode/DerivedData/ParseUI-gwtgmlgbpobjfjfjgkiwdahqveos/Build/Products/Debug-iphoneos/ParseTwitterUtils.framework/ParseTwitterUtils normal arm64
    cd /Users/maximveksler/Developer/ParseUI-iOS/Pods
    export IPHONEOS_DEPLOYMENT_TARGET=9.0
    export PATH="/Applications/Xcode-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:/Applications/Xcode-beta.app/Contents/Developer/usr/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin"
    /Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -arch arm64 -dynamiclib -isysroot /Applications/Xcode-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.0.sdk -L/Users/maximveksler/Library/Developer/Xcode/DerivedData/ParseUI-gwtgmlgbpobjfjfjgkiwdahqveos/Build/Products/Debug-iphoneos -L/Users/maximveksler/Developer/ParseUI-iOS/Pods/ParseTwitterUtils -F/Users/maximveksler/Library/Developer/Xcode/DerivedData/ParseUI-gwtgmlgbpobjfjfjgkiwdahqveos/Build/Products/Debug-iphoneos -filelist /Users/maximveksler/Library/Developer/Xcode/DerivedData/ParseUI-gwtgmlgbpobjfjfjgkiwdahqveos/Build/Intermediates/Pods.build/Debug-iphoneos/ParseTwitterUtils.build/Objects-normal/arm64/ParseTwitterUtils.LinkFileList -install_name @rpath/ParseTwitterUtils.framework/ParseTwitterUtils -Xlinker -rpath -Xlinker @executable_path/Frameworks -Xlinker -rpath -Xlinker @loader_path/Frameworks -miphoneos-version-min=9.0 -dead_strip -fembed-bitcode-marker -ObjC -lParseTwitterUtilsLib -lsqlite3 -lz -framework AudioToolbox -framework CFNetwork -framework CoreGraphics -framework CoreLocation -framework QuartzCore -framework Security -framework StoreKit -framework SystemConfiguration -weak_framework Accounts -weak_framework Social -fobjc-arc -fobjc-link-runtime -framework AudioToolbox -framework Bolts -framework CFNetwork -framework CoreGraphics -framework CoreLocation -framework Foundation -framework Parse -framework QuartzCore -framework Security -framework StoreKit -framework SystemConfiguration -single_module -compatibility_version 1 -current_version 1.8.1 -Xlinker -dependency_info -Xlinker /Users/maximveksler/Library/Developer/Xcode/DerivedData/ParseUI-gwtgmlgbpobjfjfjgkiwdahqveos/Build/Intermediates/Pods.build/Debug-iphoneos/ParseTwitterUtils.build/Objects-normal/arm64/ParseTwitterUtils_dependency_info.dat -o /Users/maximveksler/Library/Developer/Xcode/DerivedData/ParseUI-gwtgmlgbpobjfjfjgkiwdahqveos/Build/Products/Debug-iphoneos/ParseTwitterUtils.framework/ParseTwitterUtils

ld: '/Users/maximveksler/Developer/ParseUI-iOS/Pods/ParseTwitterUtils/libParseTwitterUtilsLib.a(PFTwitterAuthenticationProvider.o)' 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. for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

fue resuelto por:

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

Maxim Veksler
fuente
¿Apple rechaza la aplicación si la enviamos con la opción Enable Bitcode = NO?
Ganesh Guturi
@ G.Ganesh por favor publique como una pregunta separada. La política varía entre tvOS y watchOS donde la respuesta es SÍ. iOS, la respuesta es actualmente no, futuro SÍ.
Maxim Veksler
@GaneshGuturi Actualmente sí, pero probablemente Apple lo cortará en algún momento en el futuro. Más explicación, por ejemplo, aquí: stackoverflow.com/a/31207170/849616 .
Vive
17

También me había enfrentado al mismo problema en Xcode7. Solución para esto:

  • ir PROJECT
  • construir Settings
  • Seleccione All Tab
  • escriba en la búsqueda Enable Bitcode
  • Update Flaga No(que estará debajo de su proyecto (segunda columna))
Harshal Wani
fuente
15

Tuve un problema similar con la biblioteca de vainas de cacao de GoogleAnalytics y la biblioteca no se estaba compilando para iPhone 6 con iOS 8.

Mi solución fue cambiar a la marca NO "Habilitar código de bits" en el destino del proyecto de la aplicación, no en el proyecto Pods.

ArturOlszak
fuente
Eso es lo que dije en el comentario a mi respuesta. Para intentar hacerlo en la configuración del proyecto, si y solo si eso no funciona, cambie al proyecto de pod.
Vive
Cambiar el destino y el proyecto para construir la configuración del código de bits NO no funciona para ARCHIVAR. Encuentra trabajo para las compilaciones de Sim. XCODE 7.0.1
ort11
11

Si su código de bits no se muestra, seleccione Todo. Cuando xcode seleccione Básico, su opción Bitcode no se muestra.

ingrese la descripción de la imagen aquí

Cuando selecciona Todo, puede ver Bitcode. Luego, configure No para la configuración de anuncios ingrese la descripción de la imagen aquí

ethemsulan
fuente
10

Solo lo configuré para mi proyecto.

MyProjectTarget -> Build Settings -> Enable Bitcode = NO

Alejandro
fuente
1
¿La aplicación será rechazada en la App Store?
Ne AS
5

Como dijo a todo el mundo, la respuesta se ajusta Enable Bitcodeal Node configuración de generación , pero creo que algunos de ustedes podrían estar interesados en hacer esto desde la línea de comandos .

Mi proyecto de Xcode está siendo generado por Unity y no quiero ninguna intervención manual en la configuración del proyecto de Xcode. Tal vez haya una forma mejor o una herramienta que pueda editar la configuración de compilación un poco como PlistBuddy le permite actualizar valores en plistarchivos. No conozco ninguna herramienta que haga esto para la configuración de compilación, así que estoy usando sed .

sed: Ejecuta reemplazos basados ​​en expresiones regulares.

Cómo establecer Enable Bitcodea Nopartir de la línea de comandos:

Aquí, el nombre de mi proyecto es Unity-iPhoneasí que ejecuto el siguiente comando desde la raíz de mi proyecto Xcode:

sed -i -e 's/ENABLE_BITCODE = YES;/ENABLE_BITCODE = NO;/g' \ 
Unity-iPhone.xcodeproj/project.pbxproj

-e - especificar comandos sed para ejecutar
-i - editar archivos en el lugar, ejecutando scripts por separado para cada archivo

Elimínelo -isi solo desea una vista previa de lo que hace;)

Tenga en cuenta que todas las configuraciones de su compilación se cambiarán usando este comando, la línea ENABLE_BITCODE = YES;apareció 6 veces en my project.pbxproj.

¡Ahora mis pasos de compilación pueden automatizarse completamente, ya que Fastlane se encarga del resto!

GabLeRoux
fuente
3

Si no encuentra el indicador enable_bitcode. Haga clic en la pestaña "Todos" en la barra de herramientas superior al lado de la barra de búsqueda. ingrese la descripción de la imagen aquí

haroon jamil
fuente
Agregue un código para explicar mejor su respuesta.
Usman Maqbool
1

pruebe este comando en la terminal si no puede cambiar la configuración de BITCODE dentro del proyecto,

xcodebuild -target "target" -configuration "configuration" ENABLE_BITCODE = NO

Jaxs_ios
fuente