โปรไฟล์พื้นฐานช่วยเพิ่มความเร็วในการเรียกใช้โค้ดประมาณ 30% ตั้งแต่การเปิดตัวครั้งแรก ด้วยการหลีกเลี่ยงขั้นตอนการตีความและ การคอมไพล์แบบ Just-In-Time (JIT) ขั้นตอนการคอมไพล์ สำหรับเส้นทางโค้ดที่รวมไว้
เมื่อเผยแพร่โปรไฟล์พื้นฐานในแอปหรือไลบรารี Android Runtime (ART) จะเพิ่มประสิทธิภาพเส้นทางโค้ดที่ระบุผ่านการคอมไพล์แบบ Ahead-of-Time (AOT) ซึ่งช่วยเพิ่มประสิทธิภาพสำหรับผู้ใช้ใหม่ทุกคนและการอัปเดตแอปทุกครั้ง การเพิ่มประสิทธิภาพที่แนะนำโดยโปรไฟล์ (PGO) นี้ช่วยให้แอปเพิ่มประสิทธิภาพการเริ่มต้น ลดการกระตุกของการโต้ตอบ และปรับปรุงประสิทธิภาพรันไทม์โดยรวมสำหรับผู้ใช้ตั้งแต่การเปิดตัวครั้งแรก
การเพิ่มประสิทธิภาพเหล่านี้ส่งผลโดยตรงต่อการปรับปรุงเมตริกทางธุรกิจ เช่น การคงผู้ใช้ไว้ ธุรกรรม และคะแนน คุณอ่านเพิ่มเติมเกี่ยวกับวิธีที่ประสิทธิภาพส่งผลต่อเมตริกทางธุรกิจได้ในเรื่องราวจาก Josh, Lyft, TikTok และ Zomato
ประโยชน์ของโปรไฟล์พื้นฐาน
โปรไฟล์พื้นฐานช่วยให้คอมไพล์โค้ดล่วงหน้าในการโต้ตอบที่สำคัญของผู้ใช้ เช่น การเริ่มต้นแอป การไปยังส่วนต่างๆ ระหว่างหน้าจอ หรือการเลื่อนดูเนื้อหา ซึ่งทำให้การโต้ตอบเหล่านี้ราบรื่นขึ้นตั้งแต่ครั้งแรกที่ใช้งาน การเพิ่มความเร็วและการตอบสนองของแอป โปรไฟล์พื้นฐานสามารถนำไปสู่ผู้ใช้ที่ใช้งานอยู่รายวันมากขึ้นและอัตราการกลับมาใช้งานเฉลี่ยที่สูงขึ้น
โปรไฟล์พื้นฐานช่วยแนะนำการเพิ่มประสิทธิภาพนอกเหนือจากการเริ่มต้นแอปด้วยการโต้ตอบทั่วไปของผู้ใช้ที่ปรับปรุงรันไทม์ของแอปตั้งแต่การเปิดตัวครั้งแรก การคอมไพล์ AOT ที่แนะนำไม่ขึ้นอยู่กับอุปกรณ์ของผู้ใช้ และสามารถทำได้ครั้งเดียวต่อการเผยแพร่ในคอมพิวเตอร์สำหรับการพัฒนาซอฟต์แวร์แทนที่จะเป็นอุปกรณ์เคลื่อนที่ การเผยแพร่เวอร์ชันที่มี โปรไฟล์พื้นฐานจะทำให้การเพิ่มประสิทธิภาพแอปพร้อมใช้งานได้เร็วกว่าการใช้ โปรไฟล์ Cloud เพียงอย่างเดียวมาก
เมื่อไม่ได้ใช้โปรไฟล์พื้นฐาน ระบบจะคอมไพล์โค้ดแอปทั้งหมดแบบ JIT ในหน่วยความจำหลังจากตีความ หรือเขียนลงในไฟล์ odex ในเบื้องหลังเมื่ออุปกรณ์ไม่ได้ใช้งาน หลังจากติดตั้งหรืออัปเดตแอป ผู้ใช้จะได้รับประสบการณ์การใช้งานที่ไม่เหมาะสมตั้งแต่ครั้งแรกที่ใช้งานจนกว่าจะมีการเพิ่มประสิทธิภาพเส้นทางโค้ดใหม่
แอปจำนวนมากวัดการเพิ่มประสิทธิภาพได้ประมาณ 30% หลังจากเพิ่มประสิทธิภาพแล้ว
โปรไฟล์การเริ่มต้น
โปรไฟล์การเริ่มต้นคล้ายกับโปรไฟล์พื้นฐาน แต่ใช้ในเวลาคอมไพล์เพื่อเพิ่มประสิทธิภาพเลย์เอาต์ DEX ให้เวลาเริ่มต้นเร็วขึ้น แทนที่จะใช้เพื่อเพิ่มประสิทธิภาพในอุปกรณ์ ดูข้อมูลเพิ่มเติมเกี่ยวกับความแตกต่างระหว่างโปรไฟล์การเริ่มต้นกับโปรไฟล์พื้นฐาน ได้ที่เปรียบเทียบโปรไฟล์พื้นฐานกับโปรไฟล์การเริ่มต้น ดูข้อมูลเพิ่มเติมเกี่ยวกับการเพิ่มประสิทธิภาพเลย์เอาต์ DEX ได้ที่ การเพิ่มประสิทธิภาพเลย์เอาต์ DEX และโปรไฟล์ การเริ่มต้น
เริ่มต้นใช้งาน
หากต้องการเริ่มเพิ่มประสิทธิภาพในแอปที่มีอยู่ ให้ดูสร้างโปรไฟล์ พื้นฐาน
บิลด์โปรไฟล์เทียบกับบิลด์ที่เผยแพร่
คุณต้องเข้าใจความแตกต่างในการกำหนดค่าบิลด์ที่จำเป็นเมื่อ สร้าง ไฟล์โปรไฟล์พื้นฐานและโปรไฟล์การเริ่มต้น (เช่น baseline-prof.txt และ startup-prof.txt) เทียบกับเมื่อสร้าง APK ที่เผยแพร่ขั้นสุดท้ายซึ่งใช้โปรไฟล์เหล่านี้
เมื่อสร้างไฟล์โปรไฟล์ (เช่น benchmark):
หากต้องการให้กฎโปรไฟล์ที่สร้างขึ้นตรงกับลายเซ็นของเมธอดในโค้ดอย่างถูกต้อง คุณต้องปิดการทำให้สับสนและการเพิ่มประสิทธิภาพ (R8) สำหรับตัวแปรบิลด์ที่ใช้สร้างโปรไฟล์ ตัวแปรนี้ต้องแตกต่างจากตัวแปรบิลด์ที่เผยแพร่ซึ่งเปิดใช้การทำให้สับสนและการเพิ่มประสิทธิภาพ คุณทำได้โดยตั้งค่า isMinifyEnabled = false สำหรับตัวแปรบิลด์การสร้างโปรไฟล์ หากไม่ได้ใช้ปลั๊กอิน Baseline Profile Gradle คุณควรตรวจสอบว่าได้ใช้ -dontobfuscate และ -dontoptimize แล้วด้วย ปลั๊กอิน
Baseline Profile Gradle
จะจัดการการกำหนดค่านี้ให้คุณโดยอัตโนมัติ
เมื่อสร้าง APK ที่เผยแพร่ขั้นสุดท้าย:
บิลด์ที่เผยแพร่ควรมี isMinifyEnabled = true เสมอเพื่อรับประโยชน์จากการทำให้สับสน การลดขนาด และการเพิ่มประสิทธิภาพ R8 จะเขียนกฎจากไฟล์โปรไฟล์ที่ไม่ทำให้สับสนใหม่โดยอัตโนมัติเพื่อให้ตรงกับโค้ดที่ทำให้สับสนและเพิ่มประสิทธิภาพใน APK ที่เผยแพร่ การเพิ่มประสิทธิภาพเลย์เอาต์ DEX
(ขับเคลื่อนโดยโปรไฟล์การเริ่มต้น) จะมีประสิทธิภาพเมื่อแอปที่เผยแพร่ทำให้สับสนและใช้ R8 โดยเปิดใช้การเพิ่มประสิทธิภาพทั้งหมด
เวอร์ชันเสถียรขั้นต่ำที่แนะนำ
เชนการพึ่งพามีเวอร์ชันที่เผยแพร่แบบเสถียรและแบบพัฒนา หากต้องการสร้างและติดตั้งโปรไฟล์พื้นฐาน ให้ใช้ Android Gradle Plugin, Macrobenchmark Library และ Profile Installer เวอร์ชันที่รองรับต่อไปนี้หรือสูงกว่า ทรัพยากร Dependency เหล่านี้จำเป็นในเวลาที่ต่างกันและทำงานร่วมกันเป็น Toolchain เพื่อเปิดใช้โปรไฟล์พื้นฐานที่เหมาะสม
- ปลั๊กอิน Android Gradle:
com.android.tools.build:8.0.0 - Macrobenchmark Library:
androidx.benchmark:benchmark-macro-junit4:1.4.1 - Profile Installer:
androidx.profileinstaller:profileinstaller:1.4.1
เราขอแนะนำให้ใช้ AGP เวอร์ชันล่าสุดเพื่อสร้างและจัดการโปรไฟล์พื้นฐาน ฟังก์ชันการทำงานหลักที่มาพร้อมกับ AGP เวอร์ชันต่างๆ มีดังนี้
| AGP เวอร์ชัน | ฟีเจอร์ |
|---|---|
| 9.1 |
การรองรับไดเรกทอรีชุดซอร์สแบบเต็ม (โมดูลไลบรารี):
นอกเหนือจากไดเรกทอรีที่รองรับตัวแปรแล้ว คุณยังประกาศ
ไฟล์แหล่งที่มาของโปรไฟล์พื้นฐานหลายไฟล์ที่มีชื่อที่กำหนดเองได้
เช่น src/free/generated/baselineProfiles/baseline-prof1.txt,
สำหรับโมดูลไลบรารีและโมดูลแอป
|
| 8.4 | การติดตั้งแอปในเครื่องของบิลด์ที่ไม่สามารถแก้ไขข้อบกพร่องได้โดยใช้เครื่องมือบรรทัดคำสั่ง Gradle Wrapper หรือ Android Studio จะติดตั้งโปรไฟล์พื้นฐาน ดังนั้นประสิทธิภาพของบิลด์ที่เผยแพร่ในเครื่องจะตรงกับเวอร์ชันที่ใช้งานจริงมากขึ้น การอัปเดตนี้ ไม่มีผลต่อประสิทธิภาพการทำงานของโปรไฟล์พื้นฐานในเวอร์ชันที่ใช้งานจริง |
| 8.3 |
|
| 8.2 |
|
| 8.0 | เวอร์ชันขั้นต่ำที่แนะนำ: ใช้ปลั๊กอิน Baseline
Profile Gradle เพื่อสร้างโปรไฟล์พื้นฐานด้วยงาน Gradle งานเดียว
|
| 7.4 |
เวอร์ชันต่ำสุดที่รองรับ: แอปสามารถใช้โปรไฟล์พื้นฐาน
จากไลบรารีและระบุโปรไฟล์พื้นฐานของตัวเองใน
ไฟล์ src/main/baseline-prof.txt
|
การตั้งค่าแหล่งที่มาของโปรไฟล์ที่รองรับตัวแปร
การใช้ปลั๊กอิน Android Gradle (AGP) เวอร์ชัน 8.0 สำหรับแอปพลิเคชันและปลั๊กอิน AGP เวอร์ชัน 8.3 สำหรับไลบรารีช่วยให้คุณวางกฎโปรไฟล์พื้นฐานในไดเรกทอรีชุดซอร์สเฉพาะได้ โดยไม่ต้องยึดติดกับเส้นทางเดียวที่ตายตัว (เช่น src/main/baseline-prof.txt) และเปิดใช้ไฟล์หลายไฟล์
ซึ่งจะช่วยให้การรองรับตัวแปรมีประสิทธิภาพมากขึ้น โดยช่วยให้คุณกำหนดโปรไฟล์พื้นฐานที่แตกต่างกันซึ่งปรับให้เหมาะกับบิลด์ประเภทต่างๆ (เช่น การใช้ไดเรกทอรีอย่าง src/variant/baselineProfiles/) ซึ่งจะช่วยให้มั่นใจได้ว่ากฎการเพิ่มประสิทธิภาพจะใช้ได้อย่างแม่นยำกับไบนารีของแอปพลิเคชันหรือไลบรารีที่ไม่ซ้ำกันแต่ละรายการ
ตัวอย่างการสร้างโปรไฟล์
ต่อไปนี้เป็นคลาสตัวอย่างเพื่อสร้างโปรไฟล์พื้นฐานสำหรับการเริ่มต้นแอป รวมถึงเหตุการณ์การไปยังส่วนต่างๆ และการเลื่อนหลายรายการโดยใช้ Macrobenchmark Library ที่แนะนำ
class BaselineProfileGenerator {
@get:Rule
val baselineProfileRule = BaselineProfileRule()
@Test
fun appStartupAndUserJourneys() {
baselineProfileRule.collect(packageName = PACKAGE_NAME) {
uiAutomator {
// App startup journey.
startApp(PACKAGE_NAME)
// Find and click elements using the new DSL
onElement { textAsString() == "COMPOSE LAZYLIST" }.click()
onElement { viewIdResourceName == "myLazyColumn" }.also {
it.fling(Direction.DOWN)
it.fling(Direction.UP)
}
pressBack()
}
}
}
}
ดูข้อมูลเพิ่มเติมเกี่ยวกับการใช้ UI Automator Library เพื่อทำให้เส้นทางของผู้ใช้เป็นแบบอัตโนมัติได้ที่เขียนการทดสอบอัตโนมัติด้วย UI Automator
คุณสามารถดูโค้ดนี้ในบริบทแบบเต็มและรายละเอียดเพิ่มเติมได้ในส่วนตัวอย่างประสิทธิภาพใน GitHub
ข้อมูลที่ต้องระบุ
เมื่อใช้โปรไฟล์พื้นฐานในแอป คุณสามารถใส่โค้ดการเริ่มต้นแอปและการโต้ตอบทั่วไปของผู้ใช้ เช่น การไปยังส่วนต่างๆ ระหว่างหน้าจอหรือการเลื่อน นอกจากนี้ คุณยังรวบรวมโฟลว์ทั้งหมด เช่น การลงทะเบียน การเข้าสู่ระบบ หรือการชำระเงินได้ด้วย เส้นทางของผู้ใช้ที่คุณเห็นว่ามีความสำคัญจะได้รับประโยชน์จากโปรไฟล์พื้นฐานด้วยการปรับปรุงประสิทธิภาพรันไทม์
หากคุณกำลังทดลองใช้แนวทางต่างๆ เพื่อปรับปรุงประสิทธิภาพ ให้พิจารณารวมโปรไฟล์พื้นฐานสำหรับทั้ง 2 กลุ่มในการทดสอบ การทำเช่นนี้จะช่วยให้คุณตีความผลลัพธ์ได้ง่ายขึ้นด้วยการตรวจสอบว่าผู้ใช้ทั้งหมดเรียกใช้โค้ดที่คอมไพล์แล้วอย่างสม่ำเสมอ
ไลบรารีสามารถระบุโปรไฟล์พื้นฐานของตัวเองและเผยแพร่โปรไฟล์ดังกล่าวพร้อมกับเวอร์ชันที่เผยแพร่เพื่อปรับปรุงประสิทธิภาพของแอป ดูตัวอย่างได้ที่ส่วนใช้โปรไฟล์พื้นฐานใน ประสิทธิภาพของ Jetpack Compose
วิธีการทำงานของโปรไฟล์พื้นฐาน
ขณะพัฒนาแอปหรือไลบรารี ให้พิจารณากำหนดโปรไฟล์พื้นฐานเพื่อครอบคลุมการโต้ตอบทั่วไปของผู้ใช้ที่เวลาในการแสดงผลหรือเวลาในการตอบสนองมีความสำคัญ โดยมีวิธีการทำงานดังนี้
ระบบจะสร้างกฎโปรไฟล์ที่อ่านได้ให้มนุษย์เข้าใจสำหรับแอปและคอมไพล์เป็นรูปแบบไบนารีในแอป คุณจะดูได้ใน
assets/dexopt/baseline.profจากนั้นคุณก็อัปโหลด Android App Bundle (AAB) ไปยัง Google Play ได้ตามปกติGoogle Play จะประมวลผลโปรไฟล์และเผยแพร่ไปยังผู้ใช้โดยตรงพร้อมกับ APK ระหว่างการติดตั้ง ART จะคอมไพล์เมธอดในโปรไฟล์แบบ AOT ซึ่งทำให้เมธอดเหล่านั้นทำงานได้เร็วขึ้น หากโปรไฟล์มีเมธอดที่ใช้ในการเปิดแอปหรือระหว่างการแสดงผลเฟรม ผู้ใช้อาจได้รับประสบการณ์การเปิดแอปที่เร็วขึ้นและการกระตุกที่ลดลง
โฟลว์นี้ทำงานร่วมกับการรวบรวมโปรไฟล์ Cloud เพื่อปรับประสิทธิภาพตามการใช้งานแอปจริงเมื่อเวลาผ่านไป
เปรียบเทียบโปรไฟล์พื้นฐานกับโปรไฟล์การเริ่มต้น
คุณใช้ปลั๊กอิน Baseline Profile Gradle เพื่อกำหนดและสร้างไฟล์โปรไฟล์
ปลั๊กอินนี้จะเชื่อมต่อกับกระบวนการบิลด์ และ AGP จะคอมไพล์กฎโปรไฟล์ที่อ่านได้ให้มนุษย์เข้าใจเหล่านี้เป็นรูปแบบไบนารี ซึ่งแพ็กเกจเป็น baseline.prof ภายใน APK หรือ AAB ที่ ART ใช้ได้อย่างมีประสิทธิภาพสำหรับการคอมไพล์ในอุปกรณ์ โดยมีขนาดไม่เกิน 1.5 MB
โดยปกติแล้วไฟล์โปรไฟล์ที่สร้างขึ้นจะมีชื่อว่า startup-prof.txt และ baseline-prof.txt แม้ว่าเนื้อหาของไฟล์เหล่านี้อาจดูคล้ายกันในบางครั้ง โดยเฉพาะอย่างยิ่งหากคุณมุ่งเน้นที่การเริ่มต้นเป็นหลัก แต่ไฟล์เหล่านี้มีวัตถุประสงค์ที่แตกต่างกันและส่งผลต่อประสิทธิภาพในระยะต่างๆ ดังนี้
โปรไฟล์พื้นฐาน
ไฟล์โปรไฟล์พื้นฐานมีชุดกฎที่ครอบคลุมซึ่ง Android Runtime (ART) ใช้เพื่อคอมไพล์เส้นทางโค้ดที่ใช้บ่อยล่วงหน้า ซึ่งจะเพิ่มประสิทธิภาพของแอปนอกเหนือจากการเริ่มต้น
โดยทั่วไปแล้วไฟล์โปรไฟล์พื้นฐานจะเป็นซูเปอร์เซ็ตของกฎที่พบในโปรไฟล์การเริ่มต้น ไฟล์นี้มีกฎทั้งหมดที่จำเป็นสำหรับการเพิ่มประสิทธิภาพการเริ่มต้นแอป (สร้างผ่านงาน baselineProfile Gradle) รวมถึงโปรไฟล์เพิ่มเติมสำหรับเส้นทางของผู้ใช้ที่สำคัญอื่นๆ เช่น การเลื่อนและการไปยังส่วนต่างๆ ระหว่างหน้าจอ
ระบบจะสร้างกฎเพิ่มเติมที่ไม่ใช่กฎการเริ่มต้นเหล่านี้โดยไม่คำนึงถึงค่าของฟิลด์กำหนดค่า includeInStartupProfile
โปรไฟล์การเริ่มต้น
ไฟล์โปรไฟล์การเริ่มต้นมีกฎที่เพิ่มประสิทธิภาพสำหรับเส้นทางการเริ่มต้นของแอปโดยเฉพาะ ระหว่างการคอมไพล์ D8 จะแปลง Java bytecode เป็นรูปแบบ DEX
จากนั้น R8 จะใช้ไฟล์นี้เพื่อกำหนดเลย์เอาต์ของไฟล์ DEX โดยตรวจสอบว่าโค้ดการเริ่มต้นที่สำคัญอยู่ในไฟล์ DEX หลักเพื่อให้ทำงานได้เร็วขึ้น โดยทั่วไปแล้วคุณควรตั้งค่า includeInStartupProfile เป็น true เฉพาะสำหรับสถานการณ์การทดสอบที่จำเป็นสำหรับการแสดงผลเริ่มต้นของแอป ดูข้อมูลเพิ่มเติมได้ที่
สร้างโปรไฟล์การเริ่มต้น
โปรไฟล์ Cloud
โปรไฟล์ Cloud เป็น PGO อีกรูปแบบหนึ่งที่ Google Play Store รวบรวมและเผยแพร่เพื่อการคอมไพล์ในเวลาติดตั้ง พร้อมกับโปรไฟล์พื้นฐาน
แม้ว่าโปรไฟล์ Cloud จะขับเคลื่อนโดยการโต้ตอบของผู้ใช้จริงกับแอป แต่ระบบต้องใช้เวลาหลายชั่วโมงถึงหลายวันหลังจากอัปเดตจึงจะเผยแพร่ได้ ซึ่งจำกัดความพร้อมใช้งาน จนกว่าจะมีการเผยแพร่โปรไฟล์อย่างเต็มที่ ประสิทธิภาพของแอปจะต่ำกว่าที่ควรจะเป็นสำหรับผู้ใช้แอปใหม่หรือแอปที่อัปเดต นอกจากนี้ โปรไฟล์ Cloud ยังรองรับเฉพาะอุปกรณ์ Android ที่ใช้ Android 9 (ระดับ API 28) ขึ้นไป และจะปรับขนาดได้ดีเฉพาะกับแอปที่มีฐานผู้ใช้ขนาดใหญ่พอ
ลักษณะการทำงานของการคอมไพล์ใน Android เวอร์ชันต่างๆ
Android Platform เวอร์ชันต่างๆ ใช้แนวทางการคอมไพล์แอปที่แตกต่างกัน ซึ่งแต่ละแนวทางก็มีข้อดีข้อเสียด้านประสิทธิภาพที่แตกต่างกัน โปรไฟล์พื้นฐานปรับปรุงวิธีการคอมไพล์ก่อนหน้านี้ด้วยการระบุโปรไฟล์สำหรับการติดตั้งทั้งหมด
| Android เวอร์ชัน | วิธีการคอมไพล์ | แนวทางการเพิ่มประสิทธิภาพ |
|---|---|---|
| 5 ถึง 6 (ระดับ API 21 ถึง 23) | AOT แบบเต็ม | ระบบจะเพิ่มประสิทธิภาพแอปทั้งหมดระหว่างการติดตั้ง ซึ่งส่งผลให้ต้องรอนานกว่าจะใช้แอปได้ การใช้ RAM และพื้นที่ดิสก์เพิ่มขึ้น และใช้เวลานานขึ้นในการโหลดโค้ดจากดิสก์ ซึ่งอาจเพิ่มเวลาในการเริ่มต้นแบบ Cold Startup |
| 7 ถึง 8.1 (API ระดับ 24 ถึง 27) | AOT บางส่วน (โปรไฟล์พื้นฐาน) | androidx.profileinstaller จะติดตั้งโปรไฟล์พื้นฐานในการเรียกใช้ครั้งแรกเมื่อโมดูลแอปกำหนดทรัพยากร Dependency นี้ ART สามารถปรับปรุงเพิ่มเติมได้ด้วยการเพิ่มกฎโปรไฟล์เพิ่มเติมระหว่างการใช้งานแอป และคอมไพล์กฎเหล่านั้นเมื่ออุปกรณ์ไม่ได้ใช้งาน ซึ่งจะเพิ่มประสิทธิภาพพื้นที่ดิสก์และเวลาในการโหลดโค้ดจากดิสก์ จึงช่วยลดเวลาที่ต้องรอแอป |
| 9 (ระดับ API 28) ขึ้นไป | AOT บางส่วน (โปรไฟล์พื้นฐาน + โปรไฟล์ Cloud) | Play ใช้โปรไฟล์พื้นฐานระหว่างการติดตั้งแอปเพื่อเพิ่มประสิทธิภาพ APK และโปรไฟล์ Cloud (หากมี) หลังจากติดตั้งแล้ว ระบบจะอัปโหลดโปรไฟล์ ART ไปยัง Play รวบรวมโปรไฟล์ และเผยแพร่เป็นโปรไฟล์ Cloud ให้ผู้ใช้รายอื่นเมื่อติดตั้งหรืออัปเดตแอป |
ปัญหาที่ทราบแล้ว
ต่อไปนี้เป็นปัญหาและวิธีแก้ปัญหาที่อาจเกิดขึ้น หรือปัญหาที่อยู่ระหว่างการพัฒนาวิธีแก้ปัญหา
การสร้างโปรไฟล์พื้นฐานอาจล้มเหลวเนื่องจากการตั้งค่าสิทธิ์ในอุปกรณ์บางเครื่อง รวมถึงอุปกรณ์ OnePlus หากต้องการแก้ปัญหานี้ ให้ปิดตัวเลือกปิดใช้การตรวจสอบสิทธิ์ ในการตั้งค่าตัวเลือกสำหรับนักพัฒนาซอฟต์แวร์
อุปกรณ์ Firebase Test Lab ไม่รองรับการสร้างโปรไฟล์พื้นฐาน รวมถึงอุปกรณ์ Test Lab ที่จัดการโดย Gradle (ปัญหา #285187547)
หากต้องการระบุโปรไฟล์พื้นฐานสำหรับไลบรารีให้สำเร็จ ให้ใช้ ปลั๊กอิน Baseline Profile Gradle เวอร์ชัน 1.2.3 หรือ AGP เวอร์ชัน 8.3 ขึ้นไป (ปัญหา #313992099)
หากคุณสร้างโปรไฟล์พื้นฐานด้วยคำสั่ง
./gradlew app:generateBaselineProfileระบบจะเรียกใช้การทดสอบในโมดูลการทดสอบด้วย และจะทิ้งผลลัพธ์ หากเกิดกรณีนี้ คุณสามารถสร้างเฉพาะโปรไฟล์พื้นฐานได้โดยเรียกใช้คำสั่งด้วย-P android.testInstrumentationRunnerArguments.androidx.benchmark.enabledRules=BaselineProfileปัญหานี้ได้รับการแก้ไขแล้วใน AGP 8.2คำสั่งสร้างโปรไฟล์พื้นฐานสำหรับประเภทบิลด์ทั้งหมด
./gradlew app:generateBaselineProfileจะสร้างโปรไฟล์พื้นฐานสำหรับบิลด์ที่เผยแพร่เท่านั้น ปัญหานี้ได้รับการแก้ไขแล้วใน AGP 8.1ช่องทางการเผยแพร่แอปที่ไม่ใช่ Google Play Store อาจไม่รองรับการใช้โปรไฟล์พื้นฐานในการติดตั้ง ผู้ใช้แอปที่ติดตั้งผ่านช่องทางเหล่านี้จะไม่เห็นประโยชน์จนกว่า dexopt ในเบื้องหลังจะทำงาน ซึ่งมักจะเกิดขึ้นในชั่วข้ามคืน
การแชร์แอปภายในของ Play Store ไม่รองรับโปรไฟล์พื้นฐาน แต่ แทร็กการทดสอบภายใน รองรับ
การเพิ่มประสิทธิภาพแบตเตอรี่ในอุปกรณ์บางเครื่อง เช่น อุปกรณ์ Huawei อาจรบกวนการติดตั้งโปรไฟล์ หากต้องการให้ติดตั้งโปรไฟล์ได้อย่างมีประสิทธิภาพ ให้ปิดการเพิ่มประสิทธิภาพแบตเตอรี่ในอุปกรณ์ทดสอบ
แหล่งข้อมูลเพิ่มเติม
แนะนำสำหรับคุณ
- หมายเหตุ: ข้อความลิงก์จะแสดงเมื่อ JavaScript ปิดอยู่
- สร้างโปรไฟล์พื้นฐาน {:#creating-profile-rules}
- สร้างและวัดโปรไฟล์พื้นฐานโดยไม่ใช้ Macrobenchmark
- การเพิ่มประสิทธิภาพเลย์เอาต์ DEX และโปรไฟล์การเริ่มต้น