Android studio Gradle สร้างความเร็ว


163

ตั้งแต่การอัปเดตครั้งล่าสุด (Build from june 25) การเปลี่ยนแปลงใด ๆ ใน Android studio Gradle นั้นช้ามาก และมันก็ดูเหมือนว่าจะทำการเปลี่ยนแปลงอัตโนมัติเมื่อคุณแก้ไขไฟล์และคอมไพล์ใหม่บนคีย์

การเปลี่ยนแปลงแต่ละครั้งใช้เวลาหลายนาทีใน i5 ของฉัน

ความคิดใดที่ฉันสามารถเร่งความเร็วการเปลี่ยนแปลง Gradle ของฉันได้อย่างไร



1
สำหรับผู้ที่ใช้เวลาอ่านคำตอบและคำถามนี่ไม่ใช่คำถามซ้ำตามที่ @Dave Jarvis แนะนำ แต่มันมีความเกี่ยวข้องอย่างมากกับรุ่นเบต้าเก่าของ AS และอาจไม่มีผลต่อรุ่นปัจจุบันเล็กน้อย
Einar Sundgren


คำตอบ:


41

ผู้พัฒนากำลังทำงานอยู่ เช่นเดียวกับที่ฉันโพสต์ในคำตอบนี้ทางออกที่เร็วที่สุดในตอนนี้คือการใช้ gradle จากบรรทัดคำสั่งและคุณควรเปลี่ยนเป็น lib lib แบบไบนารีสำหรับโมดูลทั้งหมดที่คุณไม่ได้พัฒนา ใน g + มีการพูดคุยกับนักพัฒนาเกี่ยวกับเรื่องนี้


ฉันควรเข้าร่วมกลุ่มสนทนาเครื่องมือก่อนหน้านี้อย่างชัดเจน
Einar Sundgren

99

สร้างความแตกต่างอย่างแน่นอน: ทำอย่างไร ... เร่งเวลาสร้าง Gradle

เพียงสร้างไฟล์ชื่อgradle.propertiesในไดเรกทอรีต่อไปนี้:

/home/<username>/.gradle/ (Linux)
/Users/<username>/.gradle/ (Mac)
C:\Users\<username>\.gradle (Windows)

เพิ่มบรรทัดนี้ในไฟล์:

org.gradle.daemon=true

2
คำตอบที่ดี. สำหรับการอ่านเพิ่มเติมและรายละเอียดการตรวจสอบนี้คำตอบ SO
Sufian

12
จากลิงก์ของคุณ: "หมายเหตุ: สิ่งนี้จะมีผลเฉพาะกับการสร้างคอนโซล Android Studio ใช้ Gradle daemon เสมอ (และขึ้นอยู่กับการตั้งค่าของคุณการปรับแต่งอื่น ๆ ให้เหมาะสม)"
ChiefTwoPencils

2
ฉันมี . gradleไดเรกทอรีพร้อมไฟล์gradle.properties แต่ยังใช้เวลามาก ข้อเสนอแนะใด ๆ
CoDe

4
ไม่ได้สร้างความแตกต่างใด ๆ
Vlado Pandžić

และรีสตาร์ท Android Studio หลังจากทำการเปลี่ยนแปลง
Iman Marashi

78

หลังจากเปลี่ยนการตั้งค่านี้เวลาในการคอมไพล์ของฉันลดลง 10 นาทีเป็น 10 วินาที

ขั้นตอนที่ 1:

การตั้งค่า (ctrl + Alt + S) ->

Build, Execution, Deployment ->

คอมไพเลอร์ ->

พิมพ์ " --offline" ในกล่องตัวเลือกบรรทัดคำสั่ง

ขั้นตอนที่ 2:

ทำเครื่องหมายที่ช่อง“ รวบรวมโมดูลอิสระในแบบคู่ขนาน”

& คลิกใช้ -> ตกลง

ป้อนคำอธิบายรูปภาพที่นี่

ขั้นตอนที่ 3: ในไฟล์ gradle.properties ของคุณ -> เพิ่มบรรทัดต่อไปนี้

org.gradle.jvmargs=-Xmx2048M -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
org.gradle.parallel=true
org.gradle.configureondemand=true
org.gradle.daemon=true

ปรับปรุง:

หากคุณใช้ Android studio 2.0 ขึ้นไปให้ลองใช้การเรียกใช้ทันที

การตั้งค่า→สร้างการดำเนินการปรับใช้→เรียกใช้ทันที→เปิดใช้งานเรียกใช้ทันที

ข้อมูลเพิ่มเติมเกี่ยวกับการเรียกใช้ทันที - https://developer.android.com/studio/run/index.html#instant-run


6
ฉันลองสิ่งนี้และมันก็เพิ่มความเร็วในการสร้างของฉันอย่างมาก ฉันรู้ว่าตัวเลือกนี้จะทำให้การสร้างออฟไลน์มีข้อเสียในการสร้างออฟไลน์หรือไม่
Simon

5
@Simon - ข้อเสียคือคุณจะไม่สามารถดึงการอ้างอิงล่าสุดที่ระบุในไฟล์ build.gradle ของคุณ มันทำงานได้เร็วขึ้นเพราะใช้สแนปชอตแคชของไลบรารีที่นำเข้าเหล่านั้น สำหรับนักพัฒนาบางคนความมั่นคงเป็นสิ่งสำคัญยิ่ง แต่การออฟไลน์นานเกินไปอาจทำให้พวกเขาล้มเหลวเมื่อพวกเขาเข้าสู่โลกออนไลน์ในที่สุดและการพึ่งพาเหล่านั้นก็มีวิวัฒนาการ
Mark Lapasa

1
ขอบคุณพี่คนนี้ทำงานได้ดีสำหรับฉันและความเร็วการสร้าง gradle ของฉันเพิ่มขึ้น
Android_programmer_office

@Simon เมื่อคุณเริ่มพัฒนาคุณสามารถตั้งค่าการตั้งค่าด้านบนจากนั้นเมื่อหยุดให้ปิดพวกเขาเช่นเดียวกับในตอนกลางคืนและใช้แอพเป็นครั้งสุดท้ายเพื่อให้ทุกอย่างยังคงซิงค์กันอยู่ หรือจะมีปัญหากับสิ่งนี้?
เซารอน

1
มันลดลงจาก 33 วินาทีเป็น 5 วินาที :))
Miron

62

ฉันสามารถลดการสร้าง gradle ของฉันจาก 43 วินาทีลงเหลือ 25 วินาทีบนแล็ปท็อป core2duo เก่าของฉัน (ใช้ linux mint) โดยเพิ่มสิ่งต่อไปนี้ลงในไฟล์ gradle.properties ใน android studio

org.gradle.parallel=true
org.gradle.daemon=true

แหล่งที่มาว่าทำไมการตั้งค่า daemon ทำให้การสร้างเร็วขึ้น: https://www.timroes.de/2013/09/12/speed-up-gradle/


3
จากลิงก์ของคุณ: "หมายเหตุ: สิ่งนี้จะมีผลเฉพาะกับการสร้างคอนโซล Android Studio ใช้ Gradle daemon เสมอ (และขึ้นอยู่กับการตั้งค่าของคุณการปรับแต่งอื่น ๆ ให้เหมาะสม)"
ChiefTwoPencils

2
ตัวเลือกแบบขนานปรับปรุงการสร้างของฉันแม้ใน AS ขอบคุณ :)
jonathanrz

3
ตัวเลือกแบบขนานไม่ได้ปรับปรุงโครงสร้างของฉัน
Vlado Pandžić

ขอบคุณ วิธีแก้ปัญหานี้ทำให้เวลาในการสร้างของฉันจาก 7 นาทีถึง 23 วินาที ...
Vignesh Bala

ขอบคุณที่ทำให้งานสร้างของฉันจากสองนาทีถึง 3 วินาที
Pouya Samie

12

การทำตามขั้นตอนจะทำให้เร็วขึ้น 10 เท่าและลดระยะเวลาการสร้าง 90%

ขั้นแรกสร้างไฟล์ชื่อ gradle.properties ในไดเรกทอรีต่อไปนี้:

/home/<username>/.gradle/ (Linux)
/Users/<username>/.gradle/ (Mac)
C:\Users\<username>\.gradle (Windows)

เพิ่มบรรทัดนี้ในไฟล์:

org.gradle.daemon=true
org.gradle.parallel=true

และตรวจสอบตัวเลือกนี้ใน Android Studio

ป้อนคำอธิบายรูปภาพที่นี่

ป้อนคำอธิบายรูปภาพที่นี่


7

มี gradle รุ่นใหม่กว่า (เวอร์ชั่น 2.4)

คุณสามารถตั้งค่านี้สำหรับโครงการของคุณโดยเปิดกล่องโต้ตอบ 'โครงสร้างโครงการ' จากเมนูไฟล์

Project Structure -> Project -> Gradle version

และตั้งค่าเป็น '2.4'
คุณสามารถอ่านเพิ่มเติมเกี่ยวกับการเพิ่มประสิทธิภาพได้ที่ลิงค์นี้


2
ขอบคุณ Gradle เวอร์ชั่น 2.4 ได้รับการบันทึกเกือบ ~ 14 วินาที
Miao1007

5
นี่ทำให้เวลาในการสร้างของฉันยาวนานขึ้น
Egemen Hamutçu


6

นี่คือสิ่งที่ฉันทำและความเร็วการสร้างระดับของฉันดีขึ้นมาก จาก 1 นาทีถึง 20 วินาทีสำหรับการสร้างครั้งแรกและการสร้างที่ประสบความสำเร็จกลายเป็นจาก 40 วินาทีถึง 5 วินาที

ในไฟล์gradle.propertiesเพิ่มสิ่งนี้:

org.gradle.jvmargs=-Xmx8192M -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8

ในอาร์กิวเมนต์บรรทัดคำสั่งผ่านไปที่ไฟล์> การตั้งค่าอื่น ๆ > การตั้งค่าเริ่มต้น> Build, Execution, Deploy> Complier และเพิ่มอาร์กิวเมนต์ต่อไปนี้ลงในอาร์กิวเมนต์บรรทัดคำสั่ง

เพิ่มสิ่งนี้:

--debug --stacktrace -a, --no-rebuild -q, --quiet --offline

ดูภาพได้ที่นี่


6

พยายามหลีกเลี่ยงการใช้ Mac / PC ที่มี RAM เพียง 8 GB เมื่อทำการพัฒนา Android ทันทีที่คุณเปิดตัวอีมูเลเตอร์ 1 ตัว (Genymotion หรืออื่น ๆ ) เวลาในการสร้างของคุณจะช้ามากใน Android Studio ที่มีการสร้างแบบไล่ระดับ สิ่งนี้จะเกิดขึ้นแม้ว่าคุณจะทำการเปลี่ยนแปลงแบบบรรทัดเดียวเป็นไฟล์ต้นฉบับ 1 ไฟล์

การปิดตัวจำลองและการใช้อุปกรณ์จริงช่วยได้มาก แต่แน่นอนว่ามันมีข้อ จำกัด และยืดหยุ่นน้อยกว่า การลดการตั้งค่าการใช้ RAM ของตัวจำลองสามารถช่วยได้ แต่วิธีที่ดีที่สุดคือให้แน่ใจว่าแล็ปท็อปของคุณมี RAM อย่างน้อย 12-16 GB

อัปเดต (มิถุนายน 2560): ขณะนี้มีบทความ Medium.com ที่ดีหลายบทความที่อธิบายวิธีเพิ่มความเร็วในการสร้างรายละเอียดของ Android Studio และยังสามารถใช้งานได้กับเครื่อง 8 GB:

มติสรุปคือ:

สร้างไฟล์gradle.properties (ทั้งแบบโกลบอลที่~/.gradle/gradle.propertiesหรือโลคัลกับโปรเจ็กต์) และเพิ่มบรรทัดต่อไปนี้:

org.gradle.daemon=true
org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
org.gradle.parallel=true
org.gradle.configureondemand=true

4
  1. เปิดใช้งานออฟไลน์

  2. ปรับปรุงประสิทธิภาพการไล่ระดับสีโดยการเพิ่มรหัสต่อไปนี้ใน gradle.properties

org.gradle.daemon = true
org.gradle.parallel = true

คู่มือทีละขั้นตอน: http://www.viralandroid.com/2015/08/how-to-make-android-studio-fast.html


ให้คำตอบเหล่านี้มีความหลากหลายและมุ่งเน้นไปที่รายละเอียดของคำถาม OP Re: stackoverflow.com/a/34828203 ... stackoverflow.com/a/34827929 ... stackoverflow.com/a/34827858 ... stackoverflow.com/a/34827827 ... stackoverflow.com/a/34827788
ดึง

4
dexOptions {
    incremental true
    javaMaxHeapSize "4g"
}

1
'ture ที่เพิ่มขึ้น' ล้าสมัยแล้วใน Android Studio 2018
M'aiq the Coder

สิ่งนี้ถูกโพสต์เมื่อ 2 ปีก่อน
AnupamChugh

ฉันรู้ว่าฉันเพิ่งระบุไว้สำหรับผู้ที่ยังคงมองหาวิธีแก้ปัญหาเหล่านี้;)
M'aiq the Coder

3

ตามที่หน้านี้ของทีม Android ของแอพ Wikimediaวิธีที่ดีในการเพิ่มประสิทธิภาพ Gradle builds คือการเพิ่มบรรทัดนี้ใน~ / .gradle / gradle.properties

org.gradle.daemon=true                                                          
org.gradle.parallel=true
org.gradle.configureondemand=true
org.gradle.jvmargs=-Xmx2048M

สำหรับผู้ที่ไม่มีไฟล์มีสองวิธี:

  1. เพิ่มไฟล์ภายในโครงการของคุณโดยสร้างไฟล์ชื่อ gradle.properties ในรูทโปรเจ็กต์หรือ

  2. คุณสามารถตั้งค่าได้ทั่วโลกสำหรับโครงการทั้งหมดของคุณโดยสร้างไฟล์เดียวกันในโฮมไดเร็กตอรี่ของคุณ (% UserProfile% .gradle บนWindows , ~ / .gradle บนLinuxและMac OS X )

    เป็นการดีที่จะกำหนดคุณสมบัติในโฮมไดเร็กตอรี่ของคุณ, แทนที่จะเป็นระดับโปรเจ็กต์


2

คุณยังสามารถใช้บรรทัดคำสั่งเพื่อประสิทธิภาพที่ดีขึ้นคุณสามารถใช้คำสั่ง. /gradlew <task name>จากภายในโฟลเดอร์รูทของโครงการของคุณจาก linux หรือใช้ไฟล์ gradlew.bat เช่น gradlew <task name>เมื่อคุณรันคำสั่งใดคำสั่งหนึ่งข้างต้นสำหรับ Gradle ที่กำหนด เวอร์ชั่นมันจะดาวน์โหลดการกระจาย Gradle ที่สอดคล้องกันและใช้มันเพื่อดำเนินการสร้าง

เมื่อนำเข้าโครงการ Gradle ผ่าน wrapper ของมัน IDE ของคุณอาจขอให้ใช้การกระจาย Gradle 'all' นี่เป็นสิ่งที่สมบูรณ์แบบและช่วย IDE ในการจัดทำโค้ดให้สมบูรณ์สำหรับไฟล์บิลด์ สิ่งนี้ไม่เพียงหมายความว่าคุณไม่ต้องติดตั้ง Gradle ด้วยตนเอง แต่คุณต้องแน่ใจว่าใช้ Gradle รุ่นที่ build ได้รับการออกแบบมา สิ่งนี้ทำให้งานสร้างในอดีตของคุณน่าเชื่อถือยิ่งขึ้น สำหรับข้อมูลเพิ่มเติมดูที่การสร้างบิลด์ด้วย Wrapper


2

สำหรับการสร้างที่เร็วขึ้นเพิ่มขนาดฮีพสูงสุดสำหรับ Gradle daemonเป็นมากกว่า 2048 MB

ที่จะทำชุดนี้
org.gradle.jvmargs=-Xmx2048M
ในโครงการgradle.properties


1

เพิ่มbuild.gradleไฟล์:

android {
...
dexOptions {
        javaMaxHeapSize "4g" //specify the heap size for the dex process
    }
...
}

ฉันหวังว่ามันจะช่วย


1

ฉันใช้ i7 รุ่นที่ 5 กับ Windows 10 และ Solid State 1TB ฉันบีบอัดโฟลเดอร์โครงการ Android Studio และเพิ่มขึ้นประมาณ 80% หวังว่านี่จะช่วยได้

จากนั้นฉันก็รวมเข้ากับโซลูชันด้านบนเช่น (org.gradle.parallel = true, org.gradle.daemon = true) การเพิ่มประสิทธิภาพนั้นค่อนข้างน่าประทับใจ

นอกจากนี้:

คำตอบทั้งหมดข้างต้นถูกต้องทั้งหมด แต่ฉันต้องระบุว่าเป็นนักพัฒนา Android ที่มีประสบการณ์ (4 ปีครึ่ง) ว่า: ไม่มีนักพัฒนา Android / Gradle ควรทำงานกับเครื่องที่มีไดรฟ์สปินเนอร์คุณต้องแยกออก โซลิดสเตต เราทุกคนกดปุ่มเล่นใน IDE 100 ครั้งต่อวัน เมื่อฉันไปจากสปินเนอร์เป็น SSD (โพสต์เกรท) ความเร็วและประสิทธิภาพของฉันนั้นเร็วขึ้นอย่างมาก 2-4 เท่าและฉันสัญญากับคุณว่าฉันไม่ได้พูดเกินจริง

ตอนนี้ฉันไม่ได้พูดถึงการมีเครื่องที่มี SSD ขนาดเล็กและตัวหมุนขนาดใหญ่ฉันกำลังพูดถึง SSD ขนาดใหญ่ 1 ตัว หากคุณมีเครื่องที่มี SSD ขนาดเล็กและสปินเนอร์ขนาดใหญ่อยู่แล้วคุณสามารถอัปเกรดสปินเนอร์ขนาดเล็กเพื่อบอกว่าเป็น 500GB SSD และตั้งค่า SSD เป็นไดรฟ์ระบบปฏิบัติการหลักของคุณโดยติดตั้งเครื่องมือสำหรับนักพัฒนา

ดังนั้นหากคุณกำลังทำงานในสภาพแวดล้อมที่รวดเร็วโปรดแสดงโพสต์นี้ให้เจ้านายของคุณ 1TB SSD ที่ดีจะตั้งค่าให้คุณประมาณ 300 ปอนด์ (รวม VAT) หรือประมาณ 160 ปอนด์สำหรับ 500GB SSD ขึ้นอยู่กับว่าคุณเป็นนักพัฒนาซอฟต์แวร์รุ่นเยาว์หรือรุ่นอาวุโสไดรฟ์จะจ่ายเอง (ในค่าใช้จ่ายค่าจ้าง) ใน 1 - 2 สัปดาห์ทำการหรือประมาณ 2 และครึ่งถึง 5 วันทำการถ้าคุณลงทุนในขนาดเล็ก พูด 500GB SSD

นักพัฒนาหลายคนอาจโต้แย้งว่านี่ไม่ใช่กรณี แต่เป็นกรณีของ Gradle เนื่องจากระบบ Gradle นั้นยากในการเข้าถึงดิสก์โดยตรง หากคุณทำงานกับ. NET / C # / VB Net หรือเครื่องมือพัฒนาอื่น ๆ คุณจะไม่สังเกตเห็นความแตกต่างมากนัก แต่ความแตกต่างใน Gradle นั้นใหญ่มาก หากคุณทำตามโพสต์นี้ฉันสัญญากับคุณคุณจะไม่ผิดหวัง โดยส่วนตัวฉันใช้รุ่นที่ห้า i7 กับ RAM 8GB ซึ่งเดิมมาพร้อมกับสปินเนอร์ 1TB และฉันอัพเกรดเป็น Samsung SSD 840 EVO 1TB และฉันไม่เคยมองย้อนกลับไปเลยตั้งแต่นั้นมา ฉันซื้อเหมืองจาก: https://www.aria.co.uk

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


1

คำสั่งเล็กน้อยที่เราสามารถเพิ่มลงในไฟล์ gradle.properties:

org.gradle.configureondemand = true - คำสั่งนี้จะบอกให้ gradle สร้างเฉพาะโครงการที่จำเป็นต้องสร้างจริงๆ ใช้ Daemon - org.gradle.daemon = true - Daemon เก็บอินสแตนซ์ของการไล่ระดับสีและเรียกใช้ในพื้นหลังแม้หลังจากสร้างเสร็จสิ้น สิ่งนี้จะลบเวลาที่ต้องใช้ในการเริ่มต้นการไล่ระดับสีและลดระยะเวลาการสร้างของคุณลงอย่างมาก

org.gradle.parallel = true - อนุญาตให้ gradle สร้างโครงการของคุณแบบขนาน หากคุณมีโมดูลหลายโมดูลในโครงการของคุณดังนั้นเมื่อเปิดใช้งานสิ่งนี้ gradle สามารถเรียกใช้การดำเนินการสร้างสำหรับโมดูลที่เป็นอิสระได้

เพิ่มขนาดฮีป - org.gradle.jvmargs = -Xmx3072m -XX: MaxPermSize = 512m -XX: + HeapDumpOnOutOfMemoryError -Dfile.encoding = UTF-8 - เนื่องจาก android studio 2.0, gradle ใช้ dex ในกระบวนการเพื่อลดเวลาการสร้าง โครงการ. โดยทั่วไปในขณะที่สร้างแอปพลิเคชันกระบวนการ dx จำนวนมากจะทำงานบนอินสแตนซ์ VM ที่แตกต่างกัน แต่เริ่มจาก Android Studio 2.0 กระบวนการ dx ทั้งหมดนี้ทำงานใน VM เดียวและ VM นั้นก็แชร์กับ gradle สิ่งนี้จะลดเวลาการสร้างลงอย่างมากเนื่องจากกระบวนการ dex ทั้งหมดทำงานบนอินสแตนซ์ VM เดียวกัน แต่ต้องใช้หน่วยความจำขนาดใหญ่เพื่อรองรับกระบวนการ dex และ gradle ทั้งหมด นั่นหมายความว่าคุณต้องเพิ่มขนาดฮีพที่ต้องการโดย gradle daemon โดยค่าเริ่มต้นขนาดฮีพสำหรับ daemon จะอยู่ที่ประมาณ 1GB

ตรวจสอบให้แน่ใจว่าไม่ได้ใช้การพึ่งพาแบบไดนามิก เช่นไม่ได้ใช้งาน 'com.android.support:appcompat-v7:27.0.+' คำสั่งนี้หมายถึงการไล่ระดับสีจะออนไลน์และตรวจสอบเวอร์ชันล่าสุดทุกครั้งที่สร้างแอป ใช้เวอร์ชันถาวรแทน 'com.android.support:appcompat-v7:27.0.2'


1

เพิ่มลงในgradle.propertiesไฟล์ของคุณ

org.gradle.daemon=true                                                          
org.gradle.parallel=true
org.gradle.configureondemand=true
org.gradle.jvmargs=-Xmx2048M

1

เปิด gradle.properties จากโฟลเดอร์ android และบรรทัดที่ไฮไลต์ที่ไม่ใส่เครื่องหมายความคิดเห็นและระบุค่าหน่วยความจำตามการกำหนดค่าเครื่องของคุณ ฉันมี RAM 8GB บนเครื่องของฉันดังนั้นฉันจึงให้สูงสุด 4096mb และ 1024mb ตามลำดับ

# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.
# Default value: -Xmx10248m -XX:MaxPermSize=256m
//Uncomment below line for providing your system specific configuration
#org.gradle.jvmargs=-Xmx4096m -XX:MaxPermSize=1024m -XX:+HeapDumpOnOutOfMemoryError - Dfile.encoding=UTF-8

# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit
#http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
 //Uncomment below line to allow parallel process execution.
 #org.gradle.parallel=true

เวลาสร้างของฉันลดลงเหลือครึ่งหลัง อาคารมีความสุข !!


0

มันมักจะเกิดขึ้นเมื่อคุณเปิดใช้งาน multidex ในโครงการของคุณ สิ่งนี้อาจทำให้กระบวนการพัฒนาของคุณช้าลง !! เอกสาร อ้างอิง:

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

แต่คุณสามารถเพิ่มประสิทธิภาพนี้:

หากต้องการลดเวลาการ build ที่เพิ่มขึ้นอีกต่อไปคุณควรใช้การ pre-dexing เพื่อนำกลับมาใช้ใหม่ของ multidex ระหว่างบิลด์

หากคุณใช้ Android Studio 2.3 และสูงกว่า IDE จะใช้คุณสมบัตินี้โดยอัตโนมัติเมื่อปรับใช้แอปของคุณกับอุปกรณ์ที่ใช้ Android 5.0 (API ระดับ 21) หรือสูงกว่า

ดังนั้นคุณต้องตั้งค่าminSdkVersion เป็น 21 หรือสูงกว่า !

แต่ถ้าคุณผลิตเวอร์ชันจำเป็นต้องรองรับ minSdkVersion ต่ำกว่า 21 เช่น 19

คุณสามารถใช้productFlavors เพื่อตั้งค่า minSdkVersion 21 สำหรับคุณ devเวอร์ชั่น:

    android {
    defaultConfig {
        ...
        multiDexEnabled true
        // The default minimum API level you want to support.
        minSdkVersion 15
    }
    productFlavors {
        // Includes settings you want to keep only while developing your app.
        dev{
            //the IDE automatically uses  pre-dexing feature to mitigate longer incremental when deploying your app to a device running Android 5.0 !
            minSdkVersion 21
        }
        prod {

        }
    }
    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'),
                                                 'proguard-rules.pro'
        }
    }
}
dependencies {
    compile 'com.android.support:multidex:1.0.3'
}

0

ฉันชอบสร้างจากบรรทัดคำสั่งเพื่อสร้างเวลาที่ดีกว่า หากฐานรหัสแอปของคุณมีขนาดใหญ่และคุณมีหลายโมดูลคุณสามารถลองใช้วิธีการ Local AARตามที่อธิบายไว้ที่นี่มันจะช่วยเพิ่มประสิทธิภาพการทำงานของ Android Studio ให้กับคุณ มันเข้ากันได้กับสร้างบรรทัดคำสั่งเช่นกัน

https://blog.gojekengineering.com/how-we-improved-performance-and-build-times-in-android-studio-306028166b79

โครงการตัวอย่างพร้อมคำแนะนำการรวมสามารถพบได้ที่นี่: https://github.com/akhgupta/AndroidLocalMavenRepoAARDemo

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.