기존 프로젝트를 swift2.0, Xcode7로 마이그레이션할 때 Tips
swift1.2 > 2.0
Xcode6.4 > 7.0 7.1
iPhone6: iOS 9.0.1 9.1
아래에 쓴 집행 시 일은 실기로 확인한 것이다.
※ 본 기사의 오류와 추가 기사가 있다면 기쁩니다.
여러 버전의 Xcode 사용 가능
Xcode가 설치되어 있다고 가정합니다.
애플 공식 다운로드 페이지
Xcode7.0 등 설치하려는 버전의 dmg 파일을 다운로드합니다.
일정한 시간이 필요하기 때문에 그 동안 설치된 Xcode와 공존하기 위해
설치된 Xcode입니다.앱을 Xcode6.4로 설정합니다.앱 등의 버전을 아는 이름으로 변경합니다.
이후 다운로드가 완료될 때까지 기다렸다가 dmg의 Xcode를 엽니다.평소처럼 앱을 끌어다 놓으면 됩니다.
여기 엑스코드.앱도 이름을 바꾸고 버전을 표시할 수 있다고 생각합니다.
※ 추적
Carthage를 사용하는 경우 carthage update
다음과 같은 오류가 발생할 수 있습니다.A shell task failed with exit code 72:
xcrun: error: unable to find utility "xcodebuild", not a developer tool or in PATH
이 경우 다음과 같이 Xcode의 경로를 변경하면 치료할 수 있습니다.sudo xcode-select -switch /Applications/Xcode7.0.app/Contents/Developer
기존 프로젝트는 swift2.0, Xcode7이다.대응하다
기존 항목을 처음 열 때
swidt 2.0을 지원하기 위해 코드를 변경할지 묻는 대화상자가 나타납니다.
이것은 어느 정도에 코드를 자동으로 변경할 것이다.
Before · After 미리보기가 표시되므로 이때 코드가 어떻게 되는지 보는 것이 좋습니다.
You must rebuild it with bitcode enabled
GoogleAnalytics를 사용하여 발생합니다.ld: '/hoge-project/Pods/GoogleAnalytics/Libraries/libGoogleAnalytics.a(GAITrackerImpl.o)' does not contain bitcode. You must rebuild it with bitcode enabled (Xcode setting ENABLE_BITCODE), obtain an updated library from the vendor, or disable bitcode for this target. for architecture armv7
사용하는 라이브러리나 프레임워크가bitcode를 지원하지 않으면 이런 상황이 발생합니다.
Xcode7.0의 기본값에서 bitcod를 사용했기 때문에
[빌드 설정 > 빌드 옵션 > Bitcode 활성화] 의 [예] 를 [아니오] 로 변경하여 비활성화할 수 있습니다.
※ 추적
비트코드를 "아니오"로 설정하고 상점에 제출할 때 Archive > Validate의 include bitcode.
검사를 취소해야 합니다.
그렇지 않으면 이런 오류가 발생하고validate를 완성할 수 없습니다.The archive did not contain <DVTFilePath:~~~
비트코드에 관해서는 이미 Qiita에 쓴 사람이 있기 때문에 참고 페이지를 먼저 게재합니다.
참조 페이지
LLVM 비트코드 기초 지식
Error during submission
URLScheme을 열 수 없습니다.
canOpenURL을 실행하여 Instagram으로 마이그레이션하려고 할 때 발생합니다.-canOpenURL: failed for URL: "instagram://app" - error: "This app is not allowed to query for scheme instagram"
외부 응용 프로그램을 열 때 사용할 URLScheme를 열거해야 합니다.
Info.plist에 LSApplicationQueries Schemes: Array를 추가하면 String에서 사용하고 싶은 Scheme를 적으면 열 수 있습니다.
참조 페이지
iOS 9 not opening Instagram app with URL SCHEME
[추적] iOS9에서 canOpenURL을 유효하게 하는 방법
iOS9의 canOpenURL
WebView에서 페이지를 열 수 없습니다.
WebView에서 광고를 보려고 시도할 때 발생합니다.App Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecure. Temporary exceptions can be configured via your app's Info.plist file.
기본적으로 http 연결을 사용할 수 없습니다.(App Transport Security)
http 연결을 하려면 AppTransportSecurity의 전부 또는 일부를 비활성화합니다.
Info.응용 프로그램 전송 보안 설정:Dictionary에서plist에 추가하고 추가
A shell task failed with exit code 72:
xcrun: error: unable to find utility "xcodebuild", not a developer tool or in PATH
sudo xcode-select -switch /Applications/Xcode7.0.app/Contents/Developer
기존 항목을 처음 열 때
swidt 2.0을 지원하기 위해 코드를 변경할지 묻는 대화상자가 나타납니다.
이것은 어느 정도에 코드를 자동으로 변경할 것이다.
Before · After 미리보기가 표시되므로 이때 코드가 어떻게 되는지 보는 것이 좋습니다.
You must rebuild it with bitcode enabled
GoogleAnalytics를 사용하여 발생합니다.
ld: '/hoge-project/Pods/GoogleAnalytics/Libraries/libGoogleAnalytics.a(GAITrackerImpl.o)' does not contain bitcode. You must rebuild it with bitcode enabled (Xcode setting ENABLE_BITCODE), obtain an updated library from the vendor, or disable bitcode for this target. for architecture armv7
사용하는 라이브러리나 프레임워크가bitcode를 지원하지 않으면 이런 상황이 발생합니다.Xcode7.0의 기본값에서 bitcod를 사용했기 때문에
[빌드 설정 > 빌드 옵션 > Bitcode 활성화] 의 [예] 를 [아니오] 로 변경하여 비활성화할 수 있습니다.
※ 추적
비트코드를 "아니오"로 설정하고 상점에 제출할 때 Archive > Validate의
include bitcode.
검사를 취소해야 합니다.그렇지 않으면 이런 오류가 발생하고validate를 완성할 수 없습니다.
The archive did not contain <DVTFilePath:~~~
비트코드에 관해서는 이미 Qiita에 쓴 사람이 있기 때문에 참고 페이지를 먼저 게재합니다.참조 페이지
LLVM 비트코드 기초 지식
Error during submission
URLScheme을 열 수 없습니다.
canOpenURL을 실행하여 Instagram으로 마이그레이션하려고 할 때 발생합니다.
-canOpenURL: failed for URL: "instagram://app" - error: "This app is not allowed to query for scheme instagram"
외부 응용 프로그램을 열 때 사용할 URLScheme를 열거해야 합니다.Info.plist에 LSApplicationQueries Schemes: Array를 추가하면 String에서 사용하고 싶은 Scheme를 적으면 열 수 있습니다.
참조 페이지
iOS 9 not opening Instagram app with URL SCHEME
[추적] iOS9에서 canOpenURL을 유효하게 하는 방법
iOS9의 canOpenURL
WebView에서 페이지를 열 수 없습니다.
WebView에서 광고를 보려고 시도할 때 발생합니다.
App Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecure. Temporary exceptions can be configured via your app's Info.plist file.
기본적으로 http 연결을 사용할 수 없습니다.(App Transport Security)http 연결을 하려면 AppTransportSecurity의 전부 또는 일부를 비활성화합니다.
Info.응용 프로그램 전송 보안 설정:Dictionary에서plist에 추가하고 추가
※ 추적
URL에 연결할 수 없는 경우 다음 로그가 재생됩니다.
NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9802)
이대로 가면 실제로 어떤 URL이 걸렸는지 모르기 때문에 로그를 봐야 합니다.통신에서 CFNetwork 프레임워크를 사용하기 때문에 이 로그를 출력하기 위해 다음 코드인 AppDelegate를 사용합니다.swift에 기술합니다.
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
setenv("CFNETWORK_DIAGNOSTICS","3",1)
return true
]
구현 후 실행, 실제 통신에서 발생NSURLSession/NSURLConnection HTTP load failed
.Windows > Devices를 열고 실행 중인 장치에서 프로그램을 선택하고 톱니바퀴 표시를 누르면 Download Container를 선택하여 로그를 임의의 위치에 저장합니다.
저장된 로그
com.example.app 2015-10-11 01:28.36.311.xcappdata
는 디렉토리입니다.com.example.app 2015-10-11 01:28.36.311.xcappdata/AppData/Library/Logs/CrashReporter/CFNetwork_com.example.app_0000.nwlrb.log
이런 파일은 로그를 출력하기 때문에 적당한 파일로 엽니다.NSURLSession/NSURLConnection HTTP load failed
오류 끝에 있는 숫자(예: -9802)를 검색하여 어떤 URL이 걸렸는지 확인할 수 있습니다.참조 페이지
iOS9ATS 문제
iOS9iOS9에 추가된 애플리케이션 전송 보안 정보
【iOS9】HTTP→HTTPS!애플리케이션 전송 보안(ATS) 정보
iOS9: App Transport Security 확인 방법
CGContextSaveGState, CGContextTranslateCTM, CGContextRestoreGState invalid context 0x0
※ 이 문제는 Xcode 7.1에서 수정되어 더 이상 발생하지 않습니다.
상태 표시줄을 숨기려고 할 때 발생합니다.
CGContextSaveGState: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable.
CGContextTranslateCTM: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable.
CGContextRestoreGState: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable.
Info.만약plist>View controller-based status bar appearance가 "아니오"라면 이런 상황이 발생할 수 있습니다.Xcode7.0 이후에 발생한 문제인 것 같습니다. Xcode7.1beta2도 실행을 시도했지만 변하지 않았습니다.
지금 이건 처리할 수 없을 것 같습니다.
참조 페이지
'invalid context 0x0' after Migration to iOS 9
※ 추적
확실한 정보가 아니라 가능성으로 고려한 것이다
iOS9부터 UIAplication 클래스에 대한 상태 표시줄일부 방법이 이미 배치되었다.
이 가능하다, ~할 수 있다,...하지만 대체할 수 있는 다른 방법은 찾지 못했다.
실제 iOS8에서 실행할 때 이 오류가 발생하지 않았습니다.
현재 상황의 대응으로 View Controller 방면에서 동적으로 숨기는 것 같습니다.
override func prefersStatusBarHidden() -> Bool {
return true
}
그러나 상태 표시줄은 UIimagePicker Controller 등을 표시할 때 표시됩니다.마지막으로 상태 표시줄을 숨길 수 있습니다.
하지만 돌아올 때 순간적으로 상태 표시줄을 볼 수 있는 좋지 않은 동작이기도 하다.
따라서 완전한 동작을 추구하는 상황에서는 공식적인 대응을 기다리는 상태라고 본다.
참조 페이지
Error Message in Debug Area
Reference
이 문제에 관하여(기존 프로젝트를 swift2.0, Xcode7로 마이그레이션할 때 Tips), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/roana0229/items/305f92910094d197fc49텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)