[ios] 오류 ITMS-90164 / 90046 : 유효하지 않은 코드 서명 자격

참고 : Xamarin을 사용하여 개발 중입니다. 비슷한 질문은 자 마린 포럼에 게시 여기

CompanyApp 이라는 앱을 만들고 있습니다. 그런 다음 해당 앱 ID를 사용하는 배포 프로비저닝 프로필과 함께 com.Company.CompanyApp에 대한 앱 ID를 만들었습니다 . 바이너리를 업로드했고 완벽하게 작동했습니다.

그런 다음 앱의 데모 버전 (기본적으로 약간의 수정이있는 동일한 앱이므로 동일한 솔루션 및 프로젝트, 다른 번들 서명 설정), CompanyAppDemo 와 함께 새 앱 ID com.Company.CompanyAppDemo 를 생성했습니다. 새 앱 ID를 사용하는 새 배포 프로비저닝 프로파일. 새 프로비저닝 프로필을 사용하도록 iOS 번들 서명 옵션을 업데이트하고 IPA를 생성했습니다. 하지만 이것을 Application Loader에 업로드했을 때 다음과 같은 오류가 발생했습니다.

[2015-01-23 16:08:21 SGT] 오류 : ERROR ITMS-90164 : “잘못된 코드 서명 권한입니다. App Bundle 서명의 권한이 프로비저닝 프로필에 포함 된 권한과 일치하지 않습니다. 프로비저닝에 따라 프로필에 허용되지 않는 키 값이 포함되어 있습니다. ‘Payload / CompanyApp.app / CompanyApp’의 ‘application-identifier’키에 대한 ‘TEAMID.com.Company.CompanyApp’ “

[2015-01-23 16:08:21 SGT] 오류 : 오류 ITMS-90046 : “잘못된 코드 서명 자격입니다. 응용 프로그램 번들의 서명에 iOS에서 지원되지 않는 코드 서명 자격이 포함되어 있습니다. 특히 ‘TEAMID.com.Company 값’을 입력하십시오. ‘Payload / CompanyApp.app / CompanyApp’의 ‘application-identifier’키에 대한 .CompanyApp ‘은 지원되지 않습니다.이 값은 TEAMID로 시작하는 문자열이어야하며 그 뒤에 점’. ‘과 번들 식별자가 와야합니다. “

나는 아무 소용이 없다는 것을 알아 내기 위해 며칠 동안 디버깅을 해왔다.

새 프로필로 서명 할 때 Application Loader가 던진 오류가 TEAMID.com.Company.CompanyAppDemo 대신 원래 TEAMID.com.Company.CompanyApp 의 ID를 참조하는 이유궁금합니다 . 잘못된 프로비저닝 프로필을 선택하는 Xamarin의 버그입니까, 아니면 뭔가 누락 되었습니까? 앱마다 다른 인증서가 필요하지 않습니까?

Xamarin에서 iOS 빌드 서명 옵션을 변경하기 전에 항상 XCode> 기본 설정에서 프로비저닝 프로필 목록을 새로 고쳤습니다.



답변

누군가 나처럼 ERROR ITMS-90046을 검색하여 여기에 오면 내 해결책은 그것을 정리하고 모든 미리 컴파일 된 프레임 워크 (사용자 지정 프레임 워크)를 삭제 한 다음 다시 빌드하는 것입니다.

참고 : 오류 설명은 핵심 “aps-environment”에 대해 “development”로 언급했습니다.

편집 : 실제 오류 메시지


답변

나는 같은 문제가 있었고 간단한 Product-> Clean으로 해결했습니다 .


답변

사람은 모두 오류를 검색하여 여기에 들어갔을 경우 ITMS-90164 및 오류 ITMS-90046GET-태스크 수ASP-환경 키 :

1

David P가 말했듯이, 새 아카이브가 내 문제를 해결하기 전에 제품-> 청소 .

제 경우에는 결함이있는 xarchive에 다음 파일이 누락 된 것을 발견했습니다.

2

프로덕션 서명을 위해 해당 .xarchive를 클라이언트에 보내기 전에 archived-expanded-entitlements.xcent 파일을 찾아 거기에 있는지 확인할 수 있습니다.


답변

드디어 2 주 동안 머리를 당기고 ..

어떤 이유로 Entitlements.plist에 TEAMID.com.Company.CompanyAppDemo 로 설정된 키 ‘application-identifier’가없는 경우 Xamarin은 원래 응용 프로그램 식별자 (예 : TEAMID.com.Company.CompanyApp)를 사용합니다.

따라서 솔루션은 Entitlements.plist 내에 올바른 애플리케이션 번들 ID를 지정하는 애플리케이션 식별자를 추가하는 것이 었습니다. 그런 다음 빌드 옵션> iOS 번들 서명에 plist를 포함합니다.


답변

같은 문제를 간단한 Product-> Clean으로 해결했습니다 .


답변

Entitlements.plist에서이를 변경합니다.

<key>aps-environment</key>
<string>development</string>

이에:

<key>aps-environment</key>
<string>production</string>


답변

iTunes connect에서 새 계약에 동의해야하는 경우에도 발생할 수 있습니다. iTunes connect에 로그인하면 상단에 최신 계약 변경에 동의하라는 배너가 표시됩니다.