카테고리 Archives: 학습

Code Sign error 발생 시의 문제 해결 방법 #1

MAC OS X(Server)를 새로 설치하고 XCODE도 새로 설치한 다음, iPHONE을 재 등록하고 device로 출력물이 나오도록 컴파일해 실행하자 다음과 같은 에러 메시지가 나타났다.

[BEROR]Code Sign error: The identity ‘iPhone Developer’ doesn’t match any valid certificate/private key pair in the default keychain

사용자 삽입 이미지삽질하고 나서 안 거지만 이유는 간단했다. 개발자 등록해서 인증 받은 키가 새로 설치한 MAC OS X에 설치되어 있지 않았고, 또 키가 설치되어있더라도 그 키와 Device Provisioning Profile이 서로 연동되어있지 않았기 때문이다.

그럼 어떻게 해야하는지 설명하겠다.
과거의 인증서 등을 그대로 써도 되는진 모르겠지만, 과거의 기록이 어떤 영향을 줄지 모르므로 무조건 신규발급 받는 것을 택했다. 귀찮으면 걍 패스하고  6번으로 넘어가서 테스트해보라.

0. 유티리티/KeyChain 안의 개발자 인증서와 XCODE/ORGANIZER 안의 Provisioning Profiles를 지운다.
(OS를 새로 설치한 상태라면 없을 것이다.)

1. 개발자 홈페이지로 로그인 하고 오른쪽 메뉴의 iOS Provisioning Portal을 선택한다.
2. 왼쪽의 Certificates 메뉴를 클릭.
3. 인증서 맨 오른쪽의 Revoke를 눌러 인증서를 폐기한다.
4. 새로 인증서를 발급받는다. (다른 페이지를 보고 돌아오는 등 조금 기다리면 활성화 된다)
5. Download를 눌러 인증서를 받아 더블클릭하면 키가 추가된다.

6. iOS Provisionig Portal 의 루트페이지로 돌아가서 하단의 Launch Assistant를 클릭
7. 도움말 창이 뜬다.
사용자 삽입 이미지

사실 이대로만 따라해주면 끝난다. 아주쉽다. 여기서 시키는대로 하면 App ID를 작성하거나 기존 App ID로 Provisioning Profile을 생성해서 넣어주고, 그것을 앞에서 작업한 키와 연동시키는 과정을 수행하도록 짜여있다. 이 과정은 앱 개발자라면 누구나 할 수 있을 정도의 상식선이기 때문에 별도의 설명은 하지 않겠다.

이 과정을 거치지 않으면, 보통 Provisioning Profile이 다음과 같이 나온다. (보통 문제가 되는 상태가 이렇다)

A valid signing identity matching this profile could not be found in your keychain.
사용자 삽입 이미지

이것은 지금 쓰고있는 키와 Provisioning Profile 이 연결 되어있지 않기 때문이다.
 
KeyCahin의 key를 살펴보면 보통 요런 식으로 나와있을 것이다. (아예 Key에 아무런 값이 없을 경우도 있다. 이 때는 위의 0번 과정으로 가서 새로 등록을 하자. 물론 key명은 사용자마다 각각 다를 것이다.)
 

사용자 삽입 이미지

 
하지만, 위에서 나온 과정을 그대로 따라하면 다음과 같이 바뀌어 있음을 알 수 있다.
 

사용자 삽입 이미지

 
private key 앞에 삼각형이 달려있다. 이 부분을 클릭해보면…
 

사용자 삽입 이미지

 
다음과 같이 연결되어있음을 알 수 있다.
이제 XCODE를 실행하고 다시 컴파일해 보면 device상에서 잘 동작하는 것을 알 수 있다.
 
 

사족. 사실 맨 처음 나오는 에러에 추가 설명으로 간단히 개발자 홈에 가서 Launch Assistant를 클릭하라고만 나와주면 “대체 왜 이런 일이 생기는 걸까?” 라고 고민할 필요도 없이 간단할텐데.. 라는 생각을 해 본다.

 
사족2. 일단 위 내용은 개인 개발자 등록시 발생한 문제에 한한다. 다른 환경에선 어떻게 나오는지 해 본 적이 없어서 위와 똑같다고 장담할 수 없다. 그리고 약간의 기억에 의존하는 부분이 있어서 살짝 설명과 다를 수 있지만 크게 다르진 않을 것이다.
사족3. 남의 코드를 가져다 쓰거나 할 때 발생하는 Code Sign error 는 http://asteris.pe.kr/blog/1407 에 정리했다.

끝.

 

프로젝트 템플리트의 종류

사용자 삽입 이미지

Navigation-based Application (iPhone) 화면 전체로 내비게이션을 이용하는 템플리트
OpenGL ES Application (iPhone 또는 iPad) 화면 전체로 OpenGL을 이용하는 템플리트
Split View-based Application (iPad) 화면 전체로 스플릿 뷰를 이용하는 템플리트
Tab Bar Application (iPhone 또는 iPad) 탭바를 이용하는 템플리트
Utility Application (iPhone) 설정화면을 가진 템플리트
View-based Application (iPhone 또는 iPad) 뷰를 1개 가진 템플리트
Windows-based Application (iPhone/iPad/Universal) iPhone/iPad 모두 대응 가능한 윈도우만의 템플리트