Xcode7 은 iOS9 로, 프로그램을 약간 조정하여 절차원숭이에게 구덩이를 팠다.
첫째, ios9 비트코드
우선 가장 큰 문제는 구덩이 상품 xcode7, xcode7 은 기본적으로 bitcode 를 켜는 것이고, bitcode 는 arm 명령어 세트와 x64 명령어 세트 문제
그렇다면 우리 공사는 다른 사람이 캡슐화한 제 3 자 라이브러리를 채택한다면, 좋습니다. 다음과 같은 오류가 발생할 수 있습니다.
Ld:'/users framework/sdks/polymerpay/library/mobstat/lib * * sdk.a (* * forsdk.o) Does not contain bitcode.you must rebuild it with bitcode enabled (xcode setting enable _ bitcode), obtain an updated library Or disablebitcode for thistarget.for architecture arm 64
위의 텍스트는 우리의 제 3 자 라이브러리가 비트코드를 지원하지 않는다는 것을 보여 주며, 지원이 필요한 경우 이 제 3 자 라이브러리도 비트코드를 지원해야 한다는 것을 보여 줍니다.
애플이 현재 내놓은 임시 솔루션은 당초 MRC 와 ARC 때의 해결책과 같다. 당초 xcode5 업데이트 시 기본적으로 엔지니어링이 ARC 로 만들어졌고, ARC 를 끄고 MRC 로 변경할 수 있다. 시간이 지나면서 모두 ARC 를 사용하기 시작했다. 그러면 비트코드도 마찬가지다. xcode7 에서는 기본적으로 켜졌으니, 우리는 닫아야 한다. (알버트 아인슈타인, Northern Exposure (미국 TV 드라마), Northern Exposure
데모
를 위해 문장 gif 그림을 인용했습니다Targets 에서 BuildSetting 을 선택하여 bitcode 를 검색한 다음 no 로 바꾸면 ok
둘째, ios9ple tion:],/buildroot/library/caches/com.apple.xbs/sources/uikit _ sim/uuus
Info.plist 에서 "main story board file base name" string "main" 을 찾을 수 있습니다. 이 항목을 삭제하고 다시 시작하면 화면이 검은색 화면으로 바뀝니다.
수동으로 window 추가
-(bool) application: (ui application *) application didfinishlaunchingwithoptions: (nsdictionary *) lauun
//override point for customization after application launch.
Self.window = [[ui window alloc] initwithframe: [[ui screen main screen] bounds]]; //전체 화면 창
Self.window.backgroundcolor = [ui color whitecolor]; //흰색 배경
[self.windowmakekeyandvisible]; //
Return YES;;
}
Ok, 이것은 업데이트 xcode7 보고 오류로 인해 해결되었습니다!
위에서 수정한 결과 여전히 오류가 보고되고 있다면, 당신의 프로젝트에 안내페이지
가 추가되었는지 확인해 보세요.위의 add 방법을 아래로 바꾸면 됩니다.
이 add 메서드는 xcode7 이전에는 아무런 문제가 없었습니다. xcode7 이후에는 이렇게 쓸 수 없습니다!
6.. dylib 파일을 찾을 수 없습니다.. TBD 파일로 바꿔도 작동하지 않습니다. 다음과 같이 해결해 주세요.
Go to Build Phases gt;; Link Binary with Librairies gt;; +gt;; Add other
Once in the file selection window do "cmd"+shift+g (go to folder) 및 유형/usr/lib/
From/user/lib you can add: libz.dylib and more ...
Compile and have fun
약서 Xcode7 에 대한 FAQ
/p/ef7bbe1c8393
1. Xcode7, iOS9 이후 나오는 어떤 Xcode 가 귀신이 있고, 이식된 코드 조각 등은 HTTP://Drops.Wooyun.org/News/8864
2. bitcode 문제-잘못 설정하면 컴파일 문제가 발생할 수 있습니다. 입출력 S9 적응1, 대부분의 소셜 플랫폼 인터페이스는 https 프로토콜을 지원하지 않습니다.
문제 설명: iOS9 에서는 기본적으로 http 프로토콜 인터페이스에 대한 액세스가 차단되어 http 프로토콜 인터페이스에 대한 데이터를 얻을 수 없습니다. ShareSDK 의 경우, 특정 성과는 권한 부여, 공유, 사용자 정보 획득 등이 불가능할 수 있습니다. 또한 편집 인터페이스에서 http 와 같은 웹 사진을 전송할 수 있는 경우 편집 인터페이스에 사진 캡처, 해결 방법 또는 https 를 완전히 비활성화하여 http 요청을 사용할 수 있습니다. 또는 그림의 도메인을 추가하십시오. 또는 https 를 사용하는 사진 선택
솔루션 (다음 방법 2 선택 1):
(1), 일시적으로 http 프로토콜로 반송합니다.
해결 방법: 항목의 info.plist 에 사전 유형인 Key:NSAppTransportSecurity 를 추가합니다. 그런 다음 키: nsallowsarbitraryloads, 유형 부울 유형, 값 YES; 를 추가합니다.
예
(2), 도메인 설정. Https 프로토콜을 지원하지 않는 인터페이스를 http 인터페이스로 설정하는 것으로 간단히 이해할 수 있습니다.
구체적인 방법:
1), 프로젝트의 info.plist 에 Key:NSAppTransportSecurity 를 추가합니다. 유형은 사전 유형입니다.
2) 그런 다음 사전 유형인 NSExceptionDomains 를 추가합니다.
3), 필요한 지원 도메인을 NSExceptionDomains 에 추가합니다. 여기서 도메인은 키이고 유형은 사전 유형입니다.
4), 각 도메인 아래에는 NSIncludesSubdomains, nsexceptionrequiresforwardsecrecy, nsexceptionallowsinsecurehttploads 의 세 가지 속성을 설정해야 합니다. 모두 부울 유형이며 값은 각각 YES, NO, YES 입니다.
예
2, 대부분의 소셜 플랫폼 SDK 는 bitcode 를 지원하지 않습니다.
문제 설명: iOS 9 새 프로젝트는 기본적으로 bitcode 를 지원해야 하지만 bitcode 를 지원하지 않는 SDK 로 인해 컴파일 실행이 실패할 수 있습니다.
솔루션:
(1), bitcode 에 대한 지원을 일시적으로 해제 (권장) 합니다. 아래 그림
(2), bitcode 를 지원하지 않는 플랫폼 SDK 제거.
예
3, 체계 화이트리스트 추가
문제 설명: iOS 9 에서는 플랫폼 클라이언트 점프가 관련되며 플랫폼 체계가 설정되어 있는지 여부는 info.plist 프로젝트로 자동 감지됩니다. 구성해야 할 플랫폼의 경우 구성되지 않으면 플랫폼 클라이언트를 제대로 점프할 수 없습니다. 따라서 클라이언트 공유 및 권한 부여 등을 지원하려면 스키마 목록을 구성해야 합니다.
구체적인 방법:
1), 프로젝트의 info.plist 에 Array 유형의 LSApplicationQueriesSchemes 를 추가합니다.
2) 그런 다음 지원이 필요한 항목을 추가합니다. 유형은 문자열 유형입니다.
예
3. ATS 가 제대로 설정되지 않으면 일부 네트워크 요청에 문제가 발생할 수 있습니다.
WWDC 2015 에서 iOS 9 는 네트워크 요청에 HTTPS 프로토콜을 사용해야 한다는 것을 알게 되었습니다. Dell 은 Apple 이 샌드박스 메커니즘, 코드 서명, 개인 API 비활성화 등 보안 및 사용자 개인 정보 보호에 많은 노력을 기울이고 있음을 잘 알고 있습니다. 올해 6 월 WWDC 2015 에서 애플은 또 Apple Transport Security (ATS) 라는 개념을 제시했다. 이 기능의 주요 목적은 App 와 서버 간의 안전한 통신 방식을 제공하여 중개인이 전송된 데이터를 도청하고 변조하는 것을 방지하는 것입니다. 이 기능은 iOS 9+ 및 OS X 10.11+ 에서 기본 지원 항목입니다. 이 개념의 제안은 또한 Apple 이 천천히 HTTPS 지원으로 옮겨져 HTTP 를 포기할 수 있다는 것을 의미할 것이다.
App Transport Security 기술 요구 사항
먼저 ATS 의 기술적 요구 사항을 살펴 보겠습니다 (app transport security technote 참조):
1) the server must support at least transport layer security (TLS) protocol version 1.2.
2) connection ciphers are limited to those that provide forward secrecy (see the list of ciphers below.)
3) certificates must be signed using a sha 256 or better signature hash algorithm, with either a 2048 bit or greater RSA key or a 256 bit or greathm
서비스측에서 TLS 1.2 이상을 지원해야 한다는 것을 알 수 있습니다. 순방향 보안을 지원하는 암호를 사용해야 합니다. 인증서는 SHA-256 이상의 서명 해시 알고리즘을 사용하여 서명해야 하며 인증서가 유효하지 않으면 연결이 실패합니다.
Apple 은 이것이 현재 통신 보안을 보장하는 모범 사례라고 생각합니다. 특히 TLS 1.2 및 전방 기밀성을 사용합니다. 물론, Apple 은 네트워크 통신의 보안을 보장하기 위해 ATS 를 지속적으로 수정할 것이라고 믿습니다.
기본 구성
IOS 9+ 및 OS X 10.11+ 에서 App 가 데이터 통신을 위해 NSURLConnection, CFURL 또는 NSURLSession 관련 API 를 사용하는 경우 기본적으로 ATS 를 통해 데이터를 전송합니다. 이 구성에서 통신에 HTTP 를 사용하면 요청이 실패하고 다음과 같은 오류가 보고됩니다.
The resource could not be loaded because the app transport security policy requires the use of a secure connection.
즉, ATS 를 사용하면 HTTP 프로토콜을 지원할 수 없습니다 (로그인 서비스가 HTTP 프로토콜을 사용하므로 현재 iOS 9 에서 제대로 로그인할 수 없습니다). 현재 HTTP 프로토콜을 통해 서버에 액세스하는 응용 프로그램이 많이 남아 있다고 믿습니다. 모든 애플리케이션을 HTTPS 지원으로 전환하는 것은 시간이 많이 걸리는 작업입니다 (올해 모든 애플리케이션이 64 비트 ARM 을 지원해야 하는 것과는 달리, 그때는 클라이언트 차원일 뿐, ATS 는 서버측과 관련이 있어 영향이 더 크다). 그래서 애플은 호환 방안을 제공했고, 이제 어떻게 처리하는지 살펴보겠습니다.
사용자 지정 구성
현실적으로 기본 구성을 사용하고 싶지 않거나 적어도 하나의 전환 기간이 필요할 수 있습니다. 이를 위해 Apple 은 Info.plist 파일에서 기본 설정 (Exceptions) 을 수정하도록 구성할 수 있습니다. 아래 표에는 일부 키 값과 해당 유형 및 설명이 나와 있습니다.
예
예
예
예
예
4. Scheme 이 제대로 설정되지 않으면 응용 프로그램 간 점프에 문제가 발생할 수 있음
같은 속의 화이트리스트
5. Requires full screen 이 제대로 설정되지 않으면 응용 프로그램 업로드가 실패할 수 있습니다. ITMS-90474 ITMS-90475
예