ใช้ R8 เพื่อลดขนาด เพิ่มประสิทธิภาพ และเร่งความเร็วแอป
ยินดีต้อนรับสู่วันแรกของสัปดาห์ Android Performance Spotlight
เราจะเริ่มต้นด้วยการเปลี่ยนแปลงที่มีประสิทธิภาพมากที่สุดและใช้ความพยายามน้อยที่สุดเพียงอย่างเดียวที่คุณสามารถทำได้เพื่อปรับปรุงประสิทธิภาพของแอป นั่นคือการเปิดใช้เครื่องมือเพิ่มประสิทธิภาพ R8 ในโหมดเต็ม
คุณอาจรู้จัก R8 ในฐานะเครื่องมือที่ใช้ลดขนาดแอปอยู่แล้ว ซึ่งจะช่วยนำโค้ดและทรัพยากรที่ไม่ได้ใช้ออกไปได้อย่างดีเยี่ยม ทำให้แอปมีขนาดเล็กลง แต่พลังที่แท้จริงของมัน ซึ่งเป็นสิ่งที่ g-R8 ทำได้ดีจริงๆ ก็คือการเป็นเครื่องมือเพิ่มประสิทธิภาพ
เมื่อเปิดใช้โหมดเต็มและอนุญาตการเพิ่มประสิทธิภาพ R8 จะทำการเพิ่มประสิทธิภาพทั้งโปรแกรมอย่างละเอียด โดยเขียนโค้ดใหม่เพื่อให้มีประสิทธิภาพมากขึ้นโดยพื้นฐาน นี่ไม่ใช่แค่การปรับแต่งเล็กๆ น้อยๆ
หลังจากอ่านบทความนี้แล้ว โปรดดูวิดีโอแนะนำสัปดาห์ไฮไลต์ด้านประสิทธิภาพเกี่ยวกับเครื่องมือเพิ่มประสิทธิภาพ R8 บน YouTube
R8 ช่วยให้แอปมีประสิทธิภาพมากขึ้นได้อย่างไร
มาดูขั้นตอนที่สำคัญที่สุดที่เครื่องมือเพิ่มประสิทธิภาพ R8 ใช้เพื่อปรับปรุงประสิทธิภาพของแอปกัน
Tree Shaking เป็นขั้นตอนที่สำคัญที่สุดในการลดขนาดแอป ในระยะนี้ ตัวเพิ่มประสิทธิภาพ R8 จะนำโค้ดที่ไม่ได้ใช้จากไลบรารีที่แอปของคุณขึ้นอยู่กับ รวมถึงโค้ดที่ไม่ได้ใช้จากฐานของโค้ดของคุณเองออก
การแทรกเมธอดจะแทนที่การเรียกใช้เมธอดด้วยโค้ดจริง ซึ่งจะช่วยปรับปรุงประสิทธิภาพรันไทม์
การผสานชั้นเรียนและกลยุทธ์อื่นๆ จะนำมาใช้เพื่อทำให้โค้ดกะทัดรัดยิ่งขึ้น การแยกส่วนที่สวยงามทั้งหมด เช่น อินเทอร์เฟซและลำดับชั้นของคลาส ไม่มีความสำคัญในตอนนี้และมีแนวโน้มที่จะถูกนำออก
การลดขนาดโค้ดใช้เพื่อเปลี่ยนชื่อคลาส ฟิลด์ และเมธอดให้สั้นลงและไม่มีความหมาย ดังนั้นแทนที่จะเป็น MyDataModel คุณอาจมีชั้นเรียนชื่อ a ซึ่งเป็นสาเหตุที่ทำให้เกิดความสับสนมากที่สุดเมื่ออ่านสแต็กเทรซจากแอปที่เพิ่มประสิทธิภาพด้วย R8 (โปรดทราบว่าเราได้ปรับปรุงส่วนนี้ใน AGP 9.0 แล้ว)
การลดขนาดทรัพยากรจะลดขนาดแอปเพิ่มเติมโดยการนำทรัพยากรที่ไม่ได้ใช้ออก เช่น ไฟล์ XML และ Drawable
การทำตามขั้นตอนเหล่านี้จะช่วยให้เครื่องมือเพิ่มประสิทธิภาพ R8 ปรับปรุงเวลาเริ่มต้นของแอป เปิดใช้การแสดงผล UI ที่ราบรื่นขึ้น โดยมีเฟรมที่ช้าและค้างน้อยลง และปรับปรุงการใช้ทรัพยากรในอุปกรณ์โดยรวม
กรณีศึกษา: การปรับปรุงประสิทธิภาพของ Reddit ด้วย R8
มาดูตัวอย่างจาก Reddit เพื่อเป็นตัวอย่างหนึ่งของการปรับปรุงประสิทธิภาพที่ R8 มอบให้ หลังจากเปิดใช้ R8 ในโหมดเต็มแล้ว แอป Reddit สำหรับ Android ก็มีประสิทธิภาพดีขึ้นอย่างมากในหลายๆ ด้าน
คำบรรยาย: R8 ช่วยปรับปรุงประสิทธิภาพแอปของ Reddit ได้อย่างไร
ทีมสังเกตเห็นว่า Cold Startup เร็วขึ้น 40% , ข้อผิดพลาด "แอปพลิเคชันไม่ตอบสนอง" (ANR) ลดลง 30% , การแสดงผลเฟรมดีขึ้น 25% และขนาดแอปเล็กลง 14%
การปรับปรุงเหล่านี้มีความสำคัญต่อความพึงพอใจของผู้ใช้ การเริ่มต้นที่เร็วขึ้นหมายถึงการรอน้อยลงและเข้าถึงเนื้อหาได้เร็วขึ้น ANR ที่น้อยลงจะช่วยให้แอปมีเสถียรภาพและเชื่อถือได้มากขึ้น ซึ่งจะช่วยลดความหงุดหงิดของผู้ใช้ การแสดงเฟรมที่ราบรื่นยิ่งขึ้นจะช่วยลดการกระตุกของ UI ทำให้การเลื่อนและภาพเคลื่อนไหวดูราบรื่นและตอบสนองได้ดี ผลกระทบทางเทคนิคในเชิงบวกนี้ยังเห็นได้อย่างชัดเจนในความรู้สึกของผู้ใช้
อ่านเพิ่มเติมเกี่ยวกับการปรับปรุงได้ในบล็อกของเรา
ผลข้างเคียงที่ไม่ใช่ด้านเทคนิคของการใช้ R8
จากการทำงานร่วมกับพาร์ทเนอร์ เราพบว่าการปรับปรุงทางเทคนิคเหล่านี้ส่งผลโดยตรงต่อความพึงพอใจของผู้ใช้ และสามารถเห็นได้จากการคงผู้ใช้ไว้ การมีส่วนร่วม และความยาวของเซสชัน ความสามารถในการดึงดูดผู้ใช้ ซึ่งวัดได้จากผู้ใช้ที่ใช้งานอยู่รายวัน รายสัปดาห์ หรือรายเดือน ก็ได้รับผลดีจากการปรับปรุงประสิทธิภาพทางเทคนิคเช่นกัน และเราเห็นว่าคะแนนแอปใน Play Store เพิ่มขึ้นตามการใช้งาน R8 การแชร์ข้อมูลนี้กับเจ้าของผลิตภัณฑ์, CTO และผู้มีอำนาจตัดสินใจจะช่วยเร่งประสิทธิภาพของแอปได้
ดังนั้นเรามาเรียกสิ่งที่มันเป็นกันเถอะ การเพิ่มประสิทธิภาพโดยเจตนาคือคุณธรรม
แนะแนวทางให้คุณสร้างแอปที่มีประสิทธิภาพมากขึ้น
เราทราบว่าคำแนะนำสำหรับนักพัฒนาแอปสำหรับ R8 ของเราจำเป็นต้องได้รับการปรับปรุง เราจึงเริ่มลงมือทำ ตอนนี้คำแนะนำสำหรับนักพัฒนาแอปสำหรับเครื่องมือเพิ่มประสิทธิภาพ R8 สามารถนำไปใช้ได้จริงมากขึ้น และให้คำแนะนำที่ครอบคลุมในการเปิดใช้และแก้ไขข้อบกพร่องของ R8
เอกสารประกอบจะแนะนำกลยุทธ์ระดับสูงสำหรับการนำไปใช้ โดยเน้นความสำคัญของการเลือกไลบรารีที่เหมาะกับการเพิ่มประสิทธิภาพ และที่สำคัญคือการนำฟีเจอร์ของ R8 ไปใช้ทีละน้อยเพื่อให้มั่นใจถึงความเสถียร แนวทางแบบเป็นระยะนี้ช่วยให้คุณปลดล็อกประโยชน์ของ R8 ได้อย่างปลอดภัย พร้อมทั้งให้คำแนะนำเกี่ยวกับปัญหาที่แก้ไขข้อบกพร่องได้ยาก
เราได้ขยายคำแนะนำเกี่ยวกับกฎการเก็บรักษาอย่างมาก ซึ่งเป็นกลไกหลักในการควบคุมเครื่องมือเพิ่มประสิทธิภาพ R8 ตอนนี้เรามีส่วนที่อธิบายว่ากฎการเก็บคืออะไร วิธีใช้กฎ และแนวทางปฏิบัติแนะนำในการเขียนและรักษากฎ นอกจากนี้ เรายังให้ Use Case และตัวอย่างที่นำไปใช้ได้จริง ซึ่งจะช่วยให้คุณเข้าใจวิธีป้องกันไม่ให้ R8 นำโค้ดที่จำเป็นในรันไทม์ออกอย่างถูกต้อง เช่น โค้ดที่เข้าถึงผ่านการสะท้อนหรือการใช้อินเทอร์เฟซเนทีฟ JNI
ตอนนี้เอกสารประกอบยังครอบคลุมขั้นตอนการติดตามที่จำเป็นและสถานการณ์ขั้นสูงด้วย เราได้เพิ่มส่วนเกี่ยวกับการทดสอบและการแก้ปัญหาเพื่อให้คุณยืนยันการเพิ่มประสิทธิภาพและแก้ไขข้อบกพร่องที่อาจเกิดขึ้นได้ ส่วนการกำหนดค่าขั้นสูงจะอธิบายวิธีกำหนดเป้าหมายตัวแปรบิลด์ที่เฉพาะเจาะจง วิธีปรับแต่งทรัพยากรที่จะเก็บไว้หรือนำออก และมีวิธีการเพิ่มประสิทธิภาพพิเศษสำหรับผู้เขียนไลบรารี เพื่อให้มั่นใจว่าคุณจะสามารถจัดหาแพ็กเกจที่เพิ่มประสิทธิภาพและเป็นมิตรกับ R8 ให้แก่นักพัฒนาแอปรายอื่นๆ ได้
เปิดใช้ศักยภาพอย่างเต็มรูปแบบของเครื่องมือเพิ่มประสิทธิภาพ R8
เครื่องมือเพิ่มประสิทธิภาพ R8 จะใช้ "โหมดเต็ม" โดยค่าเริ่มต้นตั้งแต่ปลั๊กอิน Android Gradle เวอร์ชัน 8.0 หากโปรเจ็กต์ได้รับการพัฒนามาเป็นเวลาหลายปี โปรเจ็กต์อาจยังมีแฟ็กล้าสมัยเพื่อปิดใช้ ตรวจสอบบรรทัดนี้ในไฟล์ gradle.properties แล้วนำออก
android.enableR8.fullMode=false // delete this line to enable R8's full potential
ตอนนี้ให้ตรวจสอบว่าคุณได้เปิดใช้ R8 ในไฟล์ build.gradle.kts ของแอปสำหรับตัวแปรที่เผยแพร่แล้วหรือไม่ โดยจะเปิดใช้ได้ด้วยการตั้งค่า isMinifyEnabled และ isShrinkResources เป็น true นอกจากนี้ คุณยังส่งไฟล์การกำหนดค่าเริ่มต้นและที่กำหนดเองในขั้นตอนนี้ได้ด้วย
release {
isMinifyEnabled = true
isShrinkResources = true
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
"keep-rules.pro"
)
}
กรณีศึกษา: การปรับปรุงประสิทธิภาพของ Disney+
วิศวกรที่ Disney+ ลงทุนในประสิทธิภาพของแอปและกำลังเพิ่มประสิทธิภาพประสบการณ์ของผู้ใช้แอป บางครั้งการเปลี่ยนแปลงที่ดูเหมือนเล็กน้อยก็อาจส่งผลกระทบอย่างมาก ขณะตรวจสอบการกำหนดค่า R8 ทีมพบว่ามีการใช้แฟล็ก -dontoptimize ซึ่งมาจากไฟล์การกำหนดค่าเริ่มต้นที่ยังคงใช้ในแอปจำนวนมากในปัจจุบัน
หลังจากแทนที่ proguard-android.txt ด้วย proguard-android-optimize.txt ทีม Disney+ พบว่าประสิทธิภาพของแอปดีขึ้นอย่างมาก
หลังจากเปิดตัวแอปเวอร์ชันใหม่ที่มีการเปลี่ยนแปลงนี้ต่อผู้ใช้แล้ว Disney+ พบว่าการเริ่มต้นแอปเร็วขึ้น 30% และ ANR ที่ผู้ใช้รับรู้ลดลง 25%
ปัจจุบันแอปจำนวนมากยังคงใช้ไฟล์ proguard-android.txt ซึ่งมีแฟล็ก -dontoptimize และนี่คือจุดที่การปรับปรุงเครื่องมือของเราเข้ามามีบทบาท
การสนับสนุนเครื่องมือ
ตั้งแต่การอัปเดตฟีเจอร์ใหม่ของ Android Studio Narwhal 3 เป็นต้นไป คุณจะเห็นคำเตือนจากเครื่องมือวิเคราะห์ซอร์สโค้ดเมื่อใช้ proguard-android.txt
และตั้งแต่ AGP 9.0 เป็นต้นไป เราจะยุติการสนับสนุนไฟล์นี้โดยสมบูรณ์ ซึ่งหมายความว่าคุณจะต้องย้ายข้อมูลไปยัง proguard-android-optimize.txt
นอกจากนี้ เรายังได้ลงทุนในฟีเจอร์ใหม่ๆ ของ Android Studio เพื่อให้การแก้ไขข้อบกพร่องของโค้ดที่ R8 เพิ่มประสิทธิภาพนั้นง่ายกว่าที่เคย ตั้งแต่ AGP 9.0 เป็นต้นไป คุณสามารถยกเลิกการปกปิดซอร์สโค้ดของ Stack Trace ภายใน Logcat ของ Android Studio สำหรับบิลด์ที่ประมวลผลด้วย R8 โดยอัตโนมัติ ซึ่งจะช่วยให้คุณระบุบรรทัดโค้ดที่ทำให้เกิดปัญหาได้อย่างแม่นยำ แม้ในแอปที่ได้รับการเพิ่มประสิทธิภาพอย่างเต็มที่ก็ตาม เราจะกล่าวถึงเรื่องนี้อย่างละเอียดในบล็อกโพสต์ของวันพรุ่งนี้ในสัปดาห์ Android Performance Spotlight นี้
ขั้นตอนถัดไป
ดูข้อมูลเบื้องต้นเกี่ยวกับสัปดาห์ที่น่าสนใจด้านประสิทธิภาพของเครื่องมือเพิ่มประสิทธิภาพ R8 บน YouTube
📣 เข้าร่วมภารกิจด้านประสิทธิภาพ
ได้เวลาดูสิทธิประโยชน์ด้วยตัวคุณเองแล้ว
เราขอท้าให้คุณเปิดใช้โหมดเต็มของ R8 สำหรับแอปวันนี้
- ทำตามคู่มือนักพัฒนาซอฟต์แวร์เพื่อเริ่มต้นใช้งาน เปิดใช้การเพิ่มประสิทธิภาพแอป
-
ตรวจสอบว่าคุณยังใช้
proguard-android.txtอยู่หรือไม่ แล้วแทนที่ด้วยproguard-android-optimize.txt - จากนั้นวัดผลลัพธ์ อย่าแค่รู้สึกถึงความแตกต่าง แต่ให้ยืนยันความแตกต่างนั้น วัดผลลัพธ์ด้านประสิทธิภาพโดยปรับโค้ดจาก แอปตัวอย่าง Macrobenchmark ใน GitHub เพื่อวัดเวลาเริ่มต้นก่อนและหลัง
เรามั่นใจว่าคุณจะเห็นประสิทธิภาพของแอปดีขึ้นอย่างมีนัยสำคัญ ใช้ #optimizationEnabled หากมีคำถามเกี่ยวกับการเปิดใช้หรือการแก้ปัญหา R8 เราพร้อมช่วยเหลือคุณ
เตรียมคำถามสำหรับเซสชัน Ask Android ในวันศุกร์
ใช้แฮชแท็ก #AskAndroid บนโซเชียลมีเดียเพื่อถามคำถามเกี่ยวกับประสิทธิภาพ เราจะคอยติดตามคำถามของคุณตลอดทั้งสัปดาห์ และจะตอบคำถามบางส่วนในเซสชัน Ask Android เกี่ยวกับประสิทธิภาพในวันศุกร์ที่ 21 พฤศจิกายน โปรดติดตามตอนต่อไปในวันพรุ่งนี้ ซึ่งเราจะเจาะลึกเรื่องการแก้ไขข้อบกพร่องและการแก้ปัญหา แต่ตอนนี้ให้เริ่มต้นใช้งาน R8 เพื่อให้แอปของคุณอยู่ในเส้นทางที่รวดเร็ว
อ่านต่อ
-
กิจกรรมและโปรแกรม
ตั้งแต่ความสามารถพื้นฐานของเครื่องมือเพิ่มประสิทธิภาพ R8 และการเพิ่มประสิทธิภาพตามโปรไฟล์ ไปจนถึงการปรับปรุงประสิทธิภาพด้วย Jetpack Compose และคำแนะนำใหม่ในการยกระดับประสิทธิภาพของแอป เราได้รวบรวมเครื่องมือที่ใช้ความพยายามน้อยแต่ให้ผลลัพธ์สูงที่คุณต้องใช้ในการสร้างแอปที่มีประสิทธิภาพ
Ben Weiss, Sara Hamilton • ใช้เวลาอ่าน 3 นาที
-
กิจกรรมและโปรแกรม
กำหนดการของ Google I/O พร้อมให้คุณดูแล้ว
ใช้เวลาอ่าน 1 นาที
-
กิจกรรมและโปรแกรม
เมื่อเดือนกันยายนปีที่แล้ว เราได้แชร์วิสัยทัศน์เกี่ยวกับอนาคตของ Google Play Games โดยมีพื้นฐานมาจากความเชื่อหลักที่ว่าวิธีที่ดีที่สุดในการขับเคลื่อนความสำเร็จของเกมคือการมอบประสบการณ์ระดับโลกแก่ผู้เล่น
Maru Ahues Bouza • ใช้เวลาอ่าน 3 นาที
รับข่าวสาร
รับข้อมูลเชิงลึกด้านการพัฒนาแอป Android ล่าสุดส่งตรงถึงกล่องจดหมายของคุณทุกสัปดาห์