iOS 9의 새로운 경고 :“모든 비트 코드가 삭제됩니다”


387

내 앱의 Google 프레임 워크에 대한이 새로운 경고가 있습니다.

(null) : 긴급 : '/ Users / myname / Library / Mobile Documents / com ~ apple ~ CloudDocs / foldername / appname / GoogleMobileAds.framework / GoogleMobileAds (GADSlot + AdEvents.o)'가 비트 코드없이 빌드되었으므로 모든 비트 코드가 삭제됩니다. . 비트 코드 활성화 (Xcode 설정 ENABLE_BITCODE)로 다시 빌드하거나 공급 업체로부터 업데이트 된 라이브러리를 얻거나이 대상에 대한 비트 코드를 비활성화해야합니다. 참고 : 이것은 나중에 오류가 될 것입니다.

Xcode 7 은이 같은 개념에 대해 약 204 개의 경고를 표시 하며이 문제를 해결할 수 없습니다. 또한 내 앱에서 네트워크에 액세스하는 데 문제가 있습니다. 이것은 디버깅 영역의 오류입니다.

-canOpenURL : URL에 대해 실패 : "kindle : // home"-오류 : "이 응용 프로그램은 체계 종류를 쿼리 할 수 ​​없습니다"

iOS 8에는 이러한 문제가 모두 없었습니다.


Xcode 대상에서 비트 코드를 활성화 했습니까?
— Droppy

죄송합니다. 처음 사용하는 방법을 알려주세요.
— C.Farrugia 2016 년

나는 그것을 한 적이 없지만 의도적으로 설정해야 할 것 같습니다. 당신은 그렇게 한 것 같습니다.
— Droppy

4
@Droppy AFAIK 설정은 기본적으로 켜져 있지만 프로젝트 설정에서 언제든지 비활성화 할 수 있습니다.
— HAS

나는 그들을 끄고 모든 경고가 사라졌다. 나는 약간의 연구를 했으며이 오류를 끄려면 Google에서 프레임 워크를 업데이트해야합니다. 지금까지는 끄면 작동합니다. 누구든지 -canOpenURL : URL에 대해 실패했습니다 : "kindle : // home"-오류 : "이 응용 프로그램은 체계 종류를 쿼리 할 수 ​​없습니다"? 이것은 Xcode가 무엇에 대해 이야기하고 있는지 전혀 모른다
— C.Farrugia

답변:


1023

라이브러리가 비트 코드없이 컴파일되었지만 비트 코드 옵션이 프로젝트 설정에서 활성화되어 있습니다. 말 NO에 Enable Bitcode경고를 제거 할 대상 빌드 설정 및 라이브러리 빌드 설정한다.

비트 코드 활성화가 필요한지 궁금한 경우 :

iOS 앱의 경우 비트 코드가 기본값이지만 선택 사항입니다. watchOS 및 tvOS 앱의 경우 비트 코드가 필요합니다. 비트 코드를 제공하는 경우 앱 번들의 모든 앱 및 프레임 워크 (프로젝트의 모든 대상)에 비트 코드가 포함되어야합니다.

https://help.apple.com/xcode/mac/current/#/devbbdc5ce4f


@Centurion 이전 Google Analytics 라이브러리는 더 이상 사용되지 않으며 xcode 7 / ios9로 컴파일되지 않습니다
— zonabi

1
@goelv 예, 비트 코드가 비활성화 된 앱을 제출할 수 있어야합니다. 지금은 선택 사항입니다. 나중에 필요할 수 있습니다.
— zonabi

2
보관을 위해 나를 위해 일하지 않았습니다. 사전 XCODE 7 프로젝트가 제대로 작동했지만 비트 코드 사용이 NO로 설정되어 있어도 보관할 수 없습니다. 이것은 AWS 라이브러리 용입니다.
— ort11

1
모든 대상에서 Bitcode를 비활성화 한 후에도 여전히 오류가 발생합니다.
— datWooWoo

110

Xcode 7 이후에는 비트 코드 옵션이 기본적으로 활성화됩니다. 라이브러리가 비트 코드없이 컴파일되었지만 비트 코드 옵션이 프로젝트 설정에서 활성화 된 경우 다음을 수행 할 수 있습니다.

  1. 비트 코드로 라이브러리를 업데이트하십시오.
  2. 대상 빌드 설정 에서 비트 코드 를 활성화하려면 NO라고 말 하십시오.

여기에 이미지 설명을 입력하십시오

그리고 라이브러리 빌드 설정은 경고를 제거합니다.

자세한 내용 은 개발자 라이브러리의 비트 코드 설명서 를 참조하십시오 .

그리고 WWDC 2015 세션 102 : "플랫폼 상태"

여기에 이미지 설명을 입력하십시오


42

그 문제를 피하기위한 나의 경우 :

  1. 더 낮은 버전이 아닌 Xcode 7을 다루고 있는지 확인하십시오 . 하위 버전에서는이 플래그가 없습니다.

  2. 설정 : 프로젝트> 빌드 설정> 모두> 빌드 옵션> 비트 코드 사용 = 아니오

여기에 이미지 설명을 입력하십시오


2
따라서 XCode7과 EnableBitcode를 YES로 설정하여 프로젝트에 포함 된 라이브러리를 다시 컴파일해야합니다. 타사와 함께 작업하는 경우 매우 복잡합니다.
— Javier Calatrava Llavería

15

canOpenUrliOS 9의 방법 (개인 정보 보호 정책으로 인해)이 변경되었으며 더 이상 사용할 수 없습니다. 배너 공급자는 설치된 앱을 확인하여 이미 설치된 앱의 배너가 표시되지 않도록합니다.

그것은 모든 로그 문장을 제공합니다

-canOpenURL : URL에 대해 실패 : "kindle : // home"-오류 : "이 응용 프로그램은 체계 종류를 쿼리 할 수 ​​없습니다"

공급자는이를 위해 논리를 업데이트해야합니다.

설치된 앱 / 사용 가능한 구성표를 쿼리해야하는 경우 info.plist파일 에 추가해야 합니다.

'LSApplicationQueriesSchemes'키를 plist에 배열로 추가하십시오. 그런 다음 'kindle'과 같은 배열에 문자열을 추가하십시오.

물론 이것은 실제로 배너 광고에 대한 옵션은 아니지만 (동적이기 때문에) 자신의 앱이나 Twitter 및 Facebook과 같은 특정 다른 앱에 대해 그런 식으로 쿼리 할 수 ​​있습니다.

canOpenUrl : 메소드의 문서 canOpenUrl :

LSApplicationQueriesSchemes 키에 대한 설명서


정적 라이브러리가 부모 앱 딥 링크를 검사한다고 가정하면 정적 라이브러리에서 'LSApplicationQueriesSchemes'예외를 사용하는 방법은 무엇입니까? 일반적으로 Info.plist가 없습니다.
— loretoparisi

라이브러리가 부모 외부의 응용 프로그램을 확인 해야하는 경우 부모는 info.plist에 URL을 정의해야하므로 프레임 워크에 대해 문서화해야합니다. canOpenUrl은 또한 당신이 (내가 가정) 것보다 더 상위 응용 프로그램은 그것을 처리 할 수있는 것입니다 반환하지 않는 경우도의 Info.plist에 그 포함
— 사렌 인덴

13

당신이 사용하는 경우 CocoaPods을 하고 모든 라이브러리를 사용하지 않도록 비트 코드 싶지는 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

8

고지 사항 : 자동화 된 프로세스가 필요한 지속적인 통합 워크 플로를 지원하는 사용자를위한 것입니다 . 그렇지 않은 경우 Javier의 답변에 설명 된대로 Xcode를 사용하십시오 .

이것은 ENABLE_BITCODE = NO명령 줄을 통해 설정하는 데 도움이되었습니다 .

find . -name *project.pbxproj | xargs sed -i -e 's/\(GCC_VERSION = "";\)/\1\ ENABLE_BITCODE = NO;/g'

이것은 Xcode 버전에서 불안정 할 수 있습니다. Xcode 7.0.1 및 Cordova 4.0 프로젝트의 일부로 테스트되었습니다.



-2

이 문제는 최근 Google에서 수정했습니다 (2010 년 11 월) . https://code.google.com/p/analytics-issues/issues/detail?id=671를 참조 하십시오 . 그러나 좋은 수정으로 더 많은 버그가 발생합니다. :)

https://developers.google.com/analytics/devguides/collection/ios/v2에 나열된 초기화 방법을 따라야합니다 .

최신 지침은 포드에 포함되지 않은 유틸리티를 참조하므로 두통을 줄 것입니다. 아래는 cocoapod와 함께 실패합니다.

// Configure tracker from GoogleService-Info.plist.
NSError *configureError;
[[GGLContext sharedInstance] configureWithError:&configureError];
NSAssert(!configureError, @"Error configuring Google services: %@", configureError);
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.