สร้าง App Bundle แบบ Instant

คุณสร้างประสบการณ์การใช้งาน Google Play Instant ได้โดยรวมไว้เป็นส่วนหนึ่งของ Android App Bundle แพ็กเกจดังกล่าวเรียกว่า App Bundle ที่เปิดใช้ Instant เอกสารฉบับนี้แสดงวิธีตั้งค่า สภาพแวดล้อมในการพัฒนาซอฟต์แวร์สำหรับ App Bundle ที่เปิดใช้ Instant รวมทั้งวิธีการ กำหนดค่า สร้าง ทดสอบ และเผยแพร่ App Bundle ที่เปิดใช้ Instant

หากคุณมีโปรเจ็กต์ Instant App ที่ใช้ฟีเจอร์ที่เลิกใช้งานแล้ว (com.android.feature) ดูวิธี ย้ายข้อมูล Instant App เพื่อรองรับ Android App Bundle

ตั้งค่าสภาพแวดล้อมในการพัฒนาซอฟต์แวร์

หากต้องการมอบประสบการณ์การใช้งานแบบทันใจภายใน App Bundle คุณจะต้องมีสิทธิ์เข้าถึง SDK การพัฒนา Instant ของ Google Play คุณติดตั้ง SDK ได้โดยใช้ วิธีการต่อไปนี้

  • ติดตั้ง Android Studio 3.6 ขึ้นไป หลังจากเปิด Android Studio ดาวน์โหลด SDK การพัฒนา Instant ของ Google Play จากเครื่องมือ SDK ใน SDK Manager
  • ติดตั้งจากบรรทัดคำสั่งดังนี้

    cd path/to/android/sdk/tools/bin && \
      ./sdkmanager 'extras;google;instantapps'
    

นอกจากนี้หากต้องการทดสอบประสบการณ์แบบใช้งานได้ทันทีในเครื่อง ให้เข้าถึง ทั้งอุปกรณ์จริงหรืออุปกรณ์เสมือน

ดูข้อมูลเกี่ยวกับเงื่อนไขการดำเนินการที่จำเป็น

Google Play Instant จะเรียกใช้ App Bundle ที่เปิดใช้ Instant ในลักษณะพิเศษ แซนด์บ็อกซ์ SELinux เพื่อเพิ่มความปลอดภัย แซนด์บ็อกซ์นี้อนุญาตให้มี รวมถึงการโต้ตอบบางประเภทกับแอปอื่นๆ ส่วนต่อไปนี้จะอธิบายลักษณะของแซนด์บ็อกซ์โดยละเอียด

สิทธิ์และการดำเนินการที่รองรับ

App Bundle ที่เปิดใช้ Instant จะใช้สิทธิ์ได้เฉพาะจากรายการต่อไปนี้เท่านั้น

การจัดการสิทธิ์ทั่วไปที่ไม่รองรับ

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

  • ACCESS_WIFI_STATE: ใช้ ACCESS_NETWORK_STATE ซึ่งควรให้ ข้อมูลที่คล้ายกับ ACCESS_WIFI_STATE
  • BILLING: นี่เป็นสิทธิ์ที่เลิกใช้งานแล้ว ใช้เมนู Google Play Billing Library ซึ่งไม่ต้องใช้สิทธิ์ com.android.vending.BILLING อีกต่อไป
  • READ/WRITE_EXTERNAL_STORAGE: Instant App เข้าถึงภายนอกไม่ได้ พื้นที่เก็บข้อมูล; ให้ใช้ที่จัดเก็บข้อมูลภายในแทน
  • com.google.android.c2dm.permission.RECEIVE และ permission.C2D_MESSAGE: C2DM เลิกใช้งานแล้ว ย้ายข้อมูลไปยัง Firebase Cloud Messaging (FCM) FCM ทำ ไม่จำเป็นต้องใช้สิทธิ์เพิ่มเติมใดๆ ในการทำงาน

นอกจากนี้ App Bundle ที่เปิดใช้ Instant จะทำสิ่งต่อไปนี้ไม่ได้

การเข้าถึงแอปที่ติดตั้ง

เมื่อพัฒนาประสบการณ์แบบใช้งานได้ทันที โปรดทราบว่าโปรแกรมจะไม่สามารถโต้ตอบกับ แอปที่ติดตั้งในอุปกรณ์ เว้นแต่เป็นไปตามเงื่อนไขข้อใดข้อหนึ่งต่อไปนี้

  • กิจกรรมอย่างน้อย 1 รายการภายในแอปที่ติดตั้งไว้ได้ตั้งค่า android:visibleToInstantApps องค์ประกอบ ไปยัง trueองค์ประกอบนี้พร้อมใช้งาน สำหรับแอปที่ใช้ Android 8.0 (API ระดับ 26) ขึ้นไป
  • แอปที่ติดตั้งมีตัวกรอง Intent ที่ CATEGORY_BROWSABLE
  • ประสบการณ์แบบใช้งานได้ทันทีคือการส่ง Intent โดยใช้ ACTION_SEND ACTION_SENDTO หรือ ACTION_SEND_MULTIPLE การดำเนินการ

กำหนดค่าโปรเจ็กต์สำหรับประสบการณ์แบบใช้งานได้ทันที

เพื่อให้ใช้งานร่วมกับ Google Play Instant ได้ คุณต้องกำหนดค่า ของ App Bundle ที่เปิดใช้ Instant ต่างๆ อย่างละเอียดรอบคอบ ส่วนต่อไปนี้ อธิบายถึงข้อควรพิจารณาเหล่านี้

ประกาศทรัพยากร Dependency ของโปรเจ็กต์

หากต้องการใช้ Google Play Instant API ในแอป ให้ใส่ข้อมูลต่อไปนี้ ในไฟล์การกำหนดค่า build.gradle ของโมดูลแอป:

ดึงดูด

implementation "com.google.android.gms:play-services-instantapps:17.0.0"

Kotlin

implementation("com.google.android.gms:play-services-instantapps:17.0.0")

กำหนดรหัสเวอร์ชันที่ถูกต้อง

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

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

  • รีสตาร์ทรหัสเวอร์ชันสำหรับประสบการณ์การใช้งาน Google Play Instant ที่ 1.
  • เพิ่มรหัสเวอร์ชันของ APK ที่ติดตั้งได้จำนวนมาก เช่น 1, 000 เพื่อให้มีพื้นที่ว่างเพียงพอสำหรับเวอร์ชันของประสบการณ์การใช้งาน Instant ตัวเลขที่จะเพิ่ม

คุณสามารถพัฒนา Instant App และแอปที่ติดตั้งได้ใน 2 แอปแยกกัน โปรเจ็กต์ Android Studio แต่หากคุณดำเนินการดังกล่าว คุณต้องดำเนินการต่อไปนี้เพื่อ เผยแพร่แอปของคุณใน Google Play

  1. ใช้ชื่อแพ็กเกจเดียวกันในโปรเจ็กต์ Android Studio ทั้ง 2 โปรเจ็กต์
  2. ใน Google Play Console ให้อัปโหลดตัวแปรทั้ง 2 ตัวไปยังแอปพลิเคชันเดียวกัน

โปรดดูรายละเอียดเพิ่มเติมเกี่ยวกับการตั้งค่าเวอร์ชันของแอปที่หัวข้อกำหนดเวอร์ชัน แอป

อัปเดตเวอร์ชันแซนด์บ็อกซ์เป้าหมาย

คุณต้องอัปเดตไฟล์ AndroidManifest.xml ของ Instant App เพื่อกำหนดเป้าหมาย สภาพแวดล้อมแซนด์บ็อกซ์ที่ Google Play Instant รองรับ คุณสามารถดำเนินการ อัปเดตนี้ด้วยการเพิ่มแอตทริบิวต์ android:targetSandboxVersion ลงใน องค์ประกอบ <manifest> ดังที่แสดงในข้อมูลโค้ดต่อไปนี้

<manifest
   xmlns:android="http://schemas.android.com/apk/res/android"
  ...
   android:targetSandboxVersion="2" ...>

สำหรับข้อมูลเพิ่มเติม โปรดดูเอกสารประกอบเกี่ยวกับ targetSandboxVersion

ประกาศโมดูลแอปที่เปิดใช้ Instant

คุณประกาศว่า App Bundle รองรับประสบการณ์แบบใช้งานได้ทันทีโดยใช้ วิธีการต่อไปนี้

  • หากคุณมี App Bundle ที่มีเฉพาะ base คุณก็สามารถเปิดใช้ App Bundle ดังนี้

    1. เปิดแผงโครงการโดยเลือกมุมมอง > หน้าต่างเครื่องมือ > โปรเจ็กต์ จากแถบเมนู
    2. คลิกขวาที่โมดูลฐาน ซึ่งโดยทั่วไปจะใช้ชื่อว่า "แอป" แล้วเลือก เปลี่ยนโครงสร้างภายในโค้ด > เปิดใช้การสนับสนุน Instant Apps
    3. ในกล่องโต้ตอบที่ปรากฏขึ้น ให้เลือกโมดูลฐานจากเมนูแบบเลื่อนลง
    4. คลิกตกลง

    Android Studio เพิ่มการประกาศต่อไปนี้ลงในไฟล์ Manifest ของโมดูล

    <manifest ... xmlns:dist="http://schemas.android.com/apk/distribution">
        <dist:module dist:instant="true" />
        ...
    </manifest>
    
  • หากมี App Bundle ที่มีอยู่หลายโมดูล คุณจะทำสิ่งต่อไปนี้ได้ สร้างฟีเจอร์ที่เปิดใช้ Instant กระบวนการนี้ ยังเปิดใช้งานโมดูลฐานของแอปคุณได้ทันทีด้วย ให้ตัวเลือกในการ ข้อความโต้ตอบแบบทันทีหลายรายการ คะแนนใน แอป

เพิ่มการรองรับการลงชื่อเข้าใช้

หากประสบการณ์แบบใช้งานได้ทันทีอนุญาตให้ผู้ใช้ลงชื่อเข้าใช้ได้ แอปที่พร้อมใช้งาน Instant แพ็กเกจต้องรองรับ Smart Lock สำหรับรหัสผ่านใน Android หากคุณกำลังสร้าง "เล่นทันที" เกม คุณควรใช้การลงชื่อเข้าใช้บริการเกมของ Google Play แทน

รองรับสภาพแวดล้อมการดำเนินการ

เพื่อให้เข้ากันได้กับแซนด์บ็อกซ์ SELinux ที่ประสบการณ์แบบใช้งานได้ทันที โปรดเก็บ สิ่งที่ควรคำนึงถึงเมื่อสร้าง App Bundle ที่เปิดใช้ Instant

  • โปรดอย่าแชร์คุณค่าของ myUid() ซึ่งเป็นเคอร์เนลที่กำหนดสำหรับกระบวนการของแอป UID
  • หากแอปกำหนดเป้าหมายเป็น Android 8.1 (API ระดับ 27) หรือต่ำกว่า ให้สร้าง Network Security Config และตั้งค่า cleartextTrafficPermitted ถึง false ประสบการณ์แบบใช้งานได้ทันทีไม่รองรับ HTTP การเข้าชม สำหรับแอปที่กำหนดเป้าหมายเป็น Android 9 ขึ้นไป การเข้าชมแบบข้อความธรรมดาจะเป็น ปิดใช้โดยค่าเริ่มต้น
  • ประสบการณ์แบบใช้งานได้ทันทีจะยังคงได้รับการดาวน์โหลดในอุปกรณ์ของผู้ใช้จนกว่า ล้างแคชประสบการณ์แบบใช้งานได้ทันทีแล้ว ซึ่งจะเกิดในข้อใดข้อหนึ่งต่อไปนี้ สถานการณ์:

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

    หากเกิดกระบวนการใดขั้นตอนหนึ่งขึ้น ผู้ใช้จะต้องดาวน์โหลดประสบการณ์การใช้งาน Instant อีกครั้ง เพื่อที่จะโต้ตอบกับแท็ก

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

เพิ่มตรรกะสำหรับเวิร์กโฟลว์ประสบการณ์แบบใช้งานได้ทันที

หลังจากที่กำหนดค่า App Bundle เพื่อให้รองรับประสบการณ์การใช้งาน Instant แล้ว ให้เพิ่ม ตรรกะที่แสดงในส่วนต่อไปนี้

ตรวจสอบว่าแอปกำลังใช้ประสบการณ์แบบใช้งานได้ทันทีหรือไม่

หากตรรกะของแอปขึ้นอยู่กับว่าผู้ใช้มีส่วนร่วมกับ ประสบการณ์แบบใช้งานได้ทันที เรียก isInstantApp() เมธอดนี้จะแสดง true หากกระบวนการที่กำลังทำงานอยู่ในขณะนี้คือ แบบทันใจ

แสดงข้อความแจ้งให้ติดตั้ง

หากคุณกำลังสร้างแอปหรือเกมเวอร์ชันทดลองใช้ Google Play Instant จะช่วยให้ เพื่อแสดงข้อความแจ้งภายใน ประสบการณ์แบบใช้งานได้ทันที การเชิญให้ผู้ใช้ติดตั้งประสบการณ์เต็มรูปแบบใน อุปกรณ์ หากต้องการแสดงข้อความแจ้งนี้ ให้ใช้ InstantApps.showInstallPrompt() ดังที่แสดงในข้อมูลโค้ดต่อไปนี้

Kotlin

class MyInstantExperienceActivity : AppCompatActivity {
    // ...
    private fun showInstallPrompt() {
        val postInstall = Intent(Intent.ACTION_MAIN)
                .addCategory(Intent.CATEGORY_DEFAULT)
                .setPackage(your-installed-experience-package-name)

        // The request code is passed to startActivityForResult().
        InstantApps.showInstallPrompt(this@MyInstantExperienceActivity,
                postInstall, request-code, /* referrer= */ null)
    }
}

Java

public class MyInstantExperienceActivity extends AppCompatActivity {
    // ...
    private void showInstallPrompt() {
        Intent postInstall = new Intent(Intent.ACTION_MAIN)
                .addCategory(Intent.CATEGORY_DEFAULT)
                .setPackage(your-installed-experience-package-name);

        // The request code is passed to startActivityForResult().
        InstantApps.showInstallPrompt(MyInstantExperienceActivity.this,
                postInstall, request-code, /* referrer= */ null);
    }
}

โอนข้อมูลไปยังประสบการณ์การใช้งานที่ติดตั้งไว้

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

หากผู้ใช้กำลังใช้อุปกรณ์ที่ใช้ Android 8.0 (API ระดับ 26) ขึ้นไป และหากแอปของคุณระบุ targetSandboxVersion ของ 2 ระบบจะโอนข้อมูลของผู้ใช้ ไปเป็นแอปเวอร์ชันเต็มโดยอัตโนมัติ ไม่เช่นนั้น คุณจะต้องโอน ข้อมูลด้วยตนเอง โดยใช้ API อย่างใดอย่างหนึ่งต่อไปนี้

  • สำหรับผู้ใช้ที่ใช้อุปกรณ์ที่ใช้ Android 8.0 (API ระดับ 26) ขึ้นไป ใช้ Cookie API - ตัวอย่างแอป
  • ผู้ใช้โต้ตอบกับประสบการณ์การใช้งานของคุณในอุปกรณ์ที่ใช้ Android 7.1 หรือไม่ (API ระดับ 25) และต่ำกว่า ให้เพิ่มการสนับสนุนสำหรับ Storage API - ตัวอย่างแอป

สร้าง App Bundle

คุณสามารถใช้ Android Studio หรืออินเทอร์เฟซบรรทัดคำสั่งเพื่อสร้าง App Bundle ที่เปิดใช้ Instant

Android Studio

หากใช้ Android Studio คุณจะสร้าง App Bundle ได้โดยเลือก สร้าง > สร้างชุด / APK > สร้างแพ็กเกจ หากต้องการดูข้อมูลเพิ่มเติม เกี่ยวกับการสร้างโปรเจ็กต์ โปรดดูหัวข้อสร้างโครงการ

อินเทอร์เฟซบรรทัดคำสั่ง

คุณยังสร้าง App Bundle จากคำสั่งได้ด้วย เส้นโดยใช้ Gradle

รองรับสถาปัตยกรรม 64 บิต

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

ทดสอบประสบการณ์แบบใช้งานได้ทันที

ก่อนเผยแพร่ App Bundle ที่เปิดใช้ Instant คุณสามารถทดสอบ Instant จากตำแหน่งใดตำแหน่งหนึ่งต่อไปนี้เพื่อยืนยันฟังก์ชันการทำงาน

Android Studio

วิธีทดสอบประสบการณ์การใช้งาน Instant ของแอปในเครื่องที่ใช้ Android Studio มีดังนี้ ทำตามขั้นตอนต่อไปนี้

  1. หากคุณติดตั้งแอปไว้ในอุปกรณ์ทดสอบ ให้ถอนการติดตั้ง ได้
  2. ใน Android Studio จากตัวเลือกการติดตั้งที่ปรากฏใน แท็บทั่วไปของการกำหนดค่าการเรียกใช้/แก้ไขข้อบกพร่อง ให้เปิดใช้ตัวเลือกทำให้ใช้งานได้ทันที แอป
  3. เลือกเรียกใช้ > เรียกใช้ในแถบเมนู หรือคลิกเรียกใช้ ใน แถบเครื่องมือ จากนั้นเลือกอุปกรณ์ที่คุณต้องการทดสอบ Instant ของแอป ได้ง่ายขึ้น ประสบการณ์แบบใช้งานได้ทันทีของแอปจะโหลดในอุปกรณ์ทดสอบที่คุณ ที่เลือก

อินเทอร์เฟซบรรทัดคำสั่ง

หากต้องการทดสอบประสบการณ์การใช้งาน Instant ของแอปบนเครื่องภายในโดยใช้บรรทัดคำสั่ง ทำตามขั้นตอนต่อไปนี้

  1. หากคุณติดตั้งแอปไว้ในอุปกรณ์ทดสอบ ให้ถอนการติดตั้ง ได้
  2. ไซด์โหลดและเรียกใช้ Instant App บนอุปกรณ์ทดสอบด้วยการป้อน คำสั่งต่อไปนี้
ia run output-from-build-command

แทร็กทดสอบภายใน

วิธีทดสอบประสบการณ์แบบใช้งานได้ทันทีของแอปจาก Play Store หรือแบนเนอร์ใน เผยแพร่แอปไปยังการทดสอบภายใน แทร็ก ใน Play Console

หากต้องการเผยแพร่แอปไปยังแทร็กทดสอบภายใน ให้ทำตามขั้นตอนต่อไปนี้

  1. อัปโหลด App Bundle โดยทำตามขั้นตอนในหัวข้ออัปโหลด App Bundle ของคุณ ในคู่มือ Play Console
  2. เตรียม Bundle ที่อัปโหลดสำหรับรุ่นไปยังแทร็กทดสอบภายใน สำหรับ ดูข้อมูลเพิ่มเติมได้ในบทความสนับสนุนเกี่ยวกับวิธีเตรียมความพร้อมและ เปิดตัว รุ่นต่างๆ
  3. ลงชื่อเข้าใช้บัญชีผู้ทดสอบภายในในอุปกรณ์ แล้วเปิด Instant จากแพลตฟอร์มใดแพลตฟอร์มหนึ่งต่อไปนี้

    • ปุ่มลองใช้เลยจากข้อมูลผลิตภัณฑ์ใน Play Store ของแอป
    • ลิงก์จากแบนเนอร์ในเว็บไซต์ของแอป

เผยแพร่ App Bundle ไปยังแทร็กเวอร์ชันที่ใช้งานจริง

หากต้องการเผยแพร่ App Bundle ที่เปิดใช้ Instant ให้ทำตามขั้นตอนต่อไปนี้

  1. รับรอง App Bundle ด้วยรุ่นหากยังไม่ได้ทำ และอัปโหลด App Bundle ไปยัง Play Console
  2. ใน Play Console ให้เปิดการจัดการรุ่น > Android Instant Apps จากนั้น ไปที่แทร็ก Instant App เวอร์ชันที่ใช้งานจริง
  3. เลือกอัปเดตจากคลัง แล้วเลือก App Bundle ที่เปิดใช้ Instant ที่คุณอัปโหลดไว้

เลือกตำแหน่งที่ต้องการเผยแพร่ประสบการณ์แบบใช้งานได้ทันที

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

แหล่งข้อมูลเพิ่มเติม

ดูข้อมูลเพิ่มเติมเกี่ยวกับการสร้างประสบการณ์แบบใช้งานได้ทันทีและ Android App Bundle ได้ที่ แหล่งข้อมูลต่อไปนี้

วิดีโอ: การรวมแอปไว้ในทันที
เรียนรู้วิธีเพิ่มประสบการณ์แบบใช้งานได้ทันทีให้กับ Android App Bundle ใน จาก Android Dev Summit ปี 2018
วิดีโอ: เผยแพร่แอปขนาดเล็กด้วย Android App Bundle
ดูวิธีที่ App Bundle ช่วยให้คุณพัฒนาแอปได้เร็วขึ้นและสร้าง APK ขนาดเล็กสำหรับผู้ใช้
Codelab: Android App Bundle แรกของคุณ
คำแนะนำทีละขั้นตอนในการสร้าง Android App Bundle และเพิ่มฟีเจอร์ให้กับ
รูปแบบ Android App Bundle
ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีที่โปรแกรมบรรทัดคำสั่ง bundletool จัดระเบียบแอป จากโค้ดและทรัพยากรของแอป