Проблема с битовым кодом Xcode при архивировании

#xcode #bitcode

Вопрос:

У меня есть модуль в моем проекте под названием GoogleWebRTC , и, по-видимому, он не Bitcode включен для сборки.

Хотя я отключаю Bitcode его в своем Podfile , который можно увидеть ниже, он не позволяет мне архивировать проект. Единственное, что работает, — это отключить Bitcode в моем основном проекте и цели.

 #bitcode enable
post_install do |installer|
  
  installer.pods_project.build_configurations.each do |config|
      config.build_settings["EXCLUDED_ARCHS[sdk=iphonesimulator*]"] = "arm64"
  end
  
  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'
      
      if target.name == "GoogleWebRTC"
        config.build_settings['ENABLE_BITCODE'] = 'NO'
        else
        config.build_settings['ENABLE_BITCODE'] = 'YES'
        if config.name == 'Release' || config.name == 'Release (Preprod)'
          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 == 'Release (Preprod)'
          cflags << '-fembed-bitcode'
          else # Debug
          cflags << '-fembed-bitcode-marker'
        end
        
        config.build_settings['OTHER_CFLAGS'] = cflags
      end
    end
  end
end
 

Проблема не возникает, когда я запускаю или создаю ее в отладке, но в выпуске она не работает и выбрасывает

'/Users/**/Projects/**/Pods/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/WebRTC' 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. file '/Users/**/Projects/**/Pods/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/WebRTC' for architecture arm64

Я не знаю, насколько полезно Bitcode включить для проекта, но, насколько я понимаю, изначально для проекта это включено. Я попробовал несколько вариантов настроек сборки как проекта, так и модуля, но единственное, что работает, — это отключение Bitcode для основного проекта и цели.

Я нашел некоторые ответы на другие темы, в которых говорится о создании библиотеки вручную с включенным битовым кодом, но все ссылки, на которые ссылаются, не работают. Возможно, уже существует альтернативный модуль, в котором уже включен встроенный биткод. Я открыт для любого рода предложений, кроме удаления GoogleWebRTC .

Комментарии:

1. «Единственное, что работает, — это отключить битовый код», так в чем же проблема? Просто сделай это.

2. Что ж, я это сделал. Но я не знаю, на что на самом деле влияет включение битового кода, и я немного обеспокоен тем, что его отключение будет иметь какие-то последствия в будущем.

3. Что ж, тогда выясните, что такое битовый код, чтобы вы могли принять обоснованное решение. Лично я никогда не включаю битовый код и думаю, что это хуже, чем глупо, но это всего лишь мнение.