앱을 Mac 스토어에 업로드 할 때 결과 API 분석이 너무 큽니다.


107

첫 번째 Mac 앱을 Apple Store에 업로드하겠습니다.

그리고 아이콘, 카테고리의 모든 유효성 검사 버그를 수정했습니다.

하지만 그 후 경고와 함께 유효성 검사를 통과했습니다.

The resulting API analysis file is too large. We were unable to validate your API usage prior to delivery. This is just an informational message.

그리고 내 업로드가 거부되는 이유는 다음과 같습니다. "잘못된 바이너리"
이 사건을 경험 한 사람이 있습니까?


업데이트 :이 경고는 거부 이유가 아니며 앱 보관 문제 일 수 있습니다. 스토어에 내 앱을 성공적으로 출시했습니다.

그래서 우리는 그것을 무시할 수 있습니다.


1
이 문제를 해결할 수 있습니까? 나는 똑같은 문제가 있고 무엇을 해야할지 모르겠다!
nosmirck 2014-06-26

1
이것도 받았습니다. 그것이 의미하는 바를 정확하게 설명 할 출처를 어디서도 찾을 수 없습니까?
Andrew Davis

5
아주 작은 배송 앱을 Swift 1.2에서 Swift 2로 업그레이드했는데이 오류가 발생했습니다. 추가 기능이 없습니다. 이것은 실제로 분석 도구의 단점이 될 것입니다. (이것은 Mac 스토어가 아닌 Xcode 7의 iOS 앱용입니다.)
Ray Fix

2
Ray Fix와 동일하며 사설 API를 사용하지 않고 Objective-C에서 swift로 코드 업그레이드
Jerome Diaz

1
위와 동일하지만 개인 API가 없으며 Xcode 7을 사용하고 있습니다.
DevC

답변:


65

Apple은 iOS 앱에서 비공개 또는 문서화되지 않은 API 사용을 금지합니다. 비공개 또는 문서화되지 않은 API 메소드와 이름이 같은 메소드에 대한 호출은 호출되는 메소드가 사용자가 직접 정의한 것이더라도 비공개 API 사용으로 플래그 지정됩니다.

App Loader는 초기 스캔을 수행하여 메서드 이름, 인스턴스 변수 액세스 및 개인 메서드 이름이있는 @selector 사용을 확인합니다. App Loader가 항상 훌륭한 작업을 수행하는 것은 아닙니다. 소스 파일이 많을수록 생성 된 API 분석 파일이 "너무 크다"는 경고가 표시 될 가능성이 높습니다.

다행히도 경고에도 불구하고 신청서를 제출할 수 있습니다. Apple은 내부적으로이를 확인하고 중복 된 이름으로 인해 문제가 발생하면 다시 검토 과정을 거쳐야합니다.

Erika Sadun은 사용자를 위해 스캔을 수행 할 API Kit라는 앱을 만들려고했지만 작업을 포기하고 웹 사이트에서 응용 프로그램의 흔적을 제거한 것으로 보입니다.

Chimp Studios 는 동일한 작업을 수행하기 위해 App Scanner 를 만들었지 만 2011 년 이후로 업데이트되지 않았습니다. 안타깝게도 대규모 프로젝트 (CocoaPods의 추가 포드가 많은 프로젝트 포함)의 경우 현재 (2014 년) 좋은 것은 없습니다. 개인 API 메소드 및 인스턴스 이름과 충돌하지 않도록 사전에 이름을 지정하는 것 외에이 문제를 해결하는 방법입니다.

Apple의 Cocoa Naming Conventions 에 대해 사전에 배우고 예상 할 수 있습니다. 그것은 미래의 두통을 줄일 것입니다. 그러나 Apple이 네임 스페이스와 같은 것을 도입 할 때까지 우리는 때때로이 문제에 직면 할 수 있습니다.

"잘못된 바이너리"오류는 여러 원인에서 발생할 수 있지만 App Loader에서 생성 한 API 분석 문서와는 전혀 관련이 없습니다.

스캔을해도 비공개 / 문서화되지 않은 API 사용에 대한 금지를 피할 수있는 방법이 여전히 있다는 것을 알아야합니다. :)


이 "너무 큰"오류가 순전히 잘못 분류 된 오류라는 말입니까? 그것은 항상 유효하지 않은 API 사용의 어떤 종류를 나타냅니다? 어떻게이 관계를 맺었습니까?
Chris Prince

질문이 Mac 앱 스토어에 관한 것이지만 iOS 앱 스토어의 경우이 답변이 완전히 정확하지 않습니다. Xcode 7 GM으로 앱의 유효성을 검사하려고 할 때이 경고가 표시되었지만 실제로 Xcode 7 GM으로 ITC에 업로드했을 때 문제 가 없었습니다 .
크리스 왕자

마지막 문장에서 암시하는 힌트는 무엇입니까?
goodguys_activate

매우 유용한 답변에 감사드립니다. API 분석 파일이 어디에 있는지 알고 있습니까? 내 앱의 모든 경고를 근절하고 싶습니다
user462990 2015

따라서 iTunes Connects에 빌드가 업로드 된 것으로 표시되면이 오류 메시지에도 불구하고 완료 되었습니까? 그리고 지금 내가하는 일은 그들의 승인을 기다리는 것뿐입니까?
Jay

10

첫 번째 Swift 프로젝트에서이 문제를 처음으로 해결 한 후이 질문에 대한 가장 일반적인 대답은 다음과 같습니다.

Swift 2.x 및 XCode 7을 사용하는 경우이 오류가 발생합니다. 그냥 무시하세요.

[업데이트 : XCode 7.3 및 iOS 9.3 롤아웃으로이 문제가 해결 된 것 같습니다!]


나는 Xcode 7.3에서 Swift 2.1을 사용하고 있으며 이것이 사실 인 것 같습니다. 곧 고칠 수 있기를 바랍니다.
다이

jap, im은 또한 Swift 2.1.1 및 xCode 7.2.1을 사용 하여이 정보를 얻습니다. 통과하면 알려 드리겠습니다.
HitEmUp 2016 년

1

여기에 쉽게 이동할 수있는 방법이 있습니다. "dlroWolleH"와 같이 선택자 이름을 반대로 저장 한 다음 메서드를 호출하기 전에 문자열을 반대로합니다.

Apple이 이에 대해 현명 해지면 암호화 할 수 있습니다.


48
또는 검토 지침을 따르고 비공개 API를 사용하지 않을 수 있습니다.
Maciej Swic

이것은 아무것도 멈추지 않을 것입니다. 메서드 자체에서 메서드가 호출되었는지 감지 할 수 있습니다. 사용하는 선택기 이름이 아닙니다.
nicktones 2015-09-24

2
@nicktones이 승인 등의 앱이 이후로 미래의 시점까지 개인 메서드를 호출 할 수 있어요
powerj1984
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.