Comment pouvez-vous désactiver le bitcode pour vos dépendances de projet et de cocoapod? Voici l'erreur que je reçois en essayant d'exécuter mon projet avec Xcode 7.
ne contient pas de bitcode. Vous devez le reconstruire avec le code bit activé (paramètre Xcode ENABLE_BITCODE), obtenir une bibliothèque mise à jour du fournisseur ou désactiver le code bit pour cette cible. pour l'architecture arm64
Edit: À l’origine, il ne l’a désactivé que pour l’une des cibles. Une fois, je les ai tous désactivés et j'ai pu construire avec succès.
Pour définir ce paramètre d’une manière qui ne soit pas remplacée à chaque fois que vous faites un pod install
, vous pouvez l’ajouter à votre 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
Il existe un moyen de construire les cibles de CocoaPods avec un bitcode complet. Ajoutez simplement l'option -fembed-bitcode
à OTHER_CFLAGS
de chaque:
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
Je pense que cette méthode est préférable à la désactivation du bitcode.
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
Pour désactiver le bitcode pour votre propre pod de développement uniquement, ajoutez le code ci-dessous dans le fichier pod des projets.
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
Accédez aux paramètres de construction de la cible sur laquelle vous souhaitez le désactiver. Recherchez quelque chose qui dit "Activer le bitcode", réglez-le sur Non.
Les autres réponses n'effacent pas l'indicateur de bitcode pour le projet principal. Les crochets post-installation du Cocoapod ne vous donnent pas accès au projet principal. Je pense que c'est un choix de conception. Vous devez donc rechercher le fichier de projet et le modifier à l'aide de xcodeproj . Si une bibliothèque binaire comprend un bitcode, vous devrez utiliser xcrun bitcode_strip
pour le supprimer afin de rendre le projet cohérent.
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
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