source

Xcode 5 and iOS 7 : 아키텍처와 유효한 아키텍처

factcode 2023. 10. 16. 22:07
반응형

Xcode 5 and iOS 7 : 아키텍처와 유효한 아키텍처

5.Xcode 5에서 새로운 를 시작합니다.다를 .iOS SDK 7t입니다.iOS 5.0새과 같은 Xcode에서 새 프로젝트를 만들고 배포 대상을 5.0으로 변경하려는 순간 다음과 같은 메시지가 나타납니다.

Applications including an arm64 slice are not compatible with versions of iOS
prior to 6.0
Adjust your Architectures build setting to not include arm64 in order to deploy
to releases prior to iOS 6.0.

그래서 아키텍처가 다음으로 변경되었습니다.Standard(64비트 없음).나는 컴파일을 하고 달리기도 하지만 방금 무슨 일이 일어났는지 정말로 이해하지 못합니다.

죠와 ?Architectures그리고.Valid architecturesXcode 프로젝트 빌드 설정의 설정?
하면.Architectures64비트를 제외하려면 64비트 iPhone 또는 iOS Simulator에서 앱을 실행하면 어떻게 됩니까? (작동하는 것을 알고 있지만 아래에서 무슨 일이 일어나는지 궁금합니다.)
새로운 64비트 아키텍처가 얼마나 엉망인지 설명해 주시겠습니까?

enter image description here

빌드 설정의 아키텍처를 표준 아키텍처(armv7, armv7s)로 설정합니다.

enter image description here

아이폰5S는 A7 64비트 프로세서로 구동됩니다.애플 문서에서

Xcode는 32비트 바이너리와 64비트 바이너리를 모두 포함하여 앱을 구축할 수 있습니다.이 결합된 바이너리에는 iOS 7 이상의 최소 배포 대상이 필요합니다.

참고: Xcode의 향후 버전에서는 iOS 6 이상에서 32비트 런타임을 지원하고 iOS 7에서 64비트 런타임을 지원하는 단일 앱을 만들 수 있습니다.

제가 이해한 것은 문서에서 입니다.

  • Xcode는 단일 앱에 대해 64비트 32비트 이진 파일을 모두 만들 수 있지만 배포 대상은 iOS7이어야 합니다.그들은 앞으로 iOS 6.0이 될 것이라고 말합니다.
  • 32비트 바이너리는 아이폰5S(64비트 프로세서)에서 정상 작동합니다.

(Xcode 5.0.1)
Xcode 5.0.1에서는 iOS 5.1.1 이후의 64비트 바이너리를 만들기 위한 지원을 추가했습니다.

Xcode 5.0.1은 32비트 및 64비트 바이너리가 모두 포함된 앱을 구축할 수 있습니다.이 결합된 바이너리에는 iOS 5.1.1 이상의 최소 배포 대상이 필요합니다.64비트 바이너리는 iOS 7.0.3 이상을 실행하는 64비트 디바이스에서만 실행됩니다.

(Xcode 5.1)
Xcode 5.1은 아키텍처 부분에서 중요한 변화를 주었습니다.답변은 후속 조치가 될 것입니다.확인하기

Apple Docs에서 이해합니다.

  • 아키텍처(ARCHS)가 Xcode 빌드 설정으로 무엇을 합니까?
    • 이진을 대상으로 하는 아키텍처를 지정합니다.둘 이상의 아키텍처를 지정하면, 생성된 바이너리는 지정된 각 아키텍처에 대한 객체 코드를 포함할 수 있습니다.
  • Xcode 빌드 설정으로 유효한 아키텍처(VALID_ARCHS)란 무엇입니까?

    • 이진을 빌드할 수 있는 아키텍처를 지정합니다.
    • 빌드 프로세스 중에 이 목록은 ARCHS와 교차되며 결과 목록은 이진 파일이 실행할 수 있는 아키텍처를 지정합니다.
  • 예 :- 하나의 iOS 프로젝트는 Xcode에 다음과 같은 빌드 설정이 있습니다.

    • ARCHS = 암v7 암v7s
    • VALID_ARCHS = 암v7 암v7s 암64
    • 이 경우, binary는 armv7 armv7s arm64 아키텍처를 위해 구축됩니다.그러나 동일한 바이너리는 ARCHS = armv7 armv7에서만 실행됩니다.

64비트를 설정하면 결과 바이너리는 "Fat" 바이너리로, 얇은 지방 헤더와 함께 번들링된 3개의 마하-O 이미지를 모두 포함합니다.otool이나 jtool을 사용하면 알 수 있습니다.iOS 7.0 SDK의 일부로 포함된 몇 가지 fat 바이너리(예: AVFoundation Framework)를 확인할 수 있습니다.

% cd  /Developer/Platforms/iPhoneOS.platform/DeviceSupport/7.0\ \(11A465\)/Symbols/System/Library/Frameworks/AVFoundation.framework/

%otool -V -f AVFoundation                                                                     9:36
Fat headers
fat_magic FAT_MAGIC
nfat_arch 3
architecture arm64     # The 64-bit version (A7)
    cputype CPU_TYPE_ARM64
    cpusubtype CPU_SUBTYPE_ARM64_ALL
    capabilities 0x0
    offset 16384
    size 2329888
    align 2^14 (16384)
architecture armv7        # A5X - packaged after the arm64version
    cputype CPU_TYPE_ARM
    cpusubtype CPU_SUBTYPE_ARM_V7
    capabilities 0x0
    offset 2359296
    size 2046336
    align 2^14 (16384)
architecture armv7s       # A6 - packaged after the armv7 version
    cputype CPU_TYPE_ARM
    cpusubtype CPU_SUBTYPE_ARM_V7S
    capabilities 0x0
    offset 4407296
    size 2046176
    align 2^14 (16384)

바이너리 자체의 경우, ARM64 비트 명령어 세트를 사용하는데, ARM64는 (대부분 32비트와 호환되지만) 완전히 다른 명령어 세트입니다.이는 그래픽 프로그램(NEON 명령 및 레지스터 사용)의 경우 특히 중요합니다.마찬가지로 CPU에 레지스터가 더 많아 프로그램 속도에 상당한 영향을 미칩니다.http://blogs.barrons.com/techtraderdaily/2013/09/19/apple-the-64-bit-question/ ?mod= yahoobarons에서는 이것이 차이를 만들어 내는지 아닌지에 대해 흥미로운 논의가 있습니다. 벤치마킹 테스트는 지금까지 분명히 밝혀졌습니다.

otool-tV를 사용하면 어셈블리가 덤프됩니다(XCode 5 이상인 경우). 그러면 명령어 집합 차이를 직접 확인할 수 있습니다.대부분(모든 개발자는 아니지만) Obj-C(CG* API에도 불구하고)에 직접적인 영향을 미치지 않으며 낮은 수준의 포인터 처리와 더 많은 작업을 수행해야 하기 때문에 대부분의 개발자는 변경 사항에 무관합니다.컴파일러는 마법과 최적화 작업을 수행할 것입니다.

지원되는 아키텍처에서 arm64 설정을 제거하여 컴파일러를 armv7armv7로만 제한할 필요는 없습니다.배포 대상 설정을 5.1.1로 설정하기만 하면 됩니다.

참고: 빌드 설정 섹션에서 배포 대상을 5.1.1로 설정할 수 없습니다. 고정된 값으로만 드롭다운되기 때문입니다.그러나 텍스트 필드에 값을 입력하기만 하면 응용프로그램 설정의 일반 섹션에서 5.1.1로 쉽게 설정할 수 있습니다.

간단한 수정:

대상 -> 빌드 설정 -> 빌드 옵션 -> 비트코드 사용 -> 아니요

iOS 9.3.3으로 기기에서 작동 가능

어떤 답변도 작동하지 않았고 프로젝트 -> 일반 -> 배포 정보 -> 배포 대상 -> 8.0에서 확인할 수 있는 최소 배포 목표를 설정하는 것을 잊어버리고 있었습니다.

Example

언급URL : https://stackoverflow.com/questions/18913906/xcode-5-and-ios-7-architecture-and-valid-architectures

반응형