Xcode 빌드 옵션의 영향 "비트 코드 활성화" 예/아니오
어제 저는 parse.com 라이브러리에 관한 많은 경고를 받았습니다.
긴급: '[path]/Parse.framework/Parse(PFAnalytics.o)'가 비트 코드 없이 빌드되었기 때문에 모든 비트 코드가 삭제됩니다.비트 코드를 활성화하여 다시 빌드해야 합니다(Xcode 설정 ENABLE_B).ITCODE)에서 벤더로부터 갱신된 라이브러리를 입수하거나 이 타겟의 비트 코드를 무효로 합니다.주의: 이것은 향후 에러가 됩니다.
이 답변으로 경고를 해제할 수 있다는 것은 알고 있습니다만, 앱스토어 제출이나 실제 앱 퍼포먼스에 악영향을 미칠까 생각하고 있습니다.
Xcode가 비트코드에 대해 알려드립니다.
이 설정을 활성화하면 대상 또는 프로젝트를 지원하는 플랫폼 및 아키텍처의 컴파일 중에 대상 또는 프로젝트가 비트 코드를 생성해야 함을 나타냅니다.아카이브 빌드의 경우 앱 스토어에 제출하기 위해 링크된 바이너리로 비트 코드가 생성됩니다.다른 빌드의 경우 컴파일러와 링커는 코드가 비트코드 생성 요건을 준수하는지 여부를 확인하지만 실제 비트코드는 생성하지 않습니다.[활성화_B]IT코드]
하지만 나는 이 텍스트에서 정말 유용한 정보를 얻지 못하고 있다.
- 링크된 답변을 사용하여 향후 AppStore 제출에 영향을 주지 않고 문제를 회피할 수 있습니까?
- 「 」가 죠?
ENABLE_BITCODE
실제로 그렇게 됩니다.앞으로 이것이 선택사항이 아닌 요건이 됩니다. - 활성화/비활성화 시 퍼포먼스에 영향이 있습니까?
- ENABLE_B란ITCODE는 실제로 유효합니다.앞으로 이것이 옵션 이외의 요건입니까?
어느 정도 수준에서 답을 찾고 있는지 잘 모르니 잠깐 여행을 떠나보자.이 중 일부는 이미 알고 계실 수도 있습니다.
가 Xcode를 호출합니다.clang
C 및 "C"의 경우swift
/swiftc
스위프트 타겟을 위해.두 컴파일러 모두 앱을 중간 표현(IR)으로 컴파일합니다.IR 중 하나가 비트 코드입니다.이 IR에서 LLVM이라는 프로그램이 x86 32 및 64비트 모드(시뮬레이터용)와 arm6/arm7/arm7s/arm64(디바이스용)에 필요한 바이너리를 계승하여 만듭니다.일반적으로 이러한 모든 바이너리는 팻 바이너리라고 하는 단일 파일로 묶입니다.
ENABLE_BITCODE 옵션은 이 마지막 단계를 생략합니다.IR 비트 코드 바이너리로 앱 버전을 만듭니다.이 제품에는 여러 가지 훌륭한 기능이 있지만, 한 가지 큰 단점은 어디에서도 실행할 수 없다는 것입니다.비트코드 바이너리를 가진 앱을 실행하려면 비트코드를 다시 컴파일해야 합니다(어셈블리 또는 트랜스코드화 가능). 올바른 동사)를 x86 또는 ARM 바이너리로 변환했는지 모르겠습니다.
앱스토어에 비트코드 앱이 제출되면 애플은 이 마지막 단계를 수행하고 완성된 바이너리를 만듭니다.
현재 비트코드 앱은 선택 사항이지만, 역사를 보면 애플은 선택 사항들을 요구 사항으로 전환했습니다(64비트 지원 등).이 작업에는 보통 몇 년이 걸리기 때문에 서드파티 개발자(Parse 등)는 갱신할 시간이 있습니다.
- 향후 앱스토어 제출에 악영향을 주지 않고 위의 방법을 사용할 수 있습니까?
네, ENABLE_B를 끌 수 있습니다.ITCODE 등 모든 것이 전과 같이 동작합니다.애플이 비트코드 앱을 앱스토어의 요구조건으로 만들 때까지 당신은 괜찮을 것입니다.
- 활성화/비활성화 시 퍼포먼스에 영향이 있습니까?
그것을 유효하게 하는 것에 의한 퍼포먼스에 악영향은 없습니다만, 테스트용 앱의 사내 배포는 복잡해질 가능성이 있습니다.
긍정적인 영향에 대해서는… 글쎄요, 그건 복잡합니다.
App Store에서 배포하기 위해 Apple은 팻 바이너리가 있는 하나의 앱 대신 각 머신 아키텍처(arm6/arm7/arm7s/arm64)에 대해 별도의 버전의 앱을 만듭니다.이는 iOS 기기에 설치된 앱이 더 작아진다는 것을 의미합니다.
게다가 비트 코드가 재컴파일 되었을 때(어셈블리 또는 트랜스코드되었을 가능성이 있습니다만, 올바른 동사를 알 수 없습니다) 최적화되어 있습니다.LLVM은 항상 보다 나은 최적화를 위해 노력하고 있습니다.이론적으로 앱스토어는 LLVM의 새로운 릴리스마다 앱스토어에 별도의 버전을 재작성하여 최신 LLVM 기술로 앱을 다시 최적화할 수 있습니다.
"All"을 선택하여 활성화 비트 코드 빌드 설정을 찾습니다.
비트코드는 iOS 9의 새로운 기능입니다.
비트 코드는 컴파일된 프로그램의 중간 표현입니다.비트코드가 포함된 iTunes Connect에 업로드한 앱은 앱스토어에서 컴파일 및 링크됩니다.비트코드를 포함하면 애플은 향후 새로운 버전의 앱을 스토어에 제출할 필요 없이 앱 바이너리를 다시 최적화할 수 있습니다.
참고: iOS 앱의 경우 비트코드가 기본이지만 옵션입니다.비트코드를 제공하는 경우 앱 번들의 모든 앱과 프레임워크에 비트코드를 포함해야 합니다.시계용OS 어플리케이션, 비트코드 필요
따라서 앱의 모든 프레임워크에서 비트 코드가 활성화될 때까지 비트 코드를 비활성화해야 합니다.
비트코드는 크래시 보고를 어렵게 합니다.다음은 HockeyApp의 인용문입니다(다른 충돌 보고 솔루션에도 해당).
앱을 앱스토어에 업로드하고 "비트코드" 체크박스를 켠 채로 두면 애플은 해당 비트코드 빌드를 사용하고 단말기에 배포하기 전에 해당 비트코드를 다시 컴파일합니다.이것에 의해, 바이너리는 새로운 UUID를 취득해, 대응하는 dSYM 를 Xcode 를 사용해 다운로드하는 옵션이 있습니다.
주의: 답변은 2016년 1월에 최신 변경 사항을 반영하여 편집되었습니다.
비트 코드는 XCode 14 베타 버전에서는 사용되지 않습니다.
https://developer.apple.com/documentation/xcode-release-notes/xcode-14-release-notes
Xcode 14부터는 Watch OS 및 tvOS 어플리케이션에서 비트코드가 필요 없게 되어 앱스토어는 Xcode 14로부터의 비트코드 송신을 받지 않게 되었습니다.
Xcode는 더 이상 기본적으로 비트 코드를 빌드하지 않으며 프로젝트가 비트 코드를 명시적으로 활성화하면 경고 메시지를 생성합니다. "Building with bitcode is decrequired.비트 코드를 비활성화하려면 프로젝트 및/또는 대상 설정을 업데이트하십시오."비트 코드를 사용한 빌드 기능은 향후 Xcode 릴리즈에서 삭제될 예정입니다.비트 코드가 포함된 IPA는 앱 스토어에 전송되기 전에 비트 코드를 제거합니다.과거의 비트 코드 송신에 관한 디버깅 기호는 다운로드 할 수 있습니다.(86118779)
비트코드에 대해 궁금해 하시는 분들은 더 이상 필요 없을 것 같습니다.
@vj9thx.xcode 7로 업데이트 합니다.같은 에러가 표시됩니다.'아니오' 설정 후 빌드
'아니오'로 설정하면 잘 동작합니다.
- 향후 앱스토어 제출에 악영향을 주지 않고 위의 방법을 사용할 수 있습니까?
비트 코드를 사용하면 다른 빌드를 제출할 필요 없이 애플이 앱을 최적화할 수 있습니다.그러나 앱 번들의 모든 프레임워크와 앱이 이 기능을 사용하도록 설정되어 있는 경우에만 이 기능을 사용할 수 있습니다.가지고 있는 것은 도움이 되지만, 가지고 있지 않은 것은 부정적인 영향을 미쳐서는 안 된다.
- ENABLE_B란ITCODE는 실제로 유효합니다.앞으로 이것이 옵션 이외의 요건입니까?
iOS 앱의 경우 비트코드가 기본이지만 옵션입니다.비트코드를 제공하는 경우 앱 번들의 모든 앱과 프레임워크에 비트코드를 포함해야 합니다.시계용OS 앱, 비트 코드가 필요합니다.
- 활성화/비활성화 시 퍼포먼스에 영향이 있습니까?
앱스토어와 운영체제는 iOS와 워치의 설치를 최적화합니다.설치 공간을 최소화하면서 사용자의 특정 기기의 기능에 맞게 앱을 제공함으로써 OS 앱을 제공합니다.앱 씬화라고 하는 이 최적화 기능을 통해 가장 많은 장치 기능을 사용하고 최소한의 디스크 공간을 차지하며 향후 Apple에서 적용할 수 있는 업데이트를 수용할 수 있는 앱을 만들 수 있습니다.다운로드 속도가 빨라지고 다른 앱과 콘텐츠를 저장할 수 있는 공간이 늘어나 사용자 환경이 향상됩니다.
퍼포먼스에 영향은 없습니다.
링크된 답변을 사용하여 향후 AppStore 제출에 영향을 주지 않고 문제를 회피할 수 있습니까?
네.
ENABLE_B란ITCODE는 실제로 유효합니다.앞으로 이것이 옵션 이외의 요건입니까?
ENABLE_BITCODE
는 코드의 중간 표현을 바이너리에 추가합니다., tvOS는 필수입니다.
활성화/비활성화 시 퍼포먼스에 영향이 있습니까?
프로젝트를 아카이브할 때 Xcode 빌드 및 메모리 풋프린트에 영향을 줍니다.
- Xcode 14부터는 Watch OS 및 tvOS 어플리케이션에서 비트코드가 필요 없게 되어 앱스토어는 Xcode 14로부터의 비트코드 송신을 받지 않게 되었습니다.
- Xcode는 더 이상 기본적으로 비트 코드를 빌드하지 않으며 프로젝트가 비트 코드를 명시적으로 활성화하면 경고 메시지를 생성합니다. "Building with bitcode is decrequired.비트 코드를 비활성화하려면 프로젝트 및/또는 대상 설정을 업데이트하십시오."비트 코드를 사용한 빌드 기능은 향후 Xcode 릴리즈에서 삭제될 예정입니다.비트 코드가 포함된 IPA는 앱 스토어에 전송되기 전에 비트 코드를 제거합니다.디버깅 기호는 기존 비트 코드를 전송하기 위해 App Store Connect/Test Flight에서만 다운로드할 수 있으며 Xcode 14로 전송한 경우에는 더 이상 사용할 수 없습니다. (86118779)
언급URL : https://stackoverflow.com/questions/31088618/impact-of-xcode-build-options-enable-bitcode-yes-no
'programing' 카테고리의 다른 글
Ruby에서 어레이의 일부를 반환하려면 어떻게 해야 합니까? (0) | 2023.04.09 |
---|---|
Bash에서 길이가 0이 아닌 문자열 테스트: [ -n "$var" ]또는 [$var"] (0) | 2023.04.09 |
목표 C의 MD5 알고리즘 (0) | 2023.04.09 |
루프 vba에서 다음 반복으로 건너뜁니다. (0) | 2023.04.09 |
git 분기를 오리진 버전으로 재설정해야 합니다. (0) | 2023.04.09 |