actualizar ios cocoapods bitcode

ios - actualizar - ¿Deshabilitar código de bits para dependencias de proyecto y cocoapods con Xcode 7?



cocoapods swift 4 (7)

¿Cómo puede deshabilitar el código de bits para su proyecto y las dependencias de cocoapod? Aquí está el error que obtengo cuando intento ejecutar mi proyecto con Xcode 7.

no contiene código de bits Debe reconstruirlo con el código de bits habilitado (configuración de Xcode ENABLE_BITCODE), obtener una biblioteca actualizada del proveedor o deshabilitar el código de bits para este objetivo. para arquitectura arm64

Editar: Originalmente solo lo deshabilitó para uno de los objetivos. Una vez que los desactivé todos y pude construir con éxito.


Deshabilitar código de bits en el proyecto principal y pods

Las otras respuestas no borran el indicador de código de bits para el proyecto principal. Los ganchos posteriores a la instalación del Cocoapod no le dan acceso al proyecto principal, creo que esta es una opción de diseño, por lo que debe encontrar el archivo del proyecto y modificarlo usando xcodeproj . Si una biblioteca binaria incluye código de bits, deberá usar xcrun bitcode_strip para eliminar el código de bits para que el proyecto sea coherente.

Dos funciones de ayuda

def disable_bitcode_for_target(target) target.build_configurations.each do |config| config.build_settings[''ENABLE_BITCODE''] = ''NO'' remove_cflags_matching(config.build_settings, [''-fembed-bitcode'', ''-fembed-bitcode-marker'']) end end def remove_cflags_matching(build_settings, cflags) existing_cflags = build_settings[''OTHER_CFLAGS''] removed_cflags = [] if !existing_cflags.nil? cflags.each do |cflag| existing_cflags.delete_if { |existing_cflag| existing_cflag == cflag && removed_cflags << cflag } end end if removed_cflags.length > 0 build_settings[''OTHER_CFLAGS''] = existing_cflags end end

Fase posterior a la instalación

post_install do |installer| project_name = Dir.glob("*.xcodeproj").first project = Xcodeproj::Project.open(project_name) project.targets.each do |target| disable_bitcode_for_target(target) end project.save installer.pods_project.targets.each do |target| disable_bitcode_for_target(target) end installer.pods_project.save end


Actualice para cocoapods 1.7+ si ha habilitado la generación múltiple de xcodeproj:

install! ''cocoapods'', :generate_multiple_pod_projects => true <Pod list section> post_install do |installer| installer.pod_target_subprojects.each do |subproject| subproject.targets.each do |target| target.build_configurations.each do |config| config.build_settings[''ENABLE_BITCODE''] = ''NO'' end end end end


Hay una manera de construir los objetivos de CocoaPods con código de bits completo. Simplemente agregue la opción -fembed-bitcode a OTHER_CFLAGS de cada uno:

post_install do |installer| installer.pods_project.targets.each do |target| target.build_configurations.each do |config| cflags = config.build_settings[''OTHER_CFLAGS''] || [''$(inherited)''] cflags << ''-fembed-bitcode'' config.build_settings[''OTHER_CFLAGS''] = cflags end end end

Creo que de esta manera es mejor que deshabilitar el código de bits.


Para desactivar el código de bits para su propio pod de desarrollo, solo agregue este código a continuación en el archivo pod de los proyectos.

post_install do |installer| installer.pods_project.targets.each do |target| if target.name == "YOUR SDK TARGET NAME" puts "Processing for disable bit code in YOUR SDK TARGET NAME SDK" target.build_configurations.each do |config| config.build_settings[''ENABLE_BITCODE''] = ''NO'' end end end end


Para establecer esta configuración de manera que no se anule cada vez que realice una pod install , puede agregar esto a su Podfile

post_install do |installer| installer.pods_project.targets.each do |target| target.build_configurations.each do |config| config.build_settings[''ENABLE_BITCODE''] = ''NO'' end end end


Vaya a la configuración de compilación para el objetivo en el que desea deshabilitarlo. Busque algo que diga "Habilitar código de bits", configúrelo en No.


project ''frameworkTest.xcodeproj'' # Uncomment this line to define a global platform for your project platform :ios, ''8.0'' target ''frameworkTest'' do # Uncomment this line if you''re using Swift or would like to use dynamic frameworks # use_frameworks! # Pods for frameworkTest source ''https://github.com/CocoaPods/Specs.git'' #zip files libs pod ''SSZipArchive'' #reachability pod ''Reachability'' end #bitcode enable post_install do |installer| installer.pods_project.targets.each do |target| target.build_configurations.each do |config| # set valid architecture config.build_settings[''VALID_ARCHS''] = ''arm64 armv7 armv7s i386 x86_64'' # build active architecture only (Debug build all) config.build_settings[''ONLY_ACTIVE_ARCH''] = ''NO'' config.build_settings[''ENABLE_BITCODE''] = ''YES'' if config.name == ''Release'' || config.name == ''Pro'' config.build_settings[''BITCODE_GENERATION_MODE''] = ''bitcode'' else # Debug config.build_settings[''BITCODE_GENERATION_MODE''] = ''marker'' end cflags = config.build_settings[''OTHER_CFLAGS''] || [''$(inherited)''] if config.name == ''Release'' || config.name == ''Pro'' cflags << ''-fembed-bitcode'' else # Debug cflags << ''-fembed-bitcode-marker'' end config.build_settings[''OTHER_CFLAGS''] = cflags end end end