Program Club

잘못된 iPhone 응용 프로그램 바이너리

proclub 2020. 10. 14. 21:26
반응형

잘못된 iPhone 응용 프로그램 바이너리


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

업로드 한 바이너리가 잘못되었습니다. 서명이 유효하지 않거나 Apple 제출 인증서로 서명되지 않았습니다.


참고 :이 페이지는 특정 오류 메시지의 가능한 원인에 대한 모든 정보를 볼 수있는 저장소로 바뀌 었으므로 원래 질문의 세부 정보가 제거되었습니다.

iPhone 애플리케이션을 App Store에 제출하는 방법에 대한 일반적인 정보 는 iPhone 애플리케이션을 AppStore에 업로드하는 단계를 참조하십시오 .


Xcode가 사용할 서명 인증서에 대해 때때로 혼동되는 것은 내 경험이었습니다. 이 문제를 해결하기 위해 코드 서명 설정을 변경 한 후 (그리고 클린 빌드를 수행 한 후) Xcode를 종료하고 다시 시작하는 습관이 생겼습니다.


나도 명령 줄에서 zip에 문제가 있음을 언급하고 싶었습니다. 문제는 기본적으로 심볼릭 링크를 처리하는 방식에 있습니다. 사용 :

zip -y -r myapp.zip myapp.app

그 문제를 해결했습니다.


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

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

동일한 오류가 발생하면 [ProjectName] .xcodeproj 디렉터리에서 project.pbxproj 파일을 찾아 원하는 편집기에서 엽니 다. 배포 섹션을 찾으십시오. 내 깨진 하나는 다음과 같이 보였습니다.

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;
};

무고한 사람들을 보호하기 위해 guids 변경


같은 문제, 다른 해결책.

제 경우에는 zip -r myapp.zip myapp.appTurns out을 사용하여 파일을 압축 했는데 zip 명령이 번들을 망쳤습니다. 파인더에서 압축하면 작동했습니다.


나는 같은 문제가 있었고 여러 가지를 시도한 후 코드 서명 자격에서 .plist 자격을 제거하고 (비어 두었다) 잘 구축하고 마지막으로 업로드했습니다.

모두 행운을 빕니다 :-D


또 다른 데이터 포인트 : 잠시 동안 내 앱이 실행되었습니다. 이제 인앱 구매에 대한 지원을 추가했는데 갑자기 "잘못된 바이너리 / 잘못된 서명"문제로 실패합니다. 주의 깊게 살펴보면 자격 plist 파일의 application-identifier 값이 꺼져 있음을 알았습니다.

이것은 아마도 프로비저닝 프로파일을 와일드 카드 프로파일에서 앱 특정 프로파일로 대체했다는 사실과 관련이있을 것입니다 (인앱 구매에 필요). 이전 프로필에서 검증 된 잘못된 앱 ID입니다. info.plist의 앱 ID와 일치하지 않았지만 분명히 iTunes는 그것을 용서했습니다.

요약하자면 :

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

"잘못된 바이너리"가 발생합니다.


빌드 할 때 프로비저닝이 빌드에 추가되지 않은 것을 알았습니다.

나를위한 수정 사항은 일반적으로 시뮬레이터를 사용하는 iPhone 장치로 빌드를 설정하는 것이었지만 프로비저닝 프로파일은 포함되지 않습니다.

이것은 멍청한 실수 일 수 있습니다. 일반적으로 장치에 빌드 할 수는 없지만 배포를 위해 빌드하면 할 수 있습니다.


글쎄, 여러 번 단계를 반복 한 후 마침내 내 앱을 업로드하는 데 성공했습니다.

정확히 무엇을 고쳤는지 모르겠지만 성공적인 시도 전에 Xcode와 Firefox를 닫고 다시 시작했습니다. 그 앱 중 하나에 나쁜 juju가있는 것 같아요.


내가 만난 문제는 다음과 같습니다. 업로드하기 전에 Subversion에 바이너리를 추가했습니다. 바이너리를 비교 / 압축 한 다음 숨겨진 .svn 디렉토리를 포함하여 코드 서명을 엉망으로 만듭니다.


위의 글을 포함한 다양한 글을 읽은 후 다양한 시도를 해봤습니다. 마침내 나를 위해 일한 것은 완전히 다시 시작되었습니다! 내 앱과 관련된 모든 인증서 및 프로비저닝 프로필을 삭제했습니다.

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

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

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


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

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

짧은 대답은 "결국 info.plist를 다시 확인하고 무언가를 발견했습니다. 새로운 지침에 따라 CFBundleIconFiles를 추가했지만 배열 목록에 빈 항목이있었습니다.이를 제거하고 다시 제출했습니다. 받아 들여졌습니다! "


비슷한 문제가 있었지만 Monotouch에서. 릴리스 프로필이 개발자 인증서를 사용하도록 설정되어 있음을 발견했습니다. 다음과 같이 표시되어야합니다.여기에 이미지 설명 입력


이 문제에는 많은 원인이있는 것 같습니다. 내 해결책은 다음과 같습니다.

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

If you building the build with one set of credentials and re-signing it with a different one (e.g. for adhoc/appstore distribution), you must ensure that the build was originally built & signed with credentials belonging to the same iOS development team that the distribution credentials you are re-signing with belong to.

So don't build with "Indy Dev Inc" credentials then try to deploy with "Company Inc" credentials. Make sure you setup both "Company Inc" dev, and distribution credentials, and use them.

I posted more info about this on my blog: http://omegadelta.net/2011/06/09/fiendish-ios-code-signing-invalid-binary-issue/


I had the same problem. I was ready to throw in the towel on this problem but I figured it out when I went to check in my code using Murky. I always skim the diffs on the files that changed before I check in. When doing so this time I noticed that the project.pbxproj file had changed....and in the Distribution section the entry for “PROVISIONING_PROFILE[sdk=iphoneos*]” was blank.

Quiting and restarting Xcode didn't work for me. Instead, I went into both my project and target settings and changed the code signing to directly select my Distribution profile rather than relying on the auto-select feature. Doing this caused the project.pbxproj file to populate with the correct values even though the auto-select feature supposedly selected the exact same profile that I selected manually.

I need a beer...


After trying all of the other fixes listed here we logged a TSI with Apple. Having followed all the steps in Technical Note TN2250 our problem was caused because a sealed resource was missing or invalid. In our case it was ._.DS_Store.

The ".." is called an Apple Double file, and is the result of copying the Xcode Project folder, *unzipped*, onto and back from a file system that doesn't properly support HFS+'s 'resource forks' (used for code signatures). These extra ".." files result and cause code signing verification failure.

To clean the problematic Apple Double files from your Xcode project folder, run the dot_clean command on your Xcode project's folder, do a clean build, and then rearchive and reattempt your submission.

dot_clean /the/path/to/xcode/project

Note: You can just drag the project folder into the terminal to automatically populate the path

There is no message when you run the command but the project build might show a warning about the file when you next build. You can ignore this, the app will validate and submit successfully.


Resolved this by cleaning up the myProject.xcodeproj file (right click, open package), the package contained files from co-developer, after deleting these the problem was solved


For me the solution was creating a distributing certification at: Apple Developer Provisioning Portal.


For what it is worth, I want to add what it was that fixed this issue for me. I had a ? (question-mark) in my app title that was causing the error.


I received an invalid binary, if the app does not use remote push notification, but I left the code for registering push and the callback delegates for registering/receiving remote notification uncommented, even if the code does not get used.

This is recent. My last submission last week was fine. This week, it returns invalid binary. Luckily, there is an email that explains the error.


I was having a similar problem, but I don't use entitlements.plist. However, after a dozen failed uploads, I checked my info.plist and discovered something. My CFBundleIconFiles array had an empty entry. I removed that and re-submitted, and it was finally accepted!

Seriously, how hard would it be for Apple to expose those kind of validation errors?

Edit: It's not immediately apparant where the CFBundleIconFiles are because they use a different name. In the project info view, Ctl click and select "Show Raw Keys/Values" and then you will see the references to CFBundleWhatever. In this editor's case, he was trying to use a non-existent icon=72-@2x.png file.


My two cents:

Download the latest version of the Application Loader. I've just updated and now get a different error message.


I just went through this hassle (again) but this time I found that my distribution profile had a status of "Invalid". If you think everything else is right, double-check the status in the portal and renew/re-download anything that isn't in the Active state.


I received an Invalid Binary after an app upload, with no e-mail followup as to why it failed. I tried doing a couple things at once, and I'm not sure which of the following actually fixed it:

  1. Restarted Macbook Pro
  2. Moved the source code for my project from an NTFS drive to an HFS+ drive and recompiled.

I had a problem with this and the 4.3 GM SDK. One of our apps would not make it past upload received. It turned out to be a provisioning profile issue. I regenerated the app store profile and it worked fine.


My solution involved creating a new App ID. I'm not sure exactly why that fixed it, but I suspect it may have been mismatched Bundle Identifiers — creating the new App ID forced me to make sure my app and iTunes were expecting the same thing.


Another solution:

For me simply setting the 'Release' certificates under 'code signing' fixed it. They were initially set to 'Don't code sign'.


For me the problem was solved by resaving a PNG image with the non-interlaced option. In previous versions interlaced png were allowed, but know this images can cause the invalid binary.

My apple message: Corrupt Icon File - The icon file iconGQ@2x.png appears to be corrupt. Your icon must not be an interlaced PNG file.

You can see if the PNG is interlaced using the command "file" in the terminal: Eva-Madrazos-MacBook-Pro-2:GQ 7 integracion ads Eva$ file *.png Default.png: PNG image data, 320 x 480, 8-bit/color RGB, non-interlaced

Good luck, Eva


I want to point out the possibility to email Apple and ask them to check their logs. I did just that, after having tried loads of things first. It was necessary to remind them after almost four weeks, but finally they replied and pointed to the exact spot of the issue.

The problem in my case was that I had previously tried other app icons, and a reference to the old image still remained in 'CFBundleIcons'. I used the drag and drop functionality to set the icon, but I didn't notice that the old content wasn't completely cleared before the new reference was added.

To see the faulty reference it was necessary to expand the arrows to view each and every sub element in the plist file. One tips is to right-click in the file and select the option for viewing the raw content. In that way you will not need to expand anything.


다른 모든 제안 된 솔루션을 시도했지만 도움이되지 않았습니다.

결국 새로운 Xcode 프로젝트를 만들고 모든 코드와 리소스를 여기에 복사했습니다. 그게 트릭이었고 내 앱은 리뷰 대기열에 배치되었습니다.

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


uuid는 허용되지 않습니다. 모든 [[UIDevice currentDevice] uniqueIdentifier]를 제거하여 문제를 해결했습니다.

참고 URL : https://stackoverflow.com/questions/47941/invalid-iphone-application-binary

반응형