Xcode 7에서 프로젝트 및 cocoapods 종속성에 대한 비트 코드를 비활성화 하시겠습니까?
프로젝트 및 cocoapod 종속성에 대해 비트 코드를 비활성화하려면 어떻게해야합니까? 다음은 Xcode 7로 프로젝트를 실행하려고 할 때 발생하는 오류입니다.
비트 코드를 포함하지 않습니다. 비트 코드를 활성화하여 (Xcode 설정 ENABLE_BITCODE) 다시 빌드하거나, 공급 업체로부터 업데이트 된 라이브러리를 얻거나,이 대상에 대해 비트 코드를 비활성화해야합니다. arm64 아키텍처 용
편집 : 원래 대상 중 하나에 대해서만 비활성화했습니다. 일단 모두 비활성화하고 성공적으로 구축 할 수있었습니다.
당신이 할 때마다 오버라이드 (override)하지 않는 방식에서이 설정을 설정하려면 pod install
이를 위해 추가 할 수 있습니다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
전체 비트 코드로 CocoaPods의 타겟을 빌드하는 방법이 있습니다. 각 항목 에 -fembed-bitcode
옵션을 추가 하기 만하면 OTHER_CFLAGS
됩니다.
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
이 방법이 비트 코드를 비활성화하는 것보다 낫다고 생각합니다.
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
비활성화하려는 대상의 빌드 설정으로 이동하십시오. "비트 코드 활성화"라고 표시된 항목을 검색하고 아니요로 설정합니다.
메인 프로젝트 및 포드에서 비트 코드 비활성화
다른 답변은 주 프로젝트의 비트 코드 플래그를 지우는 데 실패합니다. Cocoapod의 Post-Install 후크는 메인 프로젝트에 대한 액세스를 제공하지 않습니다. 이것이 디자인 선택이라고 생각하므로 프로젝트 파일을 찾아 xcodeproj를 사용하여 수정해야합니다 . 바이너리 라이브러리에 비트 코드가 포함 된 xcrun bitcode_strip
경우 프로젝트를 일관성있게 만들기 위해 비트 코드를 제거하는 데 사용해야 합니다.
두 가지 도우미 기능
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
자신의 개발 포드에 대한 비트 코드를 비활성화하려면 프로젝트의 포드 파일에 아래 코드 만 추가하십시오.
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
여러 xcodeproj 생성을 활성화 한 경우 cocoapods 1.7 이상에 대한 업데이트 :
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
ReferenceURL : https://stackoverflow.com/questions/32640149/disable-bitcode-for-project-and-cocoapods-dependencies-with-xcode-7
'programing' 카테고리의 다른 글
Sass :: SyntaxError : 가져올 파일을 찾을 수 없거나 읽을 수 없음 : bootstrap-sprockets (0) | 2021.01.16 |
---|---|
Charts.js는 통화와 천 단위 구분자로 Y 축 서식 지정 (0) | 2021.01.16 |
C에서 포인터가 가리키는 함수를 결정합니까? (0) | 2021.01.16 |
Kubernetes를 사용하여 하나의 yaml 파일에 여러 명령을 설정하는 방법은 무엇입니까? (0) | 2021.01.16 |
Ubuntu에서 사용자를 어떻게 추가합니까? (0) | 2021.01.16 |