ตามชุดความมุ่งมั่นใน AOSP นั้น Google อาจเริ่มจำกัดการเข้าถึง API ที่ไม่มีเอกสารหรือซ่อนอยู่ใน Android P แอพแบรนด์เนมจำนวนมากใช้ API ที่ซ่อนอยู่เพื่อเพิ่มฟังก์ชันการทำงาน ดังนั้นผลกระทบจึงอาจแพร่กระจายอย่างกว้างขวาง
อัปเดต 2/28/61: Google ได้เผยแพร่บล็อกโพสต์ในวันนี้เพื่อยืนยันการเปลี่ยนแปลง รายละเอียดเพิ่มเติมในตอนท้ายของบทความ
ในขณะที่ผู้ที่ชื่นชอบ Android บางคนเป็นเช่นนั้น การเก็งกำไร ของหวานที่ Android เวอร์ชันถัดไปจะถูกตั้งชื่อตาม มีการพัฒนาที่น่าสนใจเกิดขึ้นเบื้องหลัง เราได้เห็นก น่าจดจำเพียงไม่กี่อย่าง คุณลักษณะที่กำลังจะมีขึ้นใน Android P แต่การค้นพบล่าสุดใน Android Open Source Project (AOSP) ได้รับการพิสูจน์แล้วว่าน่าสนใจยิ่งกว่ามาก ตามข้อผูกพันล่าสุดเหล่านี้ แอปพลิเคชันอาจถูกจำกัดไม่ให้เข้าถึง API ที่ไม่มีเอกสารใน Android SDK (เช่น API ที่ทำเครื่องหมายโดยแอตทริบิวต์ @hide ของ javadoc)
ทำไมเรื่องนี้ถึงสำคัญ
ชุดพัฒนาซอฟต์แวร์ Android (SDK) ช่วยให้นักพัฒนามีไลบรารี API และเครื่องมือที่จำเป็นในการทดสอบและสร้างแอปพลิเคชัน Android ใหม่ Android รุ่นใหม่แต่ละรุ่นมาพร้อมกับโฮสต์ของ API ใหม่ทั้งหมดที่พร้อมให้นักพัฒนาใช้งานได้ผ่าน Android SDK API ใดบ้างที่พร้อมใช้งานสำหรับแอปนั้นขึ้นอยู่กับคอมไพล์ SDKVersion ที่นักพัฒนาตั้งค่าไว้ นั่นเป็นเหตุผลที่ Google
ข้อกำหนดใหม่ของ Play Store มีความสำคัญมาก โดยจะบังคับให้แอปพลิเคชันอัปเดตและโยกย้ายไปใช้ API รุ่นใหม่โฮสต์ของ Google หน้าเอกสาร สำหรับแต่ละคลาสและวิธีการทั้งหมดที่มีอยู่ในแต่ละระดับ API เหล่านี้คือชุดของ API ที่มีการจัดทำเอกสารซึ่งมีอยู่ใน Android SDK อย่างเป็นทางการ คุณสามารถเรียกดูรายการคลาสได้อย่างง่ายดายโดยใช้แอป Android เช่น แอป Android SDK Search ที่เพิ่งเปิดตัวโดยวิศวกร Android เจค วอร์ตัน.
ราคา: ฟรี
4.1.
อย่างไรก็ตาม ไม่ใช่ว่า API ทั้งหมดที่มีอยู่ใน Android แต่ละรุ่นจะได้รับการรับรองโดย Google หรือมีอยู่ใน Android SDK อย่างเป็นทางการ มักจะมี API ที่มีประโยชน์อยู่บ้าง ไม่มีเอกสารแต่กลับมีประโยชน์อย่างมาก ไม่แนะนำให้นักพัฒนาสร้างแอปของตนโดยใช้ API ที่ไม่มีเอกสารหรือซ่อนไว้ แต่หลายๆ คนทำเช่นนั้น เนื่องจากไม่มีทางเลือกอื่นหากต้องการนำเสนอคุณลักษณะบางอย่าง นักพัฒนาที่ใช้ API ที่ซ่อนอยู่หรือไม่มีเอกสารสามารถทำให้ตนเองได้เปรียบทางการแข่งขันเช่นกัน เนื่องจากพวกเขาสามารถนำเสนอคุณสมบัติที่คู่แข่งของพวกเขาซึ่งยึดถือ API ที่นำเสนอโดย Android SDK—ทำไม่ได้
แม้ว่าฉันจะไม่สามารถระบุรายชื่อแอปที่ใช้ API ที่ไม่มีเอกสารได้ (นักพัฒนาอาจไม่แชร์ อันไหนที่พวกเขาใช้เพราะมันจะทำให้คู่แข่งได้เปรียบ) รายการน่าจะค่อนข้างมากกว่า ใหญ่. ดังนั้น ฉันจะสรุปได้ว่าการห้ามการเข้าถึง API ที่ซ่อนอยู่จะมีความสำคัญ มาร์ค เมอร์ฟี่ ผู้ก่อตั้ง คอมมอนส์แวร์เห็นด้วย:
ฉันเห็นด้วยกับการประเมินว่าการแบนการเข้าถึงรายการ @hide-annotated จำนวนมากจะถือเป็นเรื่องใหญ่ หากเป็นเช่นนั้น หวังว่าจะมีแอปบางตัวเข้าถึงรายการเหล่านี้โดยเป็นส่วนหนึ่งของฟังก์ชันการทำงานหลัก อย่างไรก็ตาม ฉันสงสัยว่ามีแอปแบรนด์เนมจำนวนมากใช้งานเป็นครั้งคราว โดยตรงหรือผ่านห้องสมุด
เกิดอะไรขึ้นใน Android P?
การเปลี่ยนแปลงที่กำลังจะเกิดขึ้นเหล่านี้ได้รับการบันทึกครั้งแรกโดย XDA Senior Recognized Developer โรโว89ผู้พัฒนาของ กรอบ Xposed. เขาชี้ให้เห็นความมุ่งมั่นสองประการต่อฉัน หนึ่งในนั้น ที่ ได้รับการ ผสานซึ่งแนะนำเครื่องมือสร้างใหม่ที่เรียกว่า 'hiddenapi' เครื่องมือนี้จะแก้ไขค่าสถานะการเข้าถึงของสมาชิกคลาสทั้งหมดภายในไฟล์ DEX หาก ลายเซ็นของพวกเขาจะปรากฏในรายการสีเทาอินพุตหรือบัญชีดำ และหากเป็นเช่นนั้น วิธีการที่ทำเครื่องหมายไว้จะถือเป็น API ภายในที่มีการจำกัด เข้าถึง. คอมมิตอีกอันหนึ่งอธิบายถึงวิธีการทำงานของบัญชีดำ API มันป้องกันการเข้าถึง คลาสบูต วิธีการและฟิลด์ที่ทำเครื่องหมายโดย 'hiddenapi' ข้างต้นที่นักพัฒนาสามารถเข้าถึงได้โดยการเชื่อมโยงแบบคงที่ การสะท้อนกลับ และ JNI
จากข้อมูลของ rovo89 ผลลัพธ์สุดท้ายของการเปลี่ยนแปลงทั้งสองนี้ใน Android P มีดังต่อไปนี้:
หากคอมมิตเหล่านี้ถูกรวมเข้าด้วยกัน นั่นหมายความว่าแอปจะไม่สามารถใช้/เข้าถึง API ที่ซ่อนอยู่ได้อีกต่อไป คลาส วิธีการ และฟิลด์ที่มีคำอธิบายประกอบด้วย @hide ใน AOSP ดังนั้นจึงไม่ได้เป็นส่วนหนึ่งของ SDK อย่างเป็นทางการ นี่จะไม่เป็นปัญหาสำหรับโมดูล Xposed เนื่องจากฉันสามารถคืนค่าคอมมิตเหล่านั้นหรืออนุญาตให้โมดูลทำได้อย่างง่ายดาย เข้าถึง API เหล่านี้ แต่มีแอพจำนวนมากที่ใช้ประโยชน์จาก API ที่ซ่อนอยู่ และแอพเหล่านั้นก็จะล้มเหลวใน อนาคต.
แท้จริงแล้ว ความมุ่งมั่นเพิ่มเติมแสดงให้เห็นว่านี่อาจเป็นสิ่งที่ Google กำลังวางแผนอยู่ นี้ ให้สัญญา ระบุสิ่งต่อไปนี้:
แม้ว่าการคอมมิตนี้จะไม่ได้ถูกรวมเข้าด้วยกัน เนื่องจากถูกละทิ้งเพื่อสนับสนุนการคอมมิตที่มีขนาดเล็กกว่า 3 รายการ ข้อความคอมมิตจะอธิบายวัตถุประสงค์ของการเปลี่ยนแปลงเหล่านี้ อีกชุด กระทำ แสดงว่า Google จะแนะนำทางเลือกอื่นให้กับนักพัฒนาที่ต้องการใช้ API ที่ไม่ใช่แบบสาธารณะ:
อย่างไรก็ตาม มักไม่มีทางเลือกอื่นนอกเหนือจาก API ที่ซ่อนอยู่ พวกเราที่ XDA สามารถพูดจากประสบการณ์ที่นี่ว่า น่าเสียดายที่การเปลี่ยนแปลงนี้อาจเป็นจุดสิ้นสุดของแอปที่เป็นนวัตกรรมใหม่บางส่วน หรืออาจต้องใช้แอปชื่อดังบางแอปเพื่อลดจำนวนลง ฟังก์ชั่น การเปลี่ยนแปลงที่กำลังจะเกิดขึ้นนี้ดูคล้ายกับการเปลี่ยนแปลงล่าสุด การปราบปรามบริการการเข้าถึง (นั่นเป็นความโชคดี หยุดชั่วคราว ตามที่ Google ประเมินการใช้นวัตกรรม) แม้ว่าแอพส่วนใหญ่ที่ใช้ API ที่ไม่มีเอกสารจะทำด้วยเหตุผลที่ไม่ร้ายแรง แต่อาจมีบางแอพที่ใช้งานในทางที่ผิดเพื่อจุดประสงค์ที่ชั่วร้าย
ด้วยเหตุนี้ Google อาจล็อกการเข้าถึง API ที่ซ่อนอยู่ทั้งหมดใน Android P เพื่อปกป้องผู้ใช้จากส่วนน้อยที่ละเมิดพวกเขา เป็นการยากที่จะบอกว่าสิ่งนี้อาจมีผลกระทบต่อผู้ใช้มากน้อยเพียงใด แต่ถ้าคุณเป็นนักพัฒนาซอฟต์แวร์ เมื่อพิจารณาผ่าน AOSP เพื่อค้นหาการใช้ API ที่ซ่อนอยู่อย่างสร้างสรรค์ คุณอาจต้องการทำเช่นนั้น พิจารณาใหม่
อัปเดต: Google ยืนยัน
ใน โพสต์บล็อก เผยแพร่วันนี้ 28 กุมภาพันธ์ Google ได้ยืนยันการเปลี่ยนแปลงเหล่านี้แล้ว อ้างถึงความเสี่ยงที่จะเกิดการขัดข้องสำหรับผู้ใช้และต่อมาบังคับให้นักพัฒนาเปิดตัวการแก้ไขฉุกเฉิน, Google ระบุว่าบริษัทกำลังค่อยๆ เปลี่ยนไปสู่การกีดกันนักพัฒนาจากการเข้าถึงที่ไม่ใช่ SDK อินเทอร์เฟซ ตั้งแต่ Android P เป็นต้นไป ข้อจำกัดจะขยายให้ครอบคลุมอินเทอร์เฟซภาษา Java ของ SDK
บริษัทระบุว่า "วิธีการและฟิลด์ที่ไม่ใช่ SDK บางอย่างจะถูกจำกัด" แม้ว่าจะไม่ได้ระบุรายละเอียดว่าวิธีใดที่จะถูกจำกัดก็ตาม ในตอนแรกข้อจำกัดจะเน้นไปที่อินเทอร์เฟซที่ไม่ค่อยได้ใช้ และสักพักบริษัทจะอนุญาต นักพัฒนาซอฟต์แวร์ยังคงใช้วิธีการและช่องที่ไม่ใช่ SDK ต่อไป ซึ่งการเปลี่ยนไปใช้วิธี SDK เป็นทางเทคนิค ที่ท้าทาย. อย่างไรก็ตาม ข้อจำกัดจะขยายวงกว้างขึ้นในที่สุด ดังนั้นนักพัฒนาแอปที่ใช้วิธีการที่ไม่ใช่ SDK ควรเปลี่ยนโดยเร็วที่สุดเพื่อเตรียมพร้อมสำหรับ Android P สำหรับวิธีการที่ไม่มีทางเลือก SDK นั้น Google กำลังขอให้นักพัฒนาโพสต์บนพวกเขา ติดตามข้อผิดพลาด พร้อมข้อมูลเพิ่มเติม
ตัวอย่างถัดไปสำหรับนักพัฒนาซอฟต์แวร์ ซึ่งคาดว่าจะมาถึงในเร็วๆ นี้ จะช่วยให้นักพัฒนาสามารถทดสอบแอปที่มีอยู่กับบัญชีดำหรือบัญชีสีเทาก่อนการเปิดตัวขั้นสุดท้าย