ฉันได้ทำการตรวจสอบเรื่องนี้แล้วและข้อสรุปของฉันก็เรียบง่าย: สิ่งนี้ไม่สามารถทำได้โดยไม่ต้องทำงานสักหน่อย อ่านส่วนที่เหลือของคำตอบนี้เพื่อดูรายละเอียดเกี่ยวกับสิ่งที่ฉันพบ
android.jar
จริงๆแล้วประกอบด้วย "API สาธารณะ" framework.jar
และcore.jar
ที่พบในsystem/frameworks/
อุปกรณ์ android.jar
เป็นชนิดของสิ่งที่ฉันจะเรียกว่าส่วนหัวของไลบรารี Java การใช้งานทั้งหมดในรหัสไบต์จริงเป็นเพียงสิ่งthrow new RuntimeException("stub");
นี้ช่วยให้คุณสามารถสร้างต่อandroid.jar
(เช่นใน Eclipse) แต่การดำเนินการจะต้องดำเนินการบนอุปกรณ์หรือโปรแกรมจำลอง
API สาธารณะของ Android SDK ถูกกำหนดโดยคลาส / วิธีการ / ฟิลด์ที่ไม่ได้นำหน้าด้วย@{hide}
คำอธิบายประกอบ javadoc กล่าวคือทุกสิ่งที่ไม่มีคำอธิบายประกอบจะรวมอยู่ใน SDK
android.jar
ถูกสร้างขึ้นมาจากแหล่งที่ตั้งอยู่ในout/target/common/obj/JAVA_LIBRARIES/android_stubs_current_intermediates
ที่ตัวเองสร้างขึ้นโดยเครื่องมือDroidDocbuild/tools/droiddoc
ตั้งอยู่ใน
DroidDocเป็นเครื่องมือ (อาจดัดแปลงมาจาก javadoc หรือใช้ javadoc) ที่สร้างเอกสาร Android SDK จริง ในฐานะที่เป็นผลข้างเคียงและอาจเป็นเพราะมันแยกวิเคราะห์ javadoc ทั้งหมดอยู่แล้วมันยังพ่นสตับ Android ออกมาซึ่งจะรวบรวมเป็นไฟล์android.jar
ที่แจกจ่ายใน SDK
ดังนั้นในการรวมสิ่งที่ซ่อนไว้คุณสามารถทำได้หากคุณต้องการรวมเฉพาะบางส่วนเพียงแค่ลบ@hide
คำอธิบายประกอบและสร้าง SDK ใหม่
อย่างไรก็ตามหากคุณต้องการรวมทุกส่วนที่ซ่อนไว้สิ่งต่างๆจะซับซ้อนมากขึ้น คุณสามารถแก้ไขDroidDoc (แหล่งที่มาที่เกี่ยวข้องอยู่build/tools/droiddoc/src/Stubs.java
) เพื่อให้ตรวจพบว่าไม่มีสิ่งใดซ่อนอยู่ นี่เป็นเรื่องเล็กน้อยและฉันได้ลองแล้ว แต่ต้นขั้วที่สร้างขึ้นนั้นไม่ได้รวบรวมเลย
ข้อสรุปของฉันในตอนนี้คือมันไม่สามารถทำได้ ต้นขั้วที่สร้างขึ้นหากคุณลบส่วนของ DroidDoc ที่ตรวจพบคำอธิบายประกอบที่ซ่อนอยู่นั้นไม่สามารถรวบรวมได้และจะต้องใช้งานเล็กน้อยในการรวบรวมอย่างถูกต้อง
ดังนั้นคำตอบของฉันสำหรับคำถามของคุณคือ: ไม่สิ่งนี้ไม่สามารถทำได้โดยไม่ต้องทำงานมากมาย ขออภัย.
หมายเหตุด้านข้างเกี่ยวกับmkstubs
เครื่องมือ mkstubs
จะใช้เมื่อคุณสร้างส่วนเสริมSDKนั่นคือส่วนเสริมที่คุณสามารถพบได้ในตัวจัดการ Android SDK จากผู้ขายเช่น Samsung ให้ API เพิ่มเติมสำหรับสิ่งต่างๆสำหรับโทรศัพท์ Samsung โดยเฉพาะ mkstubs
ทำเช่นเดียวกับกระบวนการสร้างต้นขั้วของ DroidDoc แต่จะไม่ใช้@hide
คำอธิบายประกอบ แต่จะใช้.defs
ไฟล์ที่อธิบายว่าแพ็กเกจ / คลาส / ฟิลด์ใดที่จะรวมหรือแยกออกจากส่วนเสริม SDK ของคุณ
อย่างไรก็ตามทั้งหมดนี้ไม่เกี่ยวข้องกับคำถามเนื่องจากบิวด์ Android SDK ไม่ได้ใช้mkstubs
เครื่องมือนี้ (น่าเสียดาย.)