programing

잘못된 iPhone 응용 프로그램 이진

javajsp 2023. 7. 28. 21:48

잘못된 iPhone 응용 프로그램 이진

iPhone App Store에 응용 프로그램을 업로드하려고 하는데 iTunes Connect에서 다음 오류 메시지가 표시됩니다.

업로드한 이진 파일이 잘못되었습니다.서명이 잘못되었거나 Apple 제출 인증서로 서명되지 않았습니다.


참고: 이 페이지는 해당 오류 메시지의 가능한 원인에 대한 모든 정보를 저장하는 저장소로 바뀌었기 때문에 원래 질문의 세부 정보가 제거되었습니다.

AppStore에 iPhone 응용 프로그램을 제출하는 방법에 대한 일반 정보는 AppStore에 iPhone 응용 프로그램을 업로드하는 단계를 참조하십시오.

Xcode가 어떤 서명 인증서를 사용해야 할지 가끔 헷갈리는 것은 제 경험입니다.저는 이 문제를 해결하기 위해 코드 서명 설정을 변경한 후 Xcode를 종료하고 다시 시작하는 습관이 생겼습니다.

저도 명령줄에서 zip에 문제가 있다는 것을 말씀드리고 싶습니다.문제는 기본적으로 심볼릭 링크를 처리하는 방식에 있습니다.사용:

zip -y -r myapp.zip myapp.app

그 문제를 해결했습니다.

저도 같은 문제가 있었고 다음과 같이 해결했습니다.

속성 인증서가 내 개발 컴퓨터에 설치되었고 mobileprovision.embedded가 배포 아카이브에 포함되었습니다.한 시간 정도 구글링하고 파헤친 후에 저는 오류를 발견했습니다.Xcode 내부에서 릴리스 구성을 복사하고 새 배포 구성을 만든 다음 서명 ID를 배포 인증서로 변경했습니다.그러나 GUI에서 업데이트되었음에도 불구하고 프로젝트 파일이 올바르게 업데이트되지 않았습니다.

동일한 오류가 발생할 경우 [ProjectName]을 확인합니다.project.pbxproj 파일의 xcodeproj 디렉터리를 사용하여 즐겨찾는 편집기에서 엽니다.배포 섹션을 찾습니다.내 부러진 것은 다음과 같이 생겼습니다.

C384C90C0F9939FA00E76E41 /* Distribution */ = {
isa = XCBuildConfiguration;
buildSettings = {
ARCHS = "$(ARCHS_STANDARD_32_BIT)";
CODE_SIGN_ENTITLEMENTS = "";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]” = “iPhone Distribution: Edward McCreary”;
GCC_C_LANGUAGE_STANDARD = c99;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
PREBINDING = NO;
“PROVISIONING_PROFILE[sdk=iphoneos*]” = “F00D3778-32B2-4550-9FCE-1A4090344400″;
SDKROOT = iphoneos2.2.1;
};
name = Distribution;
};
C384C90D0F9939FA00E76E41 /* Distribution */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CODE_SIGN_IDENTITY = “iPhone Developer: Edward McCreary”;
“CODE_SIGN_IDENTITY[sdk=iphoneos*]” = “iPhone Developer: Edward McCreary”;
COPY_PHASE_STRIP = YES;
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = GenPass_Prefix.pch;
INFOPLIST_FILE = Info.plist;
PRODUCT_NAME = GenPass;
PROVISIONING_PROFILE = “DB12BCA7-FE72-42CA-9C2B-612F76619788″;
“PROVISIONING_PROFILE[sdk=iphoneos*]” = “DB12BCA7-FE72-42CA-9C2B-612F76619788″;
};
name = Distribution;
};

두 번째 섹션에서는 서명 ID와 프로비저닝 프로파일이 잘못되었음을 알 수 있습니다.첫 번째 섹션과 일치하도록 편집하고 다시 작성하면 바로 사용할 수 있습니다.마지막은 다음과 같습니다.

C384C90C0F9939FA00E76E41 /* Distribution */ = {
isa = XCBuildConfiguration;
buildSettings = {
ARCHS = "$(ARCHS_STANDARD_32_BIT)";
CODE_SIGN_ENTITLEMENTS = "";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]” = “iPhone Distribution: Edward McCreary”;
GCC_C_LANGUAGE_STANDARD = c99;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
PREBINDING = NO;
“PROVISIONING_PROFILE[sdk=iphoneos*]” = “F00D3778-32B2-4550-9FCE-1A4090344400″;
SDKROOT = iphoneos2.2.1;
};
name = Distribution;
};
C384C90D0F9939FA00E76E41 /* Distribution */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CODE_SIGN_IDENTITY = “iPhone Distribution: Edward McCreary”;
“CODE_SIGN_IDENTITY[sdk=iphoneos*]” = “iPhone Distribution: Edward McCreary”;
COPY_PHASE_STRIP = YES;
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = GenPass_Prefix.pch;
INFOPLIST_FILE = Info.plist;
PRODUCT_NAME = GenPass;
PROVISIONING_PROFILE = “F00D3778-32B2-4550-9FCE-1A4090344400″;
“PROVISIONING_PROFILE[sdk=iphoneos*]” = “F00D3778-32B2-4550-9FCE-1A4090344400″;
};
name = Distribution;
};

무고한 사람들을 보호하기 위해 바뀐 안내서

같은 문제, 다른 해결책.

제 경우에는 다음을 사용하여 파일을 압축했습니다.zip -r myapp.zip myapp.app알고 보니, zip 명령어가 번들을 망쳤습니다.파인더에서 압축해서 작동했습니다.

저는 같은 문제를 겪었고 여러 가지를 시도한 후 코드 서명 자격에서 .plist 자격을 제거했고(그냥 비워두었습니다), 잘 구축되어 마침내 업로드되었습니다.

모두 행운을 빌어요 :-D

또 다른 데이터 포인트: 한동안 제 앱이 작동했습니다.이제 앱 내 구매에 대한 지원을 추가했는데, 갑자기 "잘못된 이진/잘못된 서명" 문제로 실패합니다.자세히 보니 사용 권한 플리스트 파일의 응용 프로그램 식별자 값이 꺼져 있었습니다.

이는 프로비저닝 프로파일을 와일드카드 프로파일에서 애플리케이션별 프로파일(앱 내 구매에 필요)로 변경한 것과 관련이 있습니다.잘못된 앱 ID가 이전 프로필에서 인증되었습니다.그것은 info.plist의 앱 ID와 일치하지 않았지만, 아이튠즈는 그것을 용서했습니다.

요약하자면:

info.plist: com.mydomain.foo
dist.plist: com.mydomain.bar
Profile: com.mydomain.*

괜찮아요, 반면에

info.plist: com.mydomain.foo
dist.plist: com.mydomain.bar
Profile: com.mydomain.foo

"Invalid binary"를 발생시킵니다.

솔루션은 다음 링크를 참조하십시오.

http://greghaygood.com/2010/09/04/invalid-binary-message-from-itunesconnect

간단한 답변은 "결국 info.plist를 두 번 확인하고 무언가를 발견했습니다.새로운 지침에 따라 CFBundleIconFiles를 추가했지만 배열 목록에 빈 항목이 있습니다.저는 그것을 제거하고 다시 제출했고, 마침내 그것이 받아들여졌습니다!"

저도 마찬가지로 문제가 있었습니다. 빌드할 때 프로비저닝이 빌드에 추가되지 않았다는 것을 알게 되었습니다.

제가 수정한 것은 제가 보통 시뮬레이터를 사용하는 아이폰 장치의 빌드를 설정하는 것이었는데, 그러면 프로비저닝 프로파일이 포함되지 않습니다...

이것은 잘못된 실수일 수도 있습니다.일반적으로 장치에 빌드할 수 없지만 배포를 위해 빌드할 때는 가능합니다.

음, 몇 번의 단계를 반복한 후, 저는 마침내 제 앱을 성공적으로 업로드했습니다.

정확히 무엇이 해결되었는지는 모르겠지만, 성공하기 전에 Xcode와 Firefox를 닫고 다시 시작했습니다.그 앱들 중 하나에 나쁜 쥬쥬가 있었던 것 같습니다.

다음과 같은 문제가 발생했습니다.업로드하기 전에 서브버전에 바이너리를 추가했습니다.바이너리를 압축/지핑하면 숨겨진 .svn 디렉터리가 포함되어 코드 서명이 엉망이 됩니다.

위의 글들을 포함한 다양한 글들을 읽고 다양한 시도를 했습니다.마침내 저에게 효과가 있었던 것은 완전히 다시 시작하는 것이었습니다!앱과 관련된 모든 인증서 및 프로비저닝 프로필을 삭제했습니다.

저는 새로운 개발 인증서와 새로운 배포 인증서를 다시 만들었습니다.저는 중간 인증서를 다시 다운로드했습니다.그런 다음 개발 프로파일과 배포 프로파일을 모두 다시 만들었습니다.

세 개의 인증서(이번에는 배포에 개인 키와 공용 키가 모두 있음을 알게 됨)와 두 개의 프로비저닝 프로파일(내 배포 프로파일에 유효한 인증서가 없는 것으로 플래그가 지정되지 않음!)을 설치한 후 모든 것이 작동했습니다.

일단 모든 것을 취소하고 다시 시작하기로 결정한 후에는 새로운 것을 만들고 다시 설치하는 데 약 5분밖에 걸리지 않았습니다.

저도 비슷한 문제가 있었지만 모노터치에 있었습니다.내 릴리스 프로파일이 개발자 인증서를 사용하도록 설정되어 있습니다.다음과 보여야 합니다: 표야합니다어되시같이과다.enter image description here

이 문제에는 여러 가지 원인이 있는 것 같습니다.다음은 제 솔루션입니다.

이는 여러 개발 팀(예: 자신의 앱 및 회사)에 속한 모든 사용자에게 적용됩니다.

한 자격 증명 집합으로 빌드를 빌드하고 다른 자격 증명(예: 애드혹/앱스토어 배포용)과 재서명하는 경우, 원래 빌드가 빌드되었는지 확인하고 재서명하려는 배포 자격 증명이 속한 동일한 iOS 개발 팀에 속한 자격 증명으로 서명해야 합니다.

따라서 "Indy Dev Inc" 자격 증명으로 빌드하지 말고 "Company Inc" 자격 증명으로 배포하려고 합니다."Company Inc" 개발 및 배포 자격 증명을 모두 설정하고 사용해야 합니다.

저는 이것에 대한 더 많은 정보를 블로그에 올렸습니다: http://omegadelta.net/2011/06/09/fiendish-ios-code-signing-invalid-binary-issue/

저도 같은 문제가 있었습니다.저는 이 문제를 포기할 준비가 되어 있었지만, 머키를 사용하여 제 코드를 확인하러 갔을 때 그것을 알게 되었습니다.저는 체크인하기 전에 항상 변경된 파일의 디프를 훑어봅니다.이 작업을 수행할 때 project.pbxproj 파일이 변경된 것을 발견했습니다. 배포 섹션에서 "PROVATION_PROFILE[sdk=profileos*]" 항목이 비어 있습니다.

Xcode를 종료하고 다시 시작하는 것은 나에게 효과가 없었습니다.대신, 저는 프로젝트 설정과 대상 설정 모두에 들어가 코드 서명을 자동 선택 기능에 의존하지 않고 직접 배포 프로파일을 선택하도록 변경했습니다.이렇게 하면 자동 선택 기능이 내가 수동으로 선택한 것과 정확히 동일한 프로필을 선택했음에도 불구하고 project.pbxproj 파일이 올바른 값으로 채워집니다.

맥주가 필요해요

여기에 나열된 다른 모든 수정을 시도한 후 Apple에 TSI를 기록했습니다.기술 노트 TN2250의 모든 단계를 수행한 결과 봉인된 리소스가 없거나 유효하지 않아 문제가 발생했습니다.우리의 경우에는.._.DS_Store.

"."는 Apple Double 파일이라고 하며, HFS+의 '리소스 포크'(코드 서명에 사용됨)를 제대로 지원하지 않는 파일 시스템에서 Xcode Project 폴더 *ziped*를 복사한 결과입니다. 이러한 추가 "." 파일은 코드 서명 검증에 실패하게 됩니다.

Xcode 프로젝트 폴더에서 문제가 있는 Apple Double 파일을 정리하려면 Xcode 프로젝트의 폴더에서 dot_clean 명령을 실행하고 클린 빌드를 수행한 다음 다시 보관하고 제출을 다시 시도하십시오.

dot_clean /the/path/to/xcode/project

참고: 프로젝트 폴더를 터미널로 끌어다 놓으면 경로가 자동으로 채워집니다.

명령을 실행할 때는 메시지가 표시되지 않지만 다음 빌드 시 프로젝트 빌드에 파일에 대한 경고가 표시될 수 있습니다.이를 무시해도 됩니다. 앱이 성공적으로 유효성을 검사하고 제출합니다.

myProject를 정리하여 이 문제를 해결했습니다.xcodeproj 파일(오른쪽 클릭, 패키지 열기), 패키지에는 공동 작업자의 파일이 포함되어 있습니다. 이러한 파일을 삭제한 후 문제가 해결되었습니다.

이 솔루션은 Apple Developer Provisioning Portal에서 배포 인증을 생성하는 것이었습니다.

저는 이 문제를 해결한 이유를 덧붙이고 싶습니다.앱 제목에 ?(물음표)가 있어서 오류가 발생했습니다.

앱에서 원격 푸시 알림을 사용하지 않는 경우 잘못된 바이너리를 수신했지만, 코드가 사용되지 않더라도 푸시 등록을 위한 코드와 원격 알림 등록/수신을 위한 콜백 대리인을 언급하지 않았습니다.

이것은 최근의 일입니다.저번 주에 제출한 서류는 괜찮았습니다.이번 주에는 잘못된 이진을 반환합니다.다행히 오류를 설명하는 이메일이 있습니다.

저도 비슷한 문제를 겪고 있었지만, 저는 자격을 사용하지 않습니다.plist. 하지만 12번의 업로드 실패 후에, 저는 제 info.plist를 확인했고 무언가를 발견했습니다.CFBundleIconFiles 배열에 빈 항목이 있습니다.저는 그것을 제거하고 다시 제출했고, 마침내 승인되었습니다!

정말로, 애플이 그러한 종류의 검증 오류를 노출하는 것이 얼마나 어려울까요?

편집: CFBundleIconFiles가 다른 이름을 사용하기 때문에 이 파일이 어디에 있는지 즉시 알 수 없습니다.프로젝트 정보 보기에서 Ctl을 클릭하고 "원시 키/값 표시"를 선택하면 CFBundleWhating에 대한 참조가 표시됩니다.이 편집기의 경우 존재하지 않는 아이콘=72-@2x.png 파일을 사용하려고 했습니다.

다른 제안된 해결책을 모두 시도해 보았지만 아무 도움이 되지 않았습니다.

저는 결국 새로운 Xcode 프로젝트를 만들고 거기에 제 모든 코드와 리소스를 복사했습니다.그것은 속임수를 썼고, 제 앱은 리뷰 대기열에 놓였습니다.

또한 디버깅/검증을 위해 코드 서명에 대한 Apple 기술 노트를 추천할 수 있습니다.

내 2센트야.

최신 버전의 응용 프로그램 로더를 다운로드합니다.방금 업데이트했는데 다른 오류 메시지가 표시됩니다.

방금 이 번거로움을 겪었는데 이번에는 배포 프로파일 상태가 "Invalid"라는 것을 알게 되었습니다.다른 모든 것이 정상이라고 생각되면 포털의 상태를 다시 확인하고 활성 상태가 아닌 모든 항목을 갱신/재다운로드합니다.

앱 업로드 후 잘못된 이진 파일을 받았는데 실패한 이유에 대한 이메일 후속 조치가 없습니다.한 번에 몇 가지 작업을 해봤는데 다음 중 어느 것이 실제로 해결되었는지 잘 모르겠습니다.

  1. Macbook Pro를 다시 시작했습니다.
  2. 프로젝트의 소스 코드를 NTFS 드라이브에서 HFS+ 드라이브로 이동하고 다시 컴파일했습니다.

저는 이것과 4.3 GM SDK에 문제가 있었습니다.우리의 앱 중 하나가 수신된 업로드를 초과하지 않을 것입니다.이 문제는 프로비저닝 프로파일 문제로 판명되었습니다.앱스토어 프로필을 다시 생성했는데 정상적으로 작동했습니다.

제 솔루션에는 새 앱 ID를 만드는 것이 포함되었습니다.이 문제가 해결된 이유는 정확히 알 수 없지만, 번들 식별자가 일치하지 않았을 수도 있습니다. 새 앱 ID를 생성하면 제 앱과 iTunes가 동일한 것을 기대하는지 확인할 수밖에 없었습니다.

다른 솔루션:

저는 단순히 '코드 서명' 아래의 '해제' 인증서를 설정하면 수정할 수 있습니다.처음에는 '코드 부호화 안 함'으로 설정되었습니다.

저는 비인터레이스 옵션으로 PNG 이미지를 다시 저장하여 문제를 해결했습니다.이전 버전에서는 인터레이스된 png가 허용되었지만 이 이미지가 잘못된 이진수를 유발할 수 있음을 알아야 합니다.

내 사과 메시지:손상된 아이콘 파일 - 아이콘 파일 iconGQ@2x.pn g이 손상된 것 같습니다.아이콘은 인터레이스된 PNG 파일이 아니어야 합니다.

터미널에서 "file" 명령을 사용하여 PNG가 인터레이스되는지 확인할 수 있습니다. Eva-Madrazos-MacBook-Pro-2:GQ 7 통합 광고 Eva$ 파일 *.png Default.png: PNG 이미지 데이터, 320 x 480, 8비트/color RGB, 비인터레이스

행운을 빌어, 에바

저는 애플사에 이메일을 보내서 그들의 로그를 확인해 달라고 요청할 수 있는 가능성을 지적하고 싶습니다.저는 많은 것들을 먼저 시도한 후 바로 그것을 했습니다.거의 4주가 지난 후에 그들에게 상기시킬 필요가 있었지만, 마침내 그들은 대답하고 문제의 정확한 지점을 가리켰습니다.

제 경우 문제는 이전에 다른 앱 아이콘을 사용해 본 적이 있는데, 이전 이미지에 대한 참조가 여전히 'CFBundleIcons'에 남아 있다는 것입니다.드래그 앤 드롭 기능을 사용하여 아이콘을 설정했지만 새 참조가 추가되기 전에 이전 내용이 완전히 지워지지 않았다는 것을 몰랐습니다.

잘못된 참조를 보려면 화살표를 확장하여 plist 파일의 각 하위 요소를 볼 수 있어야 했습니다.한 가지 팁은 파일을 마우스 오른쪽 버튼으로 클릭하고 원시 콘텐츠를 볼 수 있는 옵션을 선택하는 것입니다.그런 식으로 아무것도 확장할 필요가 없습니다.

UUID는 허용되지 않습니다.모든 [UIDevice currentDevice] uniqueIdentifier]를 제거하여 수정했습니다.

언급URL : https://stackoverflow.com/questions/47941/invalid-iphone-application-binary