[Xamarin iOS] '유효하지 않은 인증(Invalid Signature)'로 리젝(reject)되었을 경우 해볼 것들
이 메시지가 리젝(reject)사유로 뜨면 사실상 이것저것 다 확인해봐야 합니다.
-_-;;;;
Dear Developer,
We identified one or more issues with a recent delivery for your app, "[앱 이름]". Please correct the following issues, then upload again.
Invalid Signature - A sealed resource is missing or invalid. The file at path [앱 구분키] is not properly signed. Make sure you have signed your application with a distribution certificate, not an ad hoc certificate or a development certificate. Verify that the code signing settings in Xcode are correct at the target level (which override any values at the project level). Additionally, make sure the bundle you are uploading was built using a Release target in Xcode, not a Simulator target. If you are certain your code signing settings are correct, choose "Clean All" in Xcode, delete the "build" directory in the Finder, and rebuild your release target. For more information, please consult https://developer.apple.com/library/ios/documentation/Security/Conceptual/CodeSigningGuide/Introduction/Introduction.html
Best regards,
The App Store Team
자세하게 써놓은 것 같지만 실제로 내용은 없습니다.
(스택오버플로우에보면 이런 리젝메시지 까는 글이 많습니다..)
설명만 보면 인증서가 오류 인 것 같지만 인증서가 오류 났다면 대부분 올리기 전에 오류가 납니다 ㅎㅎㅎ
그리고 링크는 전혀 도움이 되지 않습니다 ㅋㅋㅋ
1. 파일이 잘못됐다.
일단 리소스에 언더바와 같이 일반적으로 허용되는데 아이폰에서는 허용되지 않는 특수문자가 들어간 파일이 있는지 확인해봅니다.
또 다른 폴더에도 프로젝트와 관련 없는 파일이 있는 경우 리젝 될 수 있습니다.
저의 경우 같은 경우 프로젝트를 생성하면 프로젝트 설명 파일(.txt)을 만드는데 이걸 실수로 빌드할때 첨부되게 해놨다가 계속 이 메시지를 받았습니다.
-_-;;;;;;
2. 리소스가 잘못됐다.
info.plist에 넣은 리소스와 리소스 폴더의 파일이 일치하는지 확인합니다.
리스트와 실제 들어간 파일이 다른 경우 리젝당하는 경우가 있습니다.
3. 인증서가 잘못됐나?
마지막으로 확인해야 할 것이 인증서입니다.
그런데 위에서도 말했지만........인증서가 문제가 있으면 거의 올리는 단계에서 오류가 납니다-_-;;;;;;;
여기서 해볼 것은 터미널을 열고 '.ipa'파일에 사인정보가 있는지 확인하는 것입니다.
일단 맥에서 터미널을 열고
$ codesign -vv example.ipa
명령을 날려봅니다.
"code object is not signed at all"
이런 메시지가 나오면 키체인이 없다는 것입니다.
$ codesign -s my_certificate example.ipa
이렇게 한 다음 다시 해보면 메시지가
"example.ipa: valid on disk
example.ipa: satisfies its Designated Requirement"
요렇게 바뀝니다.
(참고 : stackoverflow - How to re-sign the ipa file?)
그런데 저는 저거 있든 없든 리잭 당하지 않았습니다-_-;;;;;;
마무리
3일을 삽질했는데 결과가 파일 하나 잘못 넣은 거였습니다.
왜 이런 간단한 문제조차 리젝메시지를 저따위로 보내는 걸까요?
심지어 스텍오버플로글을 보면 리젝나면 버전만 올려서 그냥 다시 넣어보라는 글도 많습니다.
이런 일관성 없는 심사에도 꿋꿋이 올리는 많은 개발자들이 존경스럽네요.