สิทธิ์ของ Android ให้การควบคุมที่เพิ่มการรับรู้ของผู้ใช้และจำกัดการเข้าถึงข้อมูลที่ละเอียดอ่อนของแอป การกำหนดค่าสิทธิ์บน Android 8.0 และต่ำกว่าจะรวมรายการที่อนุญาตด้วย โดยที่แอปที่ได้รับสิทธิพิเศษจะถูกปิดใช้งาน แม้ว่าแอปเหล่านั้นจะอยู่ในเส้นทาง priv-app
ก็ตาม ใน Android 9 ขึ้นไป อุปกรณ์ที่พยายามใช้แอปที่ไม่อยู่ในรายการที่อนุญาตอย่างถูกต้องจะไม่สามารถเปิดเครื่องได้
Android 10 แนะนำแนวคิดของ บทบาท ซึ่งเป็นชื่อที่ไม่ซ้ำใครภายในระบบที่เกี่ยวข้องกับข้อกำหนดและสิทธิ์บางประการ กำหนดบทบาทให้กับแอปเพื่อให้สิทธิ์ตามวัตถุประสงค์เฉพาะ และกำหนดค่าบทบาทเริ่มต้นโดยใช้ทรัพยากรการกำหนดค่าแพลตฟอร์ม
การป้องกันที่เพิ่มขึ้นต่อ แอปที่อาจเป็นอันตราย (PHA) ได้รับการปรับปรุง
- ความโปร่งใสเกี่ยวกับพฤติกรรมของแอปที่อาจเป็นอันตราย
- ผู้ใช้ควบคุมพฤติกรรมของแอป
- ดุลยพินิจของนักพัฒนาแอปเมื่อใช้ข้อมูลส่วนตัว ได้รับการคุ้มครองโดยการอนุญาต
การติดตั้งแพ็คเกจและการอนุญาต
ใน Android 9 และต่ำกว่า ฟังก์ชันการติดตั้งแพ็กเกจและการควบคุมสิทธิ์มีอยู่ในแพ็คเกจ PackageInstaller
( //packages/apps/PackageInstaller
) ใน Android 10 และสูงกว่า ฟังก์ชันการควบคุมสิทธิ์จะอยู่ในแพ็คเกจแยกต่างหาก PermissionController
( //packages/apps/PermissionController
) รูปที่ 1 แสดงให้เห็นว่าแพ็คเกจทั้งสองอยู่ที่ใดใน Android 10
รายการที่อนุญาตและการเข้าถึง
ใน Android 6.0 และสูงกว่า แอปจะขอสิทธิ์เข้าถึงสิทธิ์ที่เป็นอันตรายขณะ รันไทม์ Android 10 เพิ่มการอนุญาตรันไทม์การจดจำกิจกรรม (AR) ซึ่งจะแจ้งให้ผู้ใช้แก้ไขหรืออนุญาตการอนุญาตที่เป็นอันตราย
Android 8.0 กำหนดให้คุณต้องอนุญาตรายการแอปที่ได้รับสิทธิพิเศษอย่างชัดเจนในไฟล์ XML การกำหนดค่าระบบในไดเร็กทอรี /etc/permissions
ใน Android 9 ขึ้นไป สิทธิ์พิเศษจะต้องอยู่ ในรายการที่อนุญาต ไม่ เช่นนั้นอุปกรณ์จะบูตไม่ได้
เพื่อจำกัดการมองเห็น API ภายในและป้องกันไม่ให้แอปเข้าถึงไลบรารีแพลตฟอร์มโดยไม่ได้ตั้งใจ Android 7.0 ได้เปิดตัว Namespaces สำหรับ Native Libraries ซึ่งจะแยกไลบรารีระบบออกจากไลบรารีแอปพลิเคชัน และผู้ผลิตอุปกรณ์สามารถเพิ่มไลบรารีดั้งเดิมของตนเองได้
เริ่มต้นในแอป Android 10 จะต้องมีทั้งสิทธิ์ลายเซ็นและความยินยอมของผู้ใช้ในการ เข้าถึงเนื้อหาบนหน้าจอของอุปกรณ์ แอปที่ได้รับสิทธิ์ซึ่งอาศัยฟังก์ชันการถ่ายภาพแบบเงียบ เช่น การจับภาพหน้าจอ ควรใช้คลาส MediaProjection แทน
ความโปร่งใสและความเป็นส่วนตัว
ใน Android 6.0 และสูงกว่า ที่อยู่ MAC จากโรงงานของอุปกรณ์จะได้รับการปกป้องจากการเข้าถึงโดยผู้ให้บริการ Wi-Fi และเครื่องวิเคราะห์แพ็กเก็ต ข้อจำกัดเพิ่มเติมใน Android 10 จะจำกัดแอป ไม่ให้เข้าถึงตัวระบุอุปกรณ์ (ID) ที่ไม่เปลี่ยนรูป เว้นแต่จะ ได้รับอนุญาตจากสิทธิ์พิเศษ (ส่วน การเชื่อมต่อ มีการอภิปรายที่เกี่ยวข้องเกี่ยวกับ ตัวระบุอุปกรณ์ เนื่องจากสิ่งนี้ส่งผลกระทบต่อผู้ให้บริการ)
บน Android 9 และต่ำกว่า ผู้ใช้จะตัดสินใจอย่างต่อเนื่องเมื่อให้สิทธิ์การเข้าถึงตำแหน่งแก่แอป เริ่มตั้งแต่ Android 10 ฟีเจอร์ การอนุญาตตำแหน่งแบบ Tristate จะให้ตัวเลือกแก่ผู้ใช้ 3 ตัวเลือกในการอนุญาตให้แอปเข้าถึงตำแหน่งของอุปกรณ์ได้ ข้อกำหนดการอนุญาตเหล่านี้ใช้กับแอปใน Android 10 โดยไม่คำนึงถึง SDK เป้าหมาย
กำหนดค่าสิทธิ์สำหรับฟีเจอร์ความโปร่งใสและความเป็นส่วนตัวอื่นๆ เริ่มตั้งแต่ Android 10
- การแจ้งเตือน ตำแหน่งการเข้าถึงในเบื้องหลัง จะแสดงผู้ใช้เมื่อแอปเข้าถึงตำแหน่งอุปกรณ์ของตนโดยใช้สิทธิ์
ACCESS_FINE_LOCATION
ในเบื้องหลัง - ข้อมูลที่เกี่ยวข้องกับผู้ติดต่อที่จัดการโดยส่วนประกอบผู้ให้บริการผู้ติดต่อ มีการเข้าถึงแตกต่างกัน: แอปไม่สามารถเขียนหรืออ่านจากข้อมูล ผู้ติดต่อ ในฐานข้อมูลได้ สิ่งนี้ส่งผลต่อ API ที่เกี่ยวข้องกับผู้โทร
การกำหนดค่าที่คล่องตัว
การกำหนดค่าสิทธิ์ได้รับการปรับปรุงประสิทธิภาพสำหรับ Android 6.0 และสูงกว่า
- ความสามารถโดยรอบ สำหรับบริการที่เปิดตัวโดย
init
จะเก็บการกำหนดค่าบริการทุกด้านไว้ในไฟล์.rc
ไฟล์เดียว เมื่อตั้งค่าความสามารถของบริการที่ไม่ได้เปิดใช้งานโดยinit
ให้กำหนดค่าความสามารถของระบบไฟล์โดยใช้fs_config.c
แทน - Android 7.x และต่ำกว่าขยายกลไก Android ID (AID) โดยใช้ไฟล์
android_filesystem_config.h
เฉพาะอุปกรณ์เพื่อระบุความสามารถของระบบไฟล์และ/หรือ AID ของผู้ผลิตอุปกรณ์ที่กำหนดเอง Android 8.0 และสูงกว่ารองรับ วิธีการใหม่ในการขยายความสามารถของระบบไฟล์ - ใน Android 8.0 การจัดการคำสั่ง USB ได้ย้ายออกจากสคริปต์
init
ต้นเฉพาะอุปกรณ์ (การทดแทนเลเยอร์ HAL) และไปยัง USB daemon ดั้งเดิม ต้องใช้อินเทอร์เฟ ซ USB HAL บนอุปกรณ์ทุกเครื่องที่เปิดตัวบน Android 8.0 ขึ้นไป