- ไวยากรณ์:
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="string" android:sharedUserId="string" android:sharedUserLabel="string resource" android:sharedUserMaxSdkVersion="integer" android:versionCode="integer" android:versionName="string" android:installLocation=["auto" | "internalOnly" | "preferExternal"] > ... </manifest>
- ที่อยู่ใน:
- ไม่มี
- ต้องมีข้อมูลต่อไปนี้
<application>
- สามารถมีข้อมูลต่อไปนี้
<compatible-screens>
<instrumentation>
<permission>
<permission-group>
<permission-tree>
<queries>
<supports-gl-texture>
<supports-screens>
<uses-configuration>
<uses-feature>
<uses-permission>
<uses-permission-sdk-23>
<uses-sdk>
- description:
- องค์ประกอบรูทของไฟล์
AndroidManifest.xml
ต้อง มีองค์ประกอบ<application>
และระบุแอตทริบิวต์xmlns:android
และpackage
- ดังนี้
-
xmlns:android
- กำหนดเนมสเปซของ Android แอตทริบิวต์นี้ได้รับการตั้งค่าเสมอ
ไปยัง
"http://schemas.android.com/apk/res/android"
package
- ค่าของแอตทริบิวต์
package
ในไฟล์ Manifest ของ APK แสดงถึง รหัสแอปพลิเคชันสากลที่ไม่ซ้ำกันของแอป มีการจัดรูปแบบเป็นภาษา Java ที่สมบูรณ์ ชื่อแพ็กเกจของแอป Android ชื่อสามารถประกอบด้วยอักษรตัวพิมพ์ใหญ่หรือตัวพิมพ์เล็ก ตัวเลข และขีดล่าง ("_") แต่ส่วนชื่อแพ็กเกจแต่ละส่วนจะขึ้นต้นด้วย ตัวอักษรระวังอย่าเปลี่ยนค่า
package
เพราะเป็นอย่างที่เห็น สร้างแอปใหม่ ผู้ใช้แอปเวอร์ชันก่อนหน้าของคุณจะไม่ได้รับการอัปเดตและไม่สามารถ เพื่อถ่ายโอนข้อมูลระหว่างเวอร์ชันเก่าและเวอร์ชันใหม่ไม่ต้องตั้งค่าในระบบบิลด์แบบ Gradle เริ่มต้นด้วย AGP 7.3 ค่า
package
ในไฟล์ Manifest ต้นฉบับโดยตรง สำหรับข้อมูลเพิ่มเติม โปรดดู ตั้งค่ารหัสแอปพลิเคชัน android:sharedUserId
-
ค่าคงที่นี้เลิกใช้งานไปแล้วตั้งแต่ API ระดับ 29
รหัสผู้ใช้ที่แชร์ก่อให้เกิดลักษณะการทำงานที่ไม่กำหนดภายในตัวจัดการแพ็กเกจ ดังนั้น การใช้งานจึง เราไม่แนะนำอย่างยิ่งและอาจถูกนำออกใน Android เวอร์ชันในอนาคต ให้ใช้ กลไกการสื่อสารที่เหมาะสม เช่น บริการและผู้ให้บริการเนื้อหา เพื่ออำนวยความสะดวก ความสามารถในการทำงานร่วมกันระหว่างคอมโพเนนต์ที่แชร์ แอปที่มีอยู่จะนำค่านี้ออกไม่ได้ เนื่องจาก ระบบไม่รองรับการย้ายข้อมูลออกจากรหัสผู้ใช้ที่แชร์ ในแอปเหล่านี้ ให้เพิ่มandroid:sharedUserMaxSdkVersion="32"
เพื่อหลีกเลี่ยงการใช้การแชร์ user ID ในการติดตั้งของผู้ใช้ใหม่ชื่อรหัสผู้ใช้ Linux ที่แชร์กับแอปอื่นๆ โดยค่าเริ่มต้น Android จะกำหนดรหัสผู้ใช้ที่ไม่ซ้ำกันให้กับแต่ละแอป แต่ถ้าแอตทริบิวต์นี้เป็นค่าเดียวกันสำหรับ 2 ค่าขึ้นไป ทุกแอปจะต้องใช้รหัสเดียวกัน โดยมีเงื่อนไขว่า ชุดใบรับรองเหมือนกัน แอปที่มีรหัสผู้ใช้เดียวกันจะเข้าถึงได้ ข้อมูลของกันและกัน และเรียกใช้ในกระบวนการเดียวกัน หากต้องการ
android:targetSandboxVersion
-
แซนด์บ็อกซ์เป้าหมายที่แอปนี้จะใช้ ยิ่งหมายเลขเวอร์ชันแซนด์บ็อกซ์สูงเท่าไหร่
ระดับความปลอดภัยก็จะยิ่งสูงขึ้น
ค่าเริ่มต้นคือ
1
คุณยังสามารถตั้งค่าเป็น2
ได้ด้วย การตั้งค่าแอตทริบิวต์นี้เป็น2
จะเปลี่ยน ไปยังแซนด์บ็อกซ์ SELinux อื่นแซนด์บ็อกซ์ระดับ 2 มีข้อจำกัดดังต่อไปนี้
- ค่าเริ่มต้นคือ
usesCleartextTraffic
ในการกำหนดค่าความปลอดภัยของเครือข่ายมีค่าเป็นเท็จ - ไม่อนุญาตการแชร์ UID
สำหรับ Android Instant Apps ที่กำหนดเป้าหมายเป็น Android 8.0 (API ระดับ 26) ขึ้นไป แอตทริบิวต์นี้ตั้งค่าเป็น
2
คุณตั้งค่าระดับแซนด์บ็อกซ์ในแอปเวอร์ชันที่ติดตั้งแล้วได้ ให้มีข้อจำกัดน้อยกว่า ระดับ1
แต่หากคุณทำเช่นนั้น แอปของคุณจะไม่เก็บข้อมูลแอปจาก Instant App ไปยัง เวอร์ชันที่ติดตั้งของแอป คุณต้องตั้งค่าแซนด์บ็อกซ์ของแอปที่ติดตั้งเป็น2
เพื่อให้ข้อมูลยังคงอยู่จาก Instant App ไปยังเวอร์ชันที่ติดตั้งเมื่อติดตั้งแอปแล้ว คุณจะอัปเดตค่าแซนด์บ็อกซ์เป้าหมายให้เป็นค่าที่สูงขึ้นได้เท่านั้น หากต้องการดาวน์เกรดค่าแซนด์บ็อกซ์เป้าหมาย ให้ถอนการติดตั้งแอป และแทนที่ด้วยเวอร์ชันที่ Manifest มีค่าต่ำกว่าสำหรับแอตทริบิวต์นี้
- ค่าเริ่มต้นคือ
android:sharedUserLabel
-
ค่าคงที่นี้เลิกใช้งานไปแล้วตั้งแต่ API ระดับ 29
รหัสผู้ใช้ที่แชร์ก่อให้เกิดลักษณะการทำงานที่ไม่กำหนดภายในตัวจัดการแพ็กเกจ ดังนั้น การใช้งานจึง เราไม่แนะนำอย่างยิ่งและอาจถูกนำออกใน Android เวอร์ชันในอนาคต ให้ใช้ กลไกการสื่อสารที่เหมาะสม เช่น บริการและผู้ให้บริการเนื้อหา เพื่ออำนวยความสะดวก ความสามารถในการทำงานร่วมกันระหว่างคอมโพเนนต์ที่แชร์ แอปที่มีอยู่จะนำค่านี้ออกไม่ได้ เนื่องจาก ระบบไม่รองรับการย้ายข้อมูลออกจากรหัสผู้ใช้ที่แชร์ป้ายกำกับที่ผู้ใช้อ่านได้สำหรับรหัสผู้ใช้ที่แชร์ ป้ายกำกับได้รับการตั้งค่าเป็น การอ้างอิงไปยังทรัพยากรสตริง ต้องไม่ใช่สตริงดิบ
แอตทริบิวต์นี้เปิดตัวใน API ระดับ 3 ซึ่งจะมีความหมายก็ต่อเมื่อ มีการตั้งค่าแอตทริบิวต์
sharedUserId
ด้วย android:sharedUserMaxSdkVersion
-
รหัสผู้ใช้ที่แชร์ก่อให้เกิดลักษณะการทำงานที่ไม่กำหนดภายในตัวจัดการแพ็กเกจ ดังนั้น การใช้งานจึง เราไม่แนะนำอย่างยิ่งและอาจถูกนำออกใน Android เวอร์ชันในอนาคต ให้ใช้ กลไกการสื่อสารที่เหมาะสม เช่น บริการและผู้ให้บริการเนื้อหา เพื่ออำนวยความสะดวก ความสามารถในการทำงานร่วมกันระหว่างคอมโพเนนต์ที่แชร์
เวอร์ชัน SDK สูงสุดที่ระบบยังคงใช้
android:sharedUserId
หาก แอปเพิ่งติดตั้งใหม่ในอุปกรณ์ที่ใช้ SDK เวอร์ชันสูงกว่าค่าที่ระบุ จะทำงานเสมือนว่าคุณไม่เคยกำหนดandroid:sharedUserId
เลยแอตทริบิวต์นี้เปิดตัวใน API ระดับ 33 ซึ่งจะมีความหมายก็ต่อเมื่อ มีการตั้งค่าแอตทริบิวต์
sharedUserId
ด้วย android:versionCode
- หมายเลขเวอร์ชันภายใน หมายเลขนี้ใช้เพื่อกำหนดว่า
เวอร์ชันหนึ่งใหม่กว่าอีกเวอร์ชันหนึ่ง ตัวเลขสูงหมายถึงมากกว่า
เวอร์ชันล่าสุด ซึ่งไม่ใช่หมายเลขเวอร์ชันที่แสดงให้ผู้ใช้เห็น
ได้รับการตั้งค่าโดยแอตทริบิวต์
versionName
ค่านี้ถูกกำหนดเป็นจำนวนเต็มบวกที่มากกว่า 0 คุณสามารถกำหนดได้ อย่างไรก็ได้ ตราบใดที่แต่ละเวอร์ชันที่ต่อเนื่องกันมีจำนวนสูงกว่า ตัวอย่างเช่น อาจเป็นหมายเลขบิลด์ หรือแปลเวอร์ชันต่างๆ ก็ได้ ตัวเลขใน "x.y" จัดรูปแบบเป็นจำนวนเต็มโดยการเข้ารหัส "x" และ "y" แยกต่างหากใน ส่วนล่างและด้านบน 16 บิต หรือคุณจะเพิ่มจำนวนขึ้นอีก 1 รายการก็ได้ ทุกครั้งที่มีการออกเวอร์ชันใหม่
android:versionName
- หมายเลขเวอร์ชันที่แสดงต่อผู้ใช้ แอตทริบิวต์นี้ตั้งค่าเป็นไฟล์ข้อมูล RAW
หรือเป็นการอ้างอิงไปยังแหล่งข้อมูลสตริง สตริงไม่มีวัตถุประสงค์อื่น
มากกว่าที่จะแสดงต่อผู้ใช้ การคงไว้ชั่วคราวของแอตทริบิวต์
versionCode
หมายเลขเวอร์ชันนัยสำคัญที่ใช้เป็นการภายใน android:installLocation
- ตำแหน่งเริ่มต้นสำหรับติดตั้งของแอป
ระบบยอมรับสตริงคีย์เวิร์ดต่อไปนี้
ค่า คำอธิบาย "internalOnly"
แอปจะติดตั้งในพื้นที่เก็บข้อมูลภายในของอุปกรณ์เท่านั้น หากตั้งค่าไว้ แอปจะไม่ติดตั้งในที่จัดเก็บข้อมูลภายนอก เช่น การ์ด SD หากภายใน พื้นที่เก็บข้อมูลเต็ม จากนั้นระบบจึงไม่ติดตั้งแอป นี่คือลักษณะการทำงานเริ่มต้น หากคุณไม่ได้กำหนด android:installLocation
"auto"
แอปสามารถติดตั้งบนที่จัดเก็บข้อมูลภายนอก แต่ระบบจะติดตั้ง ลงในที่จัดเก็บข้อมูลภายในโดยค่าเริ่มต้น หากที่จัดเก็บข้อมูลภายในเต็มแล้ว ระบบจะ ติดตั้งในที่จัดเก็บข้อมูลภายนอก เมื่อติดตั้งแล้ว ผู้ใช้สามารถย้ายแอปได้ ไปยังที่จัดเก็บข้อมูลภายในหรือภายนอกผ่านการตั้งค่าระบบ "preferExternal"
แอปต้องการที่จะติดตั้งบนที่จัดเก็บข้อมูลภายนอก ไม่มี ให้รับประกันว่าระบบจะดำเนินการตามคำขอนี้ แอปอาจติดตั้งในอุปกรณ์ภายใน หากสื่อภายนอกไม่พร้อมใช้งานหรือเต็มแล้ว เมื่อติดตั้งแล้ว ผู้ใช้สามารถย้ายแอปไปที่ ที่จัดเก็บข้อมูลภายในหรือภายนอก ผ่านการตั้งค่าระบบ หมายเหตุ: โดยค่าเริ่มต้น แอปของคุณจะติดตั้งใน ที่จัดเก็บข้อมูลภายในและไม่สามารถติดตั้งบนที่จัดเก็บข้อมูลภายนอก เว้นแต่คุณจะกำหนดแอตทริบิวต์นี้ เป็น
"auto"
หรือ"preferExternal"
สิ่งที่จะเกิดขึ้นเมื่อแอปติดตั้งบนที่จัดเก็บข้อมูลภายนอก
- บันทึกไฟล์ APK แล้ว ไปยังที่จัดเก็บข้อมูลภายนอก แต่ข้อมูลแอป เช่น ฐานข้อมูล จะยังคงบันทึกอยู่ใน หน่วยความจำภายในอุปกรณ์
- คอนเทนเนอร์ที่บันทึกไฟล์ APK ไว้จะได้รับการเข้ารหัสด้วยคีย์ที่ช่วยให้ แอปจะทำงานบนอุปกรณ์ที่ติดตั้งแอปนั้นเท่านั้น ผู้ใช้ไม่สามารถ โอนการ์ด SD ไปยังอุปกรณ์อื่นและใช้แอปที่ติดตั้งในการ์ดดังกล่าว คุณใช้การ์ด SD หลายการ์ดกับอุปกรณ์เดียวกันได้
- โดยสามารถย้ายแอปไปยังที่จัดเก็บข้อมูลภายในได้ตามที่ผู้ใช้ร้องขอ
ผู้ใช้อาจขอย้ายแอปจากที่จัดเก็บข้อมูลภายในไปยังภายนอกด้วย พื้นที่เก็บข้อมูล แต่ระบบไม่อนุญาตให้ผู้ใช้ย้ายแอปไปยังที่จัดเก็บข้อมูลภายนอก แอตทริบิวต์นี้ตั้งค่าเป็น
"internalOnly"
ซึ่งเป็นการตั้งค่าเริ่มต้นสำหรับ ข้อมูลเพิ่มเติมเกี่ยวกับการใช้แอตทริบิวต์นี้ รวมถึงวิธีการรักษาความเข้ากันได้แบบย้อนหลัง ดูตำแหน่งการติดตั้งแอป
เปิดตัวใน API ระดับ 8
- เปิดตัวใน
- API ระดับ 1 สำหรับแอตทริบิวต์ทั้งหมด เว้นแต่จะระบุไว้เป็นอย่างอื่นในคำอธิบายแอตทริบิวต์
- ดูเพิ่มเติม
-
<application>