- ไวยากรณ์:
<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>
- อยู่ใน
- none
- ต้องมีข้อมูลต่อไปนี้
<application>
- อาจมีข้อมูลต่อไปนี้
<attribution>
<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"
เพื่อหลีกเลี่ยงการใช้รหัสผู้ใช้ที่แชร์ในการติดตั้งของผู้ใช้ใหม่ชื่อรหัสผู้ใช้ Linux ที่แชร์กับแอปอื่นๆ โดยค่าเริ่มต้น Android จะกำหนดรหัสผู้ใช้ที่ไม่ซ้ำกันให้กับแต่ละแอป อย่างไรก็ตาม หากตั้งค่าแอตทริบิวต์นี้ให้มีค่าเดียวกันสำหรับแอปตั้งแต่ 2 แอปขึ้นไป แอปทั้งหมดจะมีรหัสเดียวกัน ตราบใดที่ชุดใบรับรองเหมือนกัน แอปที่มีรหัสผู้ใช้เดียวกันจะเข้าถึงข้อมูลของกันและกันและทำงานในกระบวนการเดียวกันได้หากต้องการ
android:targetSandboxVersion
-
แซนด์บ็อกซ์เป้าหมายสําหรับแอปนี้ ยิ่งเวอร์ชันแซนด์บ็อกซ์สูง ระดับความปลอดภัยก็จะยิ่งสูงขึ้น
ค่าเริ่มต้นคือ
1
แต่คุณตั้งค่าเป็น2
ก็ได้ การตั้งค่าแอตทริบิวต์นี้เป็น2
จะเปลี่ยนแอปไปยังแซนด์บ็อกซ์ SELinux อื่นข้อจํากัดต่อไปนี้มีผลกับแซนด์บ็อกซ์ระดับ 2
- ค่าเริ่มต้นของ
usesCleartextTraffic
ในการกำหนดค่าความปลอดภัยของเครือข่ายคือเท็จ - ไม่อนุญาตให้แชร์รหัสผู้ใช้
สำหรับ Android Instant Apps ที่กําหนดเป้าหมายเป็น Android 8.0 (API ระดับ 26) ขึ้นไป ระบบจะตั้งค่าแอตทริบิวต์นี้เป็น
2
คุณสามารถตั้งค่าระดับแซนด์บ็อกซ์ในแอปเวอร์ชันที่ติดตั้งไว้เป็นระดับ1
ที่เข้มงวดน้อยกว่าได้ แต่หากดำเนินการดังกล่าว แอปจะไม่เก็บข้อมูลแอปจากแอป Instant ไว้กับแอปเวอร์ชันที่ติดตั้งไว้ คุณต้องตั้งค่าแซนด์บ็อกซ์ของแอปที่ติดตั้งไว้เป็น2
เพื่อให้ข้อมูลคงอยู่จากแอป Instant ไปยังเวอร์ชันที่ติดตั้งเมื่อติดตั้งแอปแล้ว คุณจะอัปเดตค่าแซนด์บ็อกซ์เป้าหมายของแอปเป็นค่าที่สูงขึ้นได้เท่านั้น หากต้องการดาวน์เกรดค่าแซนด์บ็อกซ์เป้าหมาย ให้ถอนการติดตั้งแอปแล้วแทนที่ด้วยเวอร์ชันที่มีไฟล์ 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
- หมายเลขเวอร์ชันที่แสดงต่อผู้ใช้ แอตทริบิวต์นี้ตั้งค่าเป็นสตริงดิบหรือเป็นข้อมูลอ้างอิงไปยังทรัพยากรสตริง สตริงไม่มีวัตถุประสงค์อื่นนอกจากแสดงต่อผู้ใช้ แอตทริบิวต์
versionCode
จะเก็บหมายเลขเวอร์ชันที่สําคัญซึ่งใช้ในภายใน android:installLocation
- ตำแหน่งการติดตั้งเริ่มต้นของแอป
ระบบยอมรับสตริงคีย์เวิร์ดต่อไปนี้
ค่านิยม คำอธิบาย "internalOnly"
แอปจะติดตั้งในที่จัดเก็บข้อมูลภายในของอุปกรณ์เท่านั้น หากตั้งค่าไว้ แอปจะไม่ติดตั้งในที่จัดเก็บข้อมูลภายนอก เช่น การ์ด SD หากพื้นที่เก็บข้อมูลภายในเต็ม ระบบจะไม่ติดตั้งแอป ลักษณะการทำงานนี้เป็นค่าเริ่มต้นหากคุณไม่ได้กำหนด android:installLocation
"auto"
แอปสามารถติดตั้งในที่จัดเก็บข้อมูลภายนอกได้ แต่ระบบจะติดตั้งแอปไว้ในที่จัดเก็บข้อมูลภายในโดยค่าเริ่มต้น หากพื้นที่เก็บข้อมูลภายในเต็ม ระบบจะติดตั้งแอปลงในที่จัดเก็บข้อมูลภายนอก เมื่อติดตั้งแล้ว ผู้ใช้จะย้ายแอปไปยังพื้นที่เก็บข้อมูลภายในหรือภายนอกได้ผ่านการตั้งค่าระบบ "preferExternal"
แอปต้องการติดตั้งในพื้นที่เก็บข้อมูลภายนอก เราไม่รับประกันว่าระบบจะดำเนินการตามคำขอนี้ แอปอาจติดตั้งในที่เก็บข้อมูลภายในหากสื่อภายนอกไม่พร้อมใช้งานหรือเต็ม เมื่อติดตั้งแล้ว ผู้ใช้จะย้ายแอปไปยังพื้นที่เก็บข้อมูลภายในหรือภายนอกได้ผ่านการตั้งค่าระบบ หมายเหตุ: โดยค่าเริ่มต้น แอปจะติดตั้งในที่จัดเก็บข้อมูลภายในและติดตั้งในที่จัดเก็บข้อมูลภายนอกไม่ได้ เว้นแต่คุณจะกำหนดแอตทริบิวต์นี้เป็น
"auto"
หรือ"preferExternal"
สิ่งที่จะเกิดขึ้นเมื่อแอปติดตั้งในที่จัดเก็บข้อมูลภายนอก
- ระบบจะบันทึกไฟล์ APK ลงในที่จัดเก็บข้อมูลภายนอก แต่ข้อมูลแอป เช่น ฐานข้อมูล จะยังคงบันทึกอยู่ในหน่วยความจำภายในของอุปกรณ์
- คอนเทนเนอร์ที่บันทึกไฟล์ APK ได้รับการเข้ารหัสด้วยคีย์ที่อนุญาตให้แอปทำงานได้เฉพาะในอุปกรณ์ที่ติดตั้งเท่านั้น ผู้ใช้จะโอนการ์ด SD ไปยังอุปกรณ์อื่นและใช้แอปที่ติดตั้งไว้ในการ์ดไม่ได้ คุณใช้การ์ด SD หลายใบกับอุปกรณ์เครื่องเดียวกันได้
- ผู้ใช้สามารถย้ายแอปไปยังพื้นที่เก็บข้อมูลภายในได้ตามคำขอ
นอกจากนี้ ผู้ใช้อาจขอย้ายแอปจากพื้นที่เก็บข้อมูลภายในไปยังพื้นที่เก็บข้อมูลภายนอกด้วย อย่างไรก็ตาม ระบบจะไม่อนุญาตให้ผู้ใช้ย้ายแอปไปยังที่จัดเก็บข้อมูลภายนอกหากตั้งค่าแอตทริบิวต์นี้เป็น
"internalOnly"
ซึ่งเป็นการตั้งค่าเริ่มต้นดูข้อมูลเพิ่มเติมเกี่ยวกับการใช้แอตทริบิวต์นี้ รวมถึงวิธีรักษาความเข้ากันได้แบบย้อนหลังได้ที่ตำแหน่งการติดตั้งแอป
เปิดตัวใน: API ระดับ 8
- เปิดตัวใน
- API ระดับ 1 สำหรับแอตทริบิวต์ทั้งหมด เว้นแต่จะระบุไว้เป็นอย่างอื่นในคำอธิบายแอตทริบิวต์
- ดูข้อมูลเพิ่มเติมได้ที่
-
<application>
ตัวอย่างเนื้อหาและโค้ดในหน้าเว็บนี้ขึ้นอยู่กับใบอนุญาตที่อธิบายไว้ในใบอนุญาตการใช้เนื้อหา Java และ OpenJDK เป็นเครื่องหมายการค้าหรือเครื่องหมายการค้าจดทะเบียนของ Oracle และ/หรือบริษัทในเครือ
อัปเดตล่าสุด 2025-05-12 UTC
[null,null,["อัปเดตล่าสุด 2025-05-12 UTC"],[],[]]