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

라이브러리가 비트 코드없이 컴파일되었지만 비트 코드 옵션이 프로젝트 설정에서 활성화되어 있습니다. 말 NOEnable 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.