Kết quả phân tích API quá lớn khi tải ứng dụng lên mac store


107

Tôi sẽ tải ứng dụng mac đầu tiên của mình lên Apple Store

Và sửa tất cả các lỗi xác thực của biểu tượng, danh mục ...

Nhưng sau đó tôi đã vượt qua xác thực với cảnh báo:

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.

Và tải lên của tôi bị từ chối với lý do: "Nhị phân không hợp lệ"
Có ai có kinh nghiệm về trường hợp này?


CẬP NHẬT: cảnh báo này không phải là lý do từ chối, nó có thể là vấn đề lưu trữ ứng dụng. Tôi đã phát hành thành công ứng dụng của mình để lưu trữ.

Vì vậy, chúng ta có thể yên tâm bỏ qua điều đó.


1
Bạn có thể giải quyết vấn đề này? Tôi có cùng một vấn đề và tôi không biết phải làm gì!
nosmirck

1
Nhận được cái này quá. Tôi không thể tìm thấy nguồn ở bất cứ đâu để giải thích chính xác nó có nghĩa là gì?
Andrew Davis

5
Tôi vừa nâng cấp ứng dụng vận chuyển rất nhỏ của mình từ Swift 1.2 lên Swift 2 và gặp lỗi này. Không có chức năng bổ sung. Đây thực sự là một thiếu sót trong công cụ phân tích của họ. (Đây là một ứng dụng iOS, trong Xcode 7, không cửa hàng Mac.)
Ray Fix

2
Tương tự như Ray Fix, không sử dụng bất kỳ API tư nhân, chỉ là mã nâng cấp từ Objective-C để nhanh chóng
Jerome Diaz

1
Tương tự như trên, không có API riêng, chỉ sử dụng Xcode 7 và tôi đã nhận.
DevC

Câu trả lời:


65

Apple cấm sử dụng các API riêng tư hoặc không có giấy tờ trong ứng dụng iOS. Bất kỳ lệnh gọi nào bạn thực hiện tới các phương thức có cùng tên với các phương thức API riêng tư hoặc không có tài liệu sẽ được gắn cờ là sử dụng API riêng tư, ngay cả khi phương thức được gọi là phương thức do bạn tự xác định.

App Loader thực hiện quét ban đầu, kiểm tra tên phương thức, quyền truy cập biến phiên bản và thậm chí sử dụng @selector với tên phương thức riêng tư. App Loader không phải lúc nào cũng hoạt động tốt và bạn càng có nhiều tệp nguồn thì càng có nhiều khả năng đưa ra cảnh báo rằng tệp phân tích API mà nó đã tạo là "quá lớn".

May mắn thay, bạn vẫn có thể gửi đơn đăng ký của mình, bất chấp cảnh báo. Apple sẽ kiểm tra nội bộ và nếu có vấn đề gì đó bị phản đối do trùng tên, bạn sẽ phải xem xét lại một lần nữa.

Erika Sadun đã cố gắng tạo một ứng dụng có tên API Kit có thể quét cho bạn, nhưng dường như cô ấy đã từ bỏ công việc của mình và xóa mọi dấu vết của ứng dụng khỏi trang web của mình.

Chimp Studios đã tạo ra App Scanner để làm điều tương tự, nhưng nó đã không được cập nhật kể từ năm 2011. Thật không may, đối với các dự án lớn - và điều này bao gồm các dự án có rất nhiều nhóm bổ sung từ CocoaPods - hiện tại (2014) không tốt cách giải quyết vấn đề này ngoài việc chủ động đặt tên cho những thứ sao cho chúng không xung đột với phương thức API riêng và tên phiên bản.

Bạn có thể chủ động tìm hiểu về Quy ước đặt tên ca cao của Apple và cố gắng dự đoán. Điều đó sẽ làm giảm các cơn đau đầu trong tương lai. Tuy nhiên, cho đến khi Apple giới thiệu một cái gì đó như không gian tên, chúng ta có thể tiếp tục gặp phải vấn đề này.

Lỗi "nhị phân không hợp lệ" có thể xuất phát từ một số nguyên nhân, nhưng nó hoàn toàn không liên quan đến tài liệu phân tích API được tạo bởi App Loader.

Bạn nên biết rằng ngay cả khi quét, vẫn có nhiều cách để vượt qua việc cấm sử dụng các API riêng tư / không có giấy tờ. :)


Bạn đang nói rằng lỗi "quá lớn" này là một lỗi hoàn toàn bị dán nhãn sai? Rằng nó luôn chỉ ra một số loại sử dụng API không hợp lệ? Bạn đã thực hiện kết nối này như thế nào?
Chris Prince

Tôi nhận ra câu hỏi là về Mac App store nhưng đối với cửa hàng ứng dụng iOS, câu trả lời này không hoàn toàn chính xác. Tôi vừa gặp cảnh báo này khi cố gắng xác thực ứng dụng của mình bằng Xcode 7 GM, nhưng khi tôi thực sự tải nó lên ITC bằng Xcode 7 GM, không có vấn đề gì.
Chris Prince

Gợi ý ... mà bạn đang ám chỉ trong câu cuối cùng của mình là gì?
goodguys_activate

Cảm ơn bạn vì một câu trả lời rất hữu ích. Bạn có biết tệp Phân tích API được tìm thấy ở đâu không. Tôi muốn loại bỏ mọi cảnh báo từ ứng dụng của mình
462990 29/11/15

Vì vậy, nếu Kết nối iTunes cho thấy rằng bản dựng đã được tải lên, điều đó có nghĩa là mặc dù thông báo lỗi này, nó đã đi qua? Và tất cả những gì tôi làm bây giờ là chờ đợi sự chấp thuận của họ?
Jay

10

Sau khi giải quyết vấn đề này lần đầu tiên trong dự án Swift đầu tiên của tôi, có vẻ như câu trả lời phổ biến nhất cho câu hỏi này bây giờ là:

Nếu bạn sử dụng Swift 2.x và XCode 7, bạn sẽ gặp lỗi này. Bỏ qua đi.

[CẬP NHẬT: Triển khai XCode 7.3 & iOS 9.3 dường như đã khắc phục được sự cố này!]


Tôi đang sử dụng Swift 2.1 trong Xcode 7.3 và có vẻ như đây là trường hợp. Hy vọng rằng họ sẽ sửa chữa nó sớm.
Dai

jap, tôi cũng đang sử dụng Swift 2.1.1 và xCode 7.2.1 nhận được thông tin này ... tôi sẽ cho bạn biết nếu nó vượt qua.
HitEmUp

1

Đây là một cách dễ dàng để vượt qua chúng ... lưu trữ ngược lại tên bộ chọn, như "dlroWolleH", sau đó đảo ngược chuỗi trước khi bạn gọi phương thức.

Nếu Apple khôn ngoan với điều đó thì bạn có thể mã hóa chúng.


48
Hoặc bạn có thể làm theo các nguyên tắc đánh giá và không sử dụng API riêng tư.
Maciej Swic

Điều này sẽ không ngăn cản bất cứ điều gì. Họ sẽ có thể phát hiện nếu phương thức được gọi từ chính phương thức đó. Không phải từ tên bộ chọn bạn sử dụng.
nicktones

2
@nicktones nó có thể không gọi những phương pháp riêng cho đến khi một điểm nào đó trong tương lai, chẳng hạn như sau khi ứng dụng của bạn được chấp thuận
powerj1984
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.