การวิเคราะห์ API ที่ได้มีขนาดใหญ่เกินไปเมื่ออัปโหลดแอปไปยัง mac store


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

1
ได้รับนี้ด้วย. ฉันไม่สามารถหาแหล่งที่มาที่จะอธิบายความหมายได้อย่างถูกต้อง?
Andrew Davis

5
ฉันเพิ่งอัปเกรดแอปจัดส่งขนาดเล็กมากจาก Swift 1.2 เป็น Swift 2 และได้รับข้อผิดพลาดนี้ ไม่มีฟังก์ชันเพิ่มเติม สิ่งนี้ค่อนข้างจะเป็นข้อบกพร่องในเครื่องมือวิเคราะห์ของพวกเขา (สำหรับแอป iOS ใน Xcode 7 ไม่ใช่ Mac store)
Ray Fix

2
เหมือนกับ Ray Fix ไม่ใช้ API ส่วนตัวใด ๆ เพียงแค่อัปเกรดโค้ดจาก Objective-C เป็น swift
Jerome Diaz

1
เช่นเดียวกับข้างต้นไม่มี API ส่วนตัวใช้ Xcode 7 และฉันได้รับ
DevC

คำตอบ:


65

Apple ห้ามใช้ API ส่วนตัวหรือไม่มีเอกสารในแอพ iOS การเรียกใช้เมธอดใด ๆ ที่คุณใช้ชื่อเดียวกับเมธอด API ส่วนตัวหรือไม่เป็นเอกสารจะถูกตั้งค่าสถานะเป็นการใช้ API ส่วนตัวแม้ว่าเมธอดที่เรียกนั้นจะเป็นสิ่งที่คุณกำหนดเอง

App Loader ทำการสแกนเบื้องต้นตรวจสอบชื่อเมธอดการเข้าถึงตัวแปรอินสแตนซ์และแม้แต่การใช้ @selector ด้วยชื่อเมธอดส่วนตัว App Loader ไม่ได้ทำงานที่ยอดเยี่ยมเสมอไปและยิ่งคุณมีไฟล์ต้นฉบับมากเท่าไหร่ก็ยิ่งมีโอกาสมากขึ้นที่จะแจ้งเตือนว่าไฟล์การวิเคราะห์ API ที่สร้างขึ้นนั้น "ใหญ่เกินไป"

โชคดีที่คุณยังสามารถส่งใบสมัครได้แม้ว่าจะมีคำเตือนก็ตาม Apple จะตรวจสอบเป็นการภายในและหากมีบางอย่างถูกไล่ออกเนื่องจากชื่อที่ทับซ้อนกันคุณจะต้องดำเนินการตรวจสอบอีกครั้ง

Erika Sadun พยายามสร้างแอปที่เรียกว่า API Kit ที่จะทำการสแกนให้คุณ แต่ดูเหมือนว่าเธอจะละทิ้งงานและลบร่องรอยของแอปพลิเคชันออกจากเว็บไซต์ของเธอ

Chimp Studios สร้างApp Scannerเพื่อทำสิ่งเดียวกัน แต่ยังไม่ได้รับการอัปเดตตั้งแต่ปี 2011 น่าเสียดายสำหรับโปรเจ็กต์ขนาดใหญ่ - และรวมถึงโปรเจ็กต์ที่มีพ็อดพิเศษจำนวนมากจาก CocoaPods - ไม่มีกระแส (2014) ที่ดี วิธีแก้ปัญหานี้นอกเหนือจากการตั้งชื่อสิ่งต่างๆในเชิงรุกเพื่อที่จะไม่ขัดแย้งกับเมธอด API ส่วนตัวและชื่ออินสแตนซ์

คุณสามารถเรียนรู้เชิงรุกเกี่ยวกับข้อตกลงการตั้งชื่อโกโก้ของ Apple และพยายามคาดการณ์ นั่นจะช่วยลดอาการปวดหัวในอนาคต อย่างไรก็ตามจนกว่า Apple จะแนะนำบางอย่างเช่นเนมสเปซเราอาจยังคงพบปัญหานี้เป็นครั้งคราว

ข้อผิดพลาด "ไบนารีไม่ถูกต้อง" อาจมาจากสาเหตุหลายประการ แต่ไม่เกี่ยวข้องกับเอกสารการวิเคราะห์ API ที่สร้างโดย App Loader

คุณควรทราบว่าแม้จะมีการสแกนแล้ว แต่ก็ยังมีวิธีหลีกเลี่ยงข้อห้ามในการใช้ API ส่วนตัว / ไม่เป็นเอกสาร :)


คุณกำลังบอกว่าข้อผิดพลาด "ใหญ่เกินไป" นี้เป็นข้อผิดพลาดที่มีป้ายกำกับไม่ถูกต้องหรือไม่ มันบ่งบอกถึงการใช้งาน API บางประเภทที่ไม่ถูกต้องเสมอ ? คุณทำการเชื่อมต่อนี้ได้อย่างไร?
Chris Prince

ฉันรู้ว่าคำถามเกี่ยวกับ Mac App store แต่สำหรับ iOS app store คำตอบนี้ไม่ถูกต้องทั้งหมด ฉันเพิ่งได้รับคำเตือนนี้เมื่อฉันพยายามตรวจสอบความถูกต้องของแอปด้วย Xcode 7 GM แต่เมื่อฉันอัปโหลดไปยัง ITC ด้วย Xcode 7 GM ก็ไม่มีปัญหา
Chris Prince

คำใบ้ ... ที่บ่งบอกถึงประโยคสุดท้ายของคุณคืออะไร?
goodguys_activate

ขอบคุณสำหรับคำตอบที่เป็นประโยชน์ คุณรู้หรือไม่ว่าไฟล์การวิเคราะห์ API อยู่ที่ใด ฉันต้องการขจัดทุกคำเตือนจากแอปของฉัน
user462990

ดังนั้นหาก iTunes Connects แสดงว่ามีการอัปโหลดบิวด์นั่นหมายความว่าแม้จะมีข้อความแสดงข้อผิดพลาดนี้ แต่ก็ผ่าน? และทั้งหมดที่ฉันทำตอนนี้คือรอการอนุมัติจากพวกเขา?
Jay

10

หลังจากตีปัญหานี้เป็นครั้งแรกในโครงการ Swift แรกของฉันดูเหมือนว่าคำตอบที่พบบ่อยที่สุดสำหรับคำถามนี้คือ:

หากคุณใช้ Swift 2.x และ XCode 7 คุณจะได้รับข้อผิดพลาดนี้ เพียงแค่ไม่สนใจมัน

[อัปเดต: ดูเหมือนว่าการเปิดตัว XCode 7.3 และ iOS 9.3 จะแก้ไขปัญหานี้ได้แล้ว!]


ฉันใช้ Swift 2.1 ใน Xcode 7.3 และดูเหมือนจะเป็นเช่นนั้น หวังว่าพวกเขาจะแก้ไขได้ในไม่ช้า
Dai

jap ฉันยังใช้ Swift 2.1.1 และ xCode 7.2.1 รับข้อมูลนี้ ... ฉันจะแจ้งให้คุณทราบหากผ่าน
HitEmUp

1

นี่คือวิธีง่ายๆในการหลีกเลี่ยงพวกเขา ... เก็บชื่อตัวเลือกกลับด้านเช่น "dlroWolleH" จากนั้นย้อนกลับสตริงก่อนที่คุณจะเรียกใช้เมธอด

หาก Apple ฉลาดในเรื่องนั้นคุณสามารถเข้ารหัสได้


48
หรือคุณสามารถทำตามหลักเกณฑ์การตรวจสอบและไม่ใช้ API ส่วนตัว
Maciej Swic

นี่จะไม่หยุดอะไรเลย พวกเขาจะสามารถตรวจจับได้ว่าเมธอดถูกเรียกใช้จากเมธอดนั้นเองหรือไม่ ไม่ใช่จากชื่อตัวเลือกที่คุณใช้
nicktones

2
@nicktones เป็นไปไม่ได้ที่จะไม่เรียกใช้เมธอดส่วนตัวจนกว่าจะถึงจุดหนึ่งในอนาคตเช่นหลังจากที่แอปของคุณได้รับการอนุมัติแล้ว
powerj1984
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.