Xcode 7 및 ENABLE_BITCODE = YES 설정이 작동하지 않습니다.


96

Xcode의 새로운 ENABLE_BITCODE 설정에 대한 여러 스레드를 따라 갔고 가능한 한 많이 시도했지만 (내가 xcode 전문가가 아니라는 것을 인정) 여전히 내 테스트 전화에서 사용하기 위해 프로젝트를 컴파일 할 수 없습니까?

내 앱은 시뮬레이터에서 잘 실행되지만 테스트를 위해 iPhone에 배포 할 수 없습니다. 후자의 경우 iOS 9 베타를 설치했습니다.

이제 여기에 내가받은 오류 메시지가 있습니다. 설정이 내 프로젝트의 일부인 PARSE.com lib에 영향을 미치지 않는 것 같습니다. 프로젝트를 휴대폰에 배포하려면 어떻게해야합니까? 조언을 해주셔서 감사합니다.

    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)

1
사용중인 빌드 구성 Enable Bitcode에 NO대해 선택 DEBUG하셨습니까 (예 :) ? 프로젝트 enable bitcode-> 대상- > 빌드 설정 - > 검색 -> NODEBUG 에서 확인할 수 있습니다 (테스트 릴리스 전에 libs를 업데이트하는 것을 기억하는 것이 좋습니다. 이미 비트 코드가 포함되어있을 수도 있습니다). 그런 다음 Edit Scheme-> Run-> DEBUGconfig atm 이 있는지 확인하십시오 .
— Vive

1
잘! 예 그리고 아니오. 나는 그것을 POD 타겟에 설정하지 않았습니다. 당신의 힌트가 저를 거기에 가져 왔습니다. 감사합니다
— DirkLX 2015

듣기 좋습니다 :) 다른 사람들에게 유용 할 수 있으므로 답변으로 게시 할 것입니다.
— Vive

비트 코드를 변경해야하는 이유는 무엇입니까? 이전에는 값을 업데이트 할 필요가 없습니다. 논리적 이유가 있습니까? 감사합니다
— msmq 2015 년

모두했지만 여전히 동일한 오류로 장치에서 앱 충돌이 발생했습니다. iOS 9.1을 사용하고 있습니다. 도와주세요!
— Md Rais

답변:


133

사용중인 빌드 구성 Enable Bitcode에 NO대해 선택 DEBUG하셨습니까 (예 :) ? 프로젝트 enable bitcode-> 대상- > 빌드 설정 - > 검색 -> 설정 NO에서 확인할 수 있습니다 DEBUG(테스트 릴리스 전에 libs 업데이트를 시도하는 것이 좋습니다. 이미 비트 코드가 포함되어있을 수 있습니다). 그런 다음 구성표 편집-> 실행-> DEBUG구성 atm 이 있는지 확인하십시오 .

여기에 이미지 설명 입력


1
@Zorayr 내 게시물에 이미지를 추가 했으므로 먼저 앱 빌드 설정을 확인하고 앱 빌드 설정에서이 플래그를 변경해야합니다. 도움이되지 않는 경우에만 Pod로 똑같이하십시오.
— Vive

3
가로 Enable Bitcode설정된 경우 앱 스토어에서 애플리케이션이 수락 NO됩니까?
— Ne AS

@NeAS 예. 현재는 비트 코드를 활성화 할 필요가 없습니다.
— Vive

모든 포드에 대해 비트 코드를 비활성화해야합니다
— Vadim Kurochkin

53

CocoaPods를 사용 ENABLE_BITCODE = NO하는 프로젝트의 경우 프로젝트 및 Pods 컨테이너 프로젝트 대상 모두에 설정해야합니다 .

이 오류

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)

해결 된 사람 :

여기에 이미지 설명 입력

여기에 이미지 설명 입력


Enable Bitcode = NO 옵션으로 제출하면 Apple에서 앱을 거부합니까?
— Ganesh Guturi 2015 년

@ G.Ganesh는 별도의 질문으로 게시 해주세요. 정책은 tvOS와 watchOS에 따라 다르며 대답이 '예'입니다. iOS는 현재 아니오, 미래는 예입니다.
— 맥심 Veksler

@GaneshGuturi 현재는 그렇습니다. 그러나 아마도 애플은 미래에 그것을 잘라낼 것입니다. 자세한 설명은 다음과 같습니다. stackoverflow.com/a/31207170/849616 .
— Vive

17

나는 또한 Xcode7에서 같은 문제에 직면했습니다. 이에 대한 해결책 :

  • 이동 PROJECT
  • 짓다 Settings
  • 고르다 All Tab
  • 검색어 입력 Enable Bitcode
  • Update Flag받는 사람 No(프로젝트 아래 (두 번째 열))

15

GoogleAnalytics cocoa pod 라이브러리와 비슷한 문제가 있었고 라이브러리가 iOS 8이 설치된 iPhone 6 용으로 컴파일되지 않았습니다.

내 해결책은 Pods 프로젝트가 아닌 애플리케이션 프로젝트의 대상에서 "Enable Bitcode"플래그를 사용하지 않는 것입니다.


그것이 내 대답에 대한 의견에서 말한 것입니다. 프로젝트 설정에서 시도하려면 작동하지 않는 경우에만 포드 프로젝트로 전환하십시오.
— Vive

대상 및 프로젝트를 빌드 설정 비트 코드 NO로 전환하면 ARCHIVING에서 작동하지 않습니다. Sim 빌드에서 작동합니까? XCODE 7.0.1
— ort11

11

비트 코드가 표시되지 않으면 모두를 선택하십시오. xcode가 Basic을 선택하면 Bitcode 옵션이 표시되지 않습니다.

여기에 이미지 설명 입력

All을 선택하면 Bitcode를 볼 수 있습니다. 그런 다음 광고 구성에 대해 아니오를 설정하십시오. 여기에 이미지 설명 입력


10

내 프로젝트를 위해 설정했습니다.

MyProjectTarget-> 빌드 설정-> 비트 코드 활성화 = NO


1
앱 스토어에서 신청이 거부 되나요?
— Ne AS

5

모두가 말했듯이, 답이되는 설정 Enable Bitcode에 No빌드 설정에서 ,하지만 난 당신의 일부가에서이 일에 관심이있을 것 같아요 명령 행 .

내 Xcode 프로젝트는 Unity에서 생성되고 있으며 Xcode 프로젝트 설정에 대한 수동 개입을 원하지 않습니다. PlistBuddy를 사용하여 plist파일의 값을 업데이트 하는 것과 같은 빌드 설정을 편집 할 수있는 더 좋은 방법이나 도구가있을 수 있습니다. 빌드 설정을 위해이 작업을 수행하는 도구를 모르기 때문에 sed를 사용하고 있습니다.

sed : 정규식을 기반으로 대체를 실행합니다.

어떻게 설정 Enable Bitcode에 No명령 줄에서 :

여기에서 내 프로젝트 이름은 Unity-iPhoneXcode 프로젝트의 루트에서 다음 명령을 실행합니다.

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

-e-실행할 sed 명령 지정 -i-
파일을 내부 편집, 각 파일에 대해 개별적으로 스크립트 실행

-i그것이하는 일의 미리보기 만 원한다면 제거하십시오 ;)

참고 모든 빌드 구성이 명령을 사용하여 변경됩니다은 라인 ENABLE_BITCODE = YES;내에서 6 번 나타났다 project.pbxproj.

이제 fastlane 이 나머지 작업을 처리 하므로 내 빌드 단계를 완전히 자동화 할 수 있습니다 !


3

enable_bitcode 플래그를 찾지 못한 경우. 검색 창 옆의 상단 툴바에서 "모두"탭을 클릭합니다. 여기에 이미지 설명 입력


답변을 더 잘 설명하기 위해 코드를 추가하세요.
— Usman Maqbool

1

프로젝트에서 BITCODE 설정을 변경할 수없는 경우 터미널에서이 명령을 시도하십시오.

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.