ภาพรวมการสร้างสำหรับ Android XR

Android XR เป็นส่วนขยายของแพลตฟอร์มและระบบนิเวศของ Android Android XR SDK ออกแบบมาเพื่อช่วยให้คุณสร้างแอป XR โดยใช้เฟรมเวิร์กและเครื่องมือ Android ที่คุ้นเคย หรือใช้มาตรฐานแบบเปิด เช่น OpenXR และ WebXR แอปบนอุปกรณ์เคลื่อนที่หรือหน้าจอขนาดใหญ่ทั้งหมดที่เข้ากันได้จะพร้อมให้ติดตั้งในชุดหูฟัง XR จาก Play Store โปรดอ่านข้อควรพิจารณาด้านความเข้ากันได้เพื่อดูว่าแอปของคุณเข้ากันได้หรือไม่

คู่มือนี้จะอธิบายเรื่องต่อไปนี้

  • การเลือกเครื่องมือและเทคโนโลยีสำหรับการพัฒนา
  • การออกแบบแอปสำหรับ Android XR
  • การกำหนดค่าไฟล์ Manifest ของแอป
  • ข้อควรพิจารณาเกี่ยวกับความเข้ากันได้ของไฟล์ Manifest ของแอป
  • ทำความเข้าใจสิทธิ์สำหรับ Android XR
  • การดูแลคุณภาพของแอป Android XR
  • การรวมแพ็กเกจและการจัดจำหน่ายแอปสำหรับ Android XR

เลือกเครื่องมือและเทคโนโลยีการพัฒนา

เมื่อสร้างแอปสำหรับ Android XR คุณสามารถเลือกแพลตฟอร์มและเทคโนโลยีการพัฒนาต่อไปนี้

Jetpack XR SDK

Jetpack XR SDK มีไลบรารี Jetpack ของ Android XR ที่สร้างขึ้นเพื่อใช้ประโยชน์จากความสามารถเฉพาะของอุปกรณ์ XR เริ่มต้นด้วย SDK นี้หากต้องการทําอย่างใดอย่างหนึ่งต่อไปนี้

  • เพิ่มประสิทธิภาพหรือปรับปรุงแอปบนอุปกรณ์เคลื่อนที่หรือแท็บเล็ต Android ที่มีอยู่
  • สร้างแอป Android XR ใหม่โดยใช้ Android Studio และ Jetpack

หากคุณคุ้นเคยกับการพัฒนาด้วย Android Jetpack แล้ว Jetpack XR SDK เหมาะสําหรับคุณ เครื่องมือนี้ออกแบบมาให้ผสานรวมกับเฟรมเวิร์กและไลบรารีเหล่านั้นได้อย่างราบรื่น และให้คุณใช้ความรู้ที่มีอยู่เพื่อสร้างประสบการณ์ XR ที่สมจริง

ดูข้อมูลเพิ่มเติมเกี่ยวกับการพัฒนาด้วย Jetpack XR SDK

Unity

Unity Engine เป็นเครื่องมือพัฒนา 3 มิติแบบเรียลไทม์ที่ช่วยให้ผู้สร้างผลงาน ศิลปิน นักออกแบบ และนักพัฒนาซอฟต์แวร์ทำงานร่วมกันเพื่อสร้างประสบการณ์ที่สมจริงและอินเทอร์แอกทีฟ การรองรับ Android XR ของ Unity ช่วยให้คุณควบคุมประสบการณ์ 3 มิติที่พัฒนาได้ในระดับสูง พร้อมรับประโยชน์จากการรองรับ OpenXR และระบบนิเวศของนักพัฒนาแอปที่ Unity สร้างขึ้น

หากคุณมีประสบการณ์ XR ที่สร้างขึ้นด้วย Unity อยู่แล้ว หรือคุ้นเคยกับการพัฒนาด้วย Unity ให้เริ่มต้นด้วยตัวเลือกนี้

ดูข้อมูลเพิ่มเติมเกี่ยวกับการพัฒนาด้วย Unity สำหรับ Android XR

OpenXR

OpenXR เป็นมาตรฐานแบบเปิดที่ไม่มีค่าสิทธิซึ่งสามารถใช้ในการสร้างประสบการณ์ XR ประสิทธิภาพสูงสำหรับหลายแพลตฟอร์ม Android XR รองรับ OpenXR 1.0 และ 1.1 และเรากำลังขยายข้อกำหนดด้วยส่วนขยายใหม่สำหรับ Android XR เนื่องจาก Android XR สร้างขึ้นจากมาตรฐานแบบเปิด เครื่องมือการพัฒนาที่รองรับ OpenXR และ Android จึงควรเข้ากันได้กับ Android XR

ดูข้อมูลเพิ่มเติมเกี่ยวกับการรองรับ OpenXR สำหรับ Android XR

WebXR

WebXR ช่วยให้คุณสร้างประสบการณ์ที่สมจริงสำหรับเว็บได้ ซึ่งจะมอบสิทธิ์เข้าถึงอุปกรณ์ VR และ AR ในเว็บเบราว์เซอร์ที่เข้ากันได้ เช่น Chrome ใน Android XR

เริ่มต้นด้วยตัวเลือกนี้หากต้องการสร้างประสบการณ์ XR สำหรับเว็บ หรือหากต้องการเพิ่มความสามารถ XR ลงในเว็บแอป ประสบการณ์ WebXR ที่มีอยู่ก็จะใช้งานได้บน Android XR ด้วย

ดูข้อมูลเพิ่มเติมเกี่ยวกับการสร้างเว็บแอปด้วย WebXR

ออกแบบสำหรับ XR

XR ขยายพื้นที่การออกแบบให้ไกลกว่าหน้าจอแบนแบบดั้งเดิม คุณออกแบบประสบการณ์ที่สมจริงซึ่งผสมผสานโลกแห่งความจริงเข้ากับโลกเสมือนได้ ไม่ว่าคุณจะสร้างประสบการณ์การใช้งานแบบใหม่หรือเพิ่มองค์ประกอบที่สมจริงลงในแอปที่มีอยู่ คู่มือการออกแบบสำหรับ Android XR จะช่วยให้คุณเริ่มต้นใช้งานได้

กำหนดค่าไฟล์ Manifest ของแอป

แอป Android XR ต้องมีไฟล์ AndroidManifest.xml ที่มีการตั้งค่าไฟล์ Manifest ที่เฉพาะเจาะจงเช่นเดียวกับโปรเจ็กต์แอป Android อื่นๆ ไฟล์ Manifest จะอธิบายข้อมูลสําคัญเกี่ยวกับแอปของคุณให้กับเครื่องมือสร้าง Android, ระบบปฏิบัติการ Android และ Google Play ดูข้อมูลเพิ่มเติมได้ที่คู่มือภาพรวมของไฟล์ Manifest ของแอป

สำหรับแอป XR ที่แตกต่าง ไฟล์ Manifest ต้องมีองค์ประกอบและแอตทริบิวต์ต่อไปนี้

พร็อพเพอร์ตี้ PROPERTY_ACTIVITY_XR_START_MODE

พร็อพเพอร์ตี้ android:name="android.window.PROPERTY_ACTIVITY_XR_START_MODE" ช่วยบอกให้ระบบทราบว่าควรเปิดใช้งานกิจกรรมในโหมดที่เจาะจงเมื่อเริ่มกิจกรรม

ค่าที่เป็นไปได้สำหรับพร็อพเพอร์ตี้นี้มี 3 ค่า ดังนี้

  • XR_ACTIVITY_START_MODE_HOME_SPACE (Jetpack XR SDK เท่านั้น)
  • XR_ACTIVITY_START_MODE_FULL_SPACE_MANAGED (Jetpack XR SDK เท่านั้น)
  • XR_ACTIVITY_START_MODE_FULL_SPACE_UNMANAGED (OpenXR เท่านั้น)

XR_ACTIVITY_START_MODE_HOME_SPACE

(แอปที่สร้างด้วย Jetpack XR SDK เท่านั้น)

ใช้โหมดเริ่มต้นนี้เพื่อเปิดแอปในพื้นที่ทำงานในบ้าน ในโฮมสเปซ แอปหลายแอปจะทำงานร่วมกันได้เพื่อให้ผู้ใช้ทำงานหลายอย่างพร้อมกันได้ แอป Android บนอุปกรณ์เคลื่อนที่หรือหน้าจอขนาดใหญ่จะทำงานในพื้นที่บ้านได้ รวมถึงแอป XR ที่สร้างขึ้นโดยใช้ Jetpack XR SDK

<manifest ... >

   <application ... >
       <property
           android:name="android.window.PROPERTY_XR_ACTIVITY_START_MODE"
           android:value="XR_ACTIVITY_START_MODE_HOME_SPACE" />
       <activity
           android:name="com.example.myapp.MainActivity" ... >

           <intent-filter>
               <action android:name="android.intent.action.MAIN" />

               <category android:name="android.intent.category.LAUNCHER" />
           </intent-filter>
       </activity>
   </application>
</manifest>

XR_ACTIVITY_START_MODE_FULL_SPACE_MANAGED

(แอปที่สร้างด้วย Jetpack XR SDK เท่านั้น)

ใช้โหมดเริ่มต้นนี้เพื่อเปิดแอปในโหมดเต็มหน้าจอ ในโหมดเต็มพื้นที่ จะมีแอปทำงานเพียงแอปเดียวในแต่ละครั้ง โดยไม่มีขอบเขตพื้นที่ทำงาน และแอปอื่นๆ ทั้งหมดจะซ่อนอยู่


<manifest ... >

   <application ... >
       <property
           android:name="android.window.PROPERTY_XR_ACTIVITY_START_MODE"
           android:value="XR_ACTIVITY_START_MODE_FULL_SPACE_MANAGED" />
       <activity
           android:name="com.example.myapp.MainActivity" ... >

           <intent-filter>
               <action android:name="android.intent.action.MAIN" />

               <category android:name="android.intent.category.LAUNCHER" />
           </intent-filter>
       </activity>
   </application>
</manifest>

XR_ACTIVITY_START_MODE_FULL_SPACE_UNMANAGED

(แอปที่สร้างด้วย OpenXR เท่านั้น)

แอปที่สร้างด้วย OpenXR จะเปิดในโหมดพื้นที่เต็ม และต้องใช้XR_ACTIVITY_START_MODE_FULL_SPACE_UNMANAGEDโหมดเริ่มต้น พื้นที่ทำงานแบบเต็มที่ไม่มีการจัดการบ่งบอกให้ Android XR ทราบว่าแอปใช้ OpenXR


<manifest ... >

   <application ... >
       <property
           android:name="android.window.PROPERTY_XR_ACTIVITY_START_MODE"
           android:value="XR_ACTIVITY_START_MODE_FULL_SPACE_UNMANAGED" />
       <activity
           android:name="com.example.myapp.MainActivity" ... >

           <intent-filter>
               <action android:name="android.intent.action.MAIN" />

               <category android:name="android.intent.category.LAUNCHER" />
           </intent-filter>
       </activity>
   </application>
</manifest>

<uses-native-library> OpenXR

(แอปที่สร้างด้วย OpenXR เท่านั้น)

แอปพลิเคชัน OpenXR ต้องประกาศการใช้ไลบรารี OpenXR เนทีฟเพื่อโหลดรันไทม์ให้เสร็จสมบูรณ์ หากไม่มีการประกาศนี้ รันไทม์จะโหลดไม่สำเร็จ


<manifest ... >

    <application ... >

    <uses-native-library android:name="libopenxr.google.so" android:required="true" />

       <activity
           android:name="com.example.myapp.MainActivity" ... >

           <intent-filter>
               <action android:name="android.intent.action.MAIN" />

               <category android:name="android.intent.category.LAUNCHER" />
           </intent-filter>
        </activity>
    </application>
</manifest>

ฟีเจอร์ PackageManager สำหรับแอป XR

เมื่อเผยแพร่แอปผ่าน Google Play Store คุณจะระบุฟีเจอร์ฮาร์ดแวร์หรือซอฟต์แวร์ที่จำเป็นได้ในไฟล์ Manifest ของแอป องค์ประกอบ uses-feature ช่วยให้ Play Store กรองแอปที่แสดงต่อผู้ใช้ได้อย่างเหมาะสม

ฟีเจอร์ต่อไปนี้มีไว้สำหรับแอปที่แยกความแตกต่างด้วย XR โดยเฉพาะ

android.software.xr.api.spatial

แอปที่สร้างโดยใช้ Jetpack XR SDK ต้องมีฟีเจอร์นี้ในไฟล์ Manifest ของแอป ค่าที่คุณตั้งค่าสำหรับแอตทริบิวต์ android:required จะขึ้นอยู่กับแทร็กการเผยแพร่ของแอป

หากแอปของคุณรวมฟีเจอร์หรือเนื้อหาที่แตกต่างจาก XR ไว้ใน APK บนอุปกรณ์เคลื่อนที่ที่มีอยู่และเผยแพร่ในแทร็กรุ่นบนอุปกรณ์เคลื่อนที่ คุณควรตั้งค่าแอตทริบิวต์ android:required เป็น false หากแอปของคุณสร้างขึ้นสำหรับอุปกรณ์ที่พร้อมใช้งาน XR โดยเฉพาะและเผยแพร่ในแทร็กรุ่นสำหรับ Android XR โดยเฉพาะ คุณควรตั้งค่าแอตทริบิวต์ android:required เป็น true

<uses-feature android:name="android.software.xr.api.spatial" android:required="true" />

android.software.xr.api.openxr

แอปที่กำหนดเป้าหมายเป็นแพลตฟอร์ม Android XR และสร้างขึ้นด้วย OpenXR หรือ Unity ต้องระบุฟีเจอร์นี้ในไฟล์ Manifest ของแอปโดยตั้งค่าแอตทริบิวต์ android:required เป็น true

แอปที่ใช้ Android XR Extensions Package for Unity เวอร์ชัน 1.0.0 ขึ้นไปหรือ Unity OpenXR: Android XR Package เวอร์ชัน 0.5.0-exp.1 ขึ้นไปไม่จําเป็นต้องเพิ่มองค์ประกอบนี้ลงในไฟล์ Manifest ของแอปด้วยตนเอง แพ็กเกจ 2 รายการนี้จะแทรกองค์ประกอบนี้ลงในไฟล์ Manifest ของแอปให้คุณ

อุปกรณ์อาจระบุเวอร์ชันสำหรับฟีเจอร์นี้ ซึ่งจะระบุ OpenXR เวอร์ชันสูงสุดที่อุปกรณ์รองรับ โดย 16 บิตที่สูงกว่าแสดงถึงเลขหลัก และ 16 บิตที่ต่ำกว่าแสดงถึงเลขย่อย ตัวอย่างเช่น หากต้องการระบุ OpenXR เวอร์ชัน 1.1 ระบบจะตั้งค่าเป็น "0x00010001"

แอปสามารถใช้เวอร์ชันฟีเจอร์เพื่อระบุเวอร์ชันขั้นต่ำของ OpenXR ที่แอปต้องใช้ ตัวอย่างเช่น หากแอปของคุณต้องใช้การรองรับ OpenXR เวอร์ชัน 1.1 ให้ประกาศฟีเจอร์ต่อไปนี้

<uses-feature android:name="android.software.xr.api.openxr"
    android:version="0x00010001"
    android:required="true" />

android.hardware.xr.input.controller

ฟีเจอร์นี้บ่งบอกว่าแอปต้องใช้อินพุตจากตัวควบคุมการเคลื่อนไหว 6DoF (องศาอิสระ) ที่มีความแม่นยำสูงจึงจะทำงานได้อย่างถูกต้อง หากแอปรองรับตัวควบคุมและไม่สามารถทํางานได้หากไม่มีตัวควบคุม ให้ตั้งค่าเป็น "จริง" หากแอปรองรับตัวควบคุมแต่สามารถทำงานได้โดยไม่ต้องใช้ตัวควบคุม ให้ตั้งค่าเป็นเท็จ

<uses-feature android:name="android.hardware.xr.input.controller" android:required="true" />

android.hardware.xr.input.hand_tracking

ธงนี้บ่งบอกว่าแอปต้องใช้การติดตามมือที่แม่นยำสูงเพื่อให้ทำงานได้อย่างถูกต้อง ซึ่งรวมถึงตำแหน่ง การวางแนว และความเร็วของข้อต่อในมือของผู้ใช้ หากแอปรองรับการติดตามมือและไม่สามารถทำงานได้หากไม่มีฟีเจอร์นี้ ให้ตั้งค่าเป็น "จริง" หากแอปรองรับการติดตามมือ แต่สามารถทำงานได้โดยไม่ต้องใช้การติดตามมือ ให้ตั้งค่าเป็นเท็จ

<uses-feature android:name="android.hardware.xr.input.hand_tracking" android:required="true" />

android.hardware.xr.input.eye_tracking

Flag นี้บ่งบอกว่าแอปต้องใช้การติดตามการเคลื่อนไหวของตาที่แม่นยำสูงเพื่อให้อินพุตทำงานได้อย่างถูกต้อง หากแอปรองรับการติดตามสายตาเพื่อป้อนข้อมูลและไม่สามารถทํางานได้หากไม่มี ให้ตั้งค่าเป็น "จริง" หากแอปรองรับการติดตามการเคลื่อนไหวของตาเพื่อรับอินพุต แต่สามารถทำงานได้โดยไม่ต้องใช้ ให้ตั้งค่าเป็นเท็จ

<uses-feature android:name="android.hardware.xr.input.eye_tracking" android:required="true" />

ข้อควรพิจารณาด้านความเข้ากันได้ของไฟล์ Manifest ของแอปสำหรับแอปบนอุปกรณ์เคลื่อนที่และแอปหน้าจอขนาดใหญ่

ตามที่อธิบายไว้ในส่วนฟีเจอร์ PackageManager สำหรับแอป XR แอปจะประกาศว่าใช้ฟีเจอร์โดยการประกาศในองค์ประกอบ <uses-feature> ในไฟล์ Manifest ของแอป ฟีเจอร์บางอย่าง เช่น การโทรหรือ GPS อาจใช้งานร่วมกับอุปกรณ์บางรุ่นไม่ได้

ฟีเจอร์ที่ไม่รองรับ

Google Play Store จะกรองแอปพลิเคชันที่พร้อมให้ติดตั้งในอุปกรณ์โดยใช้ประกาศฟีเจอร์ Android ต่อไปนี้

ฮาร์ดแวร์ของกล้อง

android.hardware.camera.ar

android.hardware.camera.autofocus

android.hardware.camera.capability.manual_post_processing

android.hardware.camera.capability.manual_sensor

android.hardware.camera.capability.raw

android.hardware.camera.concurrent

android.hardware.camera.external

android.hardware.camera.flash

android.hardware.camera.level.full

การเชื่อมต่อ

android.hardware.ethernet

android.hardware.uwb

android.hardware.ipsec_tunnel_migration

การกำหนดค่าอุปกรณ์

android.hardware.ram.low

การกำหนดค่ารูปแบบของอุปกรณ์

android.hardware.type.automotive

android.hardware.type.embedded

android.hardware.type.pc

android.hardware.type.television

android.hardware.type.watch

android.software.leanback

android.software.leanback_only

android.software.live_tv

อินพุต

android.hardware.consumerir

android.software.input_methods

ตำแหน่ง

android.hardware.location.gps

Near Field Communication

android.hardware.nfc

android.hardware.nfc.ese

android.hardware.nfc.hce

android.hardware.nfc.hcef

android.hardware.nfc.uicc

android.hardware.nfc.beam

การกำหนดค่าการรักษาความปลอดภัยและฮาร์ดแวร์

android.hardware.se.omapi.ese

android.hardware.se.omapi.sd

android.hardware.se.omapi.uicc

android.hardware.biometrics.face

android.hardware.fingerprint

android.hardware.identity_credential

android.hardware.identity_credential_direct_access

android.hardware.keystore.limited_use_key

android.hardware.keystore.single_use_key

android.hardware.strongbox_keystore

เซ็นเซอร์

android.hardware.sensor.accelerometer_limited_axes

android.hardware.sensor.accelerometer_limited_axes_uncalibrated

android.hardware.sensor.ambient_temperature

android.hardware.sensor.barometer

android.hardware.sensor.gyroscope_limited_axes

android.hardware.sensor.gyroscope_limited_axes_uncalibrated

android.hardware.sensor.heading

android.hardware.sensor.heartrate

android.hardware.sensor.heartrate.ecg

android.hardware.sensor.hinge_angle

android.hardware.sensor.light

android.hardware.sensor.relative_humidity

android.hardware.sensor.stepcounter

android.hardware.sensor.stepdetector

การกําหนดค่าซอฟต์แวร์

android.software.backup

android.software.connectionservice

android.software.expanded_picture_in_picture

android.software.live_wallpaper

android.software.picture_in_picture

android.software.telecom

android.software.wallet_location_based_suggestions

โทรศัพท์

android.hardware.telephony

android.hardware.telephony.calling

android.hardware.telephony.cdma

android.hardware.telephony.data

android.hardware.telephony.euicc

android.hardware.telephony.euicc.mep

android.hardware.telephony.gsm

android.hardware.telephony.ims

android.hardware.telephony.mbms

android.hardware.telephony.messaging

android.hardware.telephony.radio.access

android.hardware.telephony.subscription

android.software.sip

android.software.sip.voip

เทคโนโลยีความจริงเสมือน (เดิม)

android.hardware.vr.headtracking

android.hardware.vr.high_performance

android.software.vr.mode

วิดเจ็ต

android.software.app_widgets

ทำความเข้าใจสิทธิ์สำหรับ XR

ความสามารถบางอย่างที่แอป XR นำเสนออาจกำหนดให้แอปของคุณต้องประกาศสิทธิ์ในไฟล์ AndroidManifest ของแอป เช่นเดียวกับแอปในอุปกรณ์เคลื่อนที่และอุปกรณ์รูปแบบอื่นๆ ในกรณีที่เป็นสิทธิ์ที่เป็นอันตราย แอปของคุณอาจต้องขอสิทธิ์รันไทม์ อ่านสิทธิ์ใน Android และแนวทางปฏิบัติแนะนำเกี่ยวกับสิทธิ์เพื่อดูข้อมูลเพิ่มเติม

แอป XR อาจใช้สิทธิ์ต่อไปนี้ สิทธิ์ทั้งหมดในส่วนนี้ถือว่ามีความเสี่ยง คุณจึงต้องประกาศสิทธิ์เหล่านี้ในไฟล์ Manifest ของแอปและขอสิทธิ์เหล่านั้นในรันไทม์

android.permission.EYE_TRACKING_COARSE

แสดงท่าทาง สถานะ และการวางแนวของดวงตาของผู้ใช้ เช่น สำหรับใช้กับรูปโปรไฟล์ ใช้สิทธิ์นี้เมื่อต้องการข้อมูลการติดตามการเคลื่อนไหวของตาที่มีความแม่นยำต่ำ

Jetpack XR SDK

ไม่มี

ส่วนขยาย OpenXR

ฟีเจอร์ของ Unity

android.permission.EYE_TRACKING_FINE

การจับจ้องมองเพื่อเลือก ป้อนข้อมูล และโต้ตอบ

Jetpack XR SDK

ไม่มี

ส่วนขยาย OpenXR

ฟีเจอร์ของ Unity

android.permission.FACE_TRACKING

การติดตามและการแสดงผลสีหน้า

Jetpack XR SDK

ไม่มี

ส่วนขยาย OpenXR

ฟีเจอร์ของ Unity

android.permission.HAND_TRACKING

การติดตามท่าทางของข้อต่อมือและความเร็วเชิงมุมและเชิงเส้น การใช้การแสดงภาพมือของผู้ใช้ด้วยเมช

android.permission.SCENE_UNDERSTANDING_COARSE

การประมาณแสง การฉายภาพผ่านไปยังพื้นผิวของเมช การทำเรย์แคสต์กับสิ่งที่ติดตามได้ในสภาพแวดล้อม การติดตามระนาบ การติดตามวัตถุ หมุดคงที่

android.permission.SCENE_UNDERSTANDING_FINE

พื้นผิวความลึก

Jetpack XR SDK

ไม่มี

ส่วนขยาย OpenXR

ฟีเจอร์ของ Unity

ตรวจสอบคุณภาพของแอป Android XR

โปรดอ่านหลักเกณฑ์ด้านคุณภาพของแอป Android XR เพื่อให้มั่นใจว่าแอปของคุณมอบประสบการณ์การใช้งานที่ยอดเยี่ยมแก่ผู้ใช้

แพ็กเกจและเผยแพร่แอปสำหรับ Android XR

Android XR นำเสนอแอปและประสบการณ์การใช้งานที่หลากหลายสำหรับชุดหูฟัง XR ผ่าน Google Play ในคำแนะนำสำหรับการจัดแพ็กเกจและเผยแพร่แอปสำหรับ Android XR คุณจะเห็นข้อมูลเกี่ยวกับการเริ่มต้นใช้งาน Play Store และ Play Console, การเผยแพร่แทร็ก, การเตรียม App Bundle ของ Android และข้อจำกัดด้านขนาดแอป