Android studio Gradle xây dựng tăng tốc


163

Kể từ bản cập nhật cuối cùng (Xây dựng từ tháng sáu 25), mọi thay đổi trong studio Android Gradle đều rất chậm. Và nó cũng có vẻ tự động thay đổi khi bạn chỉnh sửa tệp và biên dịch lại trên keyup.

Mỗi thay đổi mất vài phút trên i5 của tôi.

Bất cứ ý tưởng làm thế nào tôi có thể tăng tốc độ thay đổi Gradle của tôi?



1
Đối với những người dành thời gian để đọc câu trả lời và câu hỏi, đây không phải là một câu hỏi trùng lặp, như được đề xuất bởi @Dave Jarvis. Nhưng nó liên quan nhiều đến một phiên bản beta cũ của AS và có lẽ ít có liên quan đến các phiên bản hiện tại.
Einar Sundgren


Câu trả lời:



99

Chắc chắn sẽ tạo ra sự khác biệt: Làm thế nào để tăng tốc thời gian xây dựng Gradle

Chỉ cần tạo một tệp có tên gradle.propertiestrong thư mục sau:

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

Thêm dòng này vào tập tin:

org.gradle.daemon=true

2
Câu trả lời tốt. Để đọc thêm và chi tiết, kiểm tra câu trả lời SO này .
Sufian

12
Từ liên kết của bạn: "Lưu ý: Điều này chỉ ảnh hưởng đến các bản dựng bảng điều khiển. Android Studio luôn sử dụng trình nền Gradle (và tùy thuộc vào cài đặt của bạn một số tối ưu hóa khác)."
ChiefTwoP Pencil

2
Tôi có .gradle thư mục với gradle.properties tập tin. Nhưng vẫn mất nhiều thời gian. Mọi đề nghị
CoDe

4
Không tạo nên bất kỳ sự khác biệt nào
Vlado Pandžić

Và khởi động lại Android Studio sau khi thực hiện thay đổi.
Iman Marashi

78

Sau khi thay đổi cài đặt này, thời gian biên dịch của tôi giảm 10 phút xuống còn 10 giây.

Bước 1:

Cài đặt (ctrl + Alt + S) ->

Xây dựng, Thi công, Triển khai ->

Trình biên dịch ->

gõ " --offline" trong hộp Tùy chọn dòng lệnh.

Bước 2:

kiểm tra các mô-đun độc lập của Compile trong hộp kiểm song song.

& bấm Áp dụng -> OK

nhập mô tả hình ảnh ở đây

Bước 3: Trong tệp gradle.properIES của bạn -> Thêm các dòng sau

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

Cập nhật:

Nếu bạn đang sử dụng Android studio 2.0 trở lên, hãy thử Instant Run

Cài đặt → Xây dựng, Thực thi, Triển khai → Chạy ngay lập tức → Bật Chạy tức thì.

Thông tin thêm về Chạy ngay lập tức - https://developer.android.com/studio/run/index.html#instant-run


6
Tôi đã thử điều này và nó thực sự tăng tốc độ xây dựng của tôi đáng kể. Tôi biết rằng tùy chọn bây giờ sẽ khiến nó xây dựng ngoại tuyến, có bất kỳ nhược điểm nào khi xây dựng ngoại tuyến này không?
Simon

5
@Simon - Nhược điểm là bạn sẽ không thể kéo xuống các phiên bản mới nhất của các phụ thuộc được xác định trong tệp build.gradle của bạn. Nó chạy nhanh hơn vì nó sử dụng ảnh chụp nhanh được lưu trong bộ nhớ cache của các thư viện đã nhập. Đối với một số nhà phát triển, sự ổn định là tối quan trọng nhưng việc ngoại tuyến quá lâu có thể làm họ khó chịu khi cuối cùng họ lên mạng và những sự phụ thuộc đó đã phát triển do đó khiến dự án nói trên bị bỏ lại phía sau.
Đánh dấu Lapasa

1
Cảm ơn bạn, cái này hoạt động tốt với tôi và tốc độ xây dựng lớp của tôi đã tăng lên
Android_programmer_office

@Simon, khi bạn bắt đầu phát triển, bạn chỉ cần đặt các cài đặt ở trên, sau đó dừng lại, tắt chúng ngay khi màn đêm kết thúc, chạy ứng dụng lần cuối để mọi thứ vẫn đồng bộ. Hoặc sẽ có một vấn đề với điều này?
Sauron

1
nó giảm từ 33 giây xuống còn 5 giây :))
Miron

62

Tôi đã có thể giảm bản dựng gradle của mình từ 43 giây xuống còn 25 giây trên máy tính xách tay core2duo cũ của tôi (chạy linux mint) bằng cách thêm phần sau vào tệp gradle.properies trong studio android

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

nguồn về lý do cài đặt trình nền giúp xây dựng nhanh hơn: https://www.timroes.de/2013/09/12/speed-up-gradle/


3
Từ liên kết của bạn: "Lưu ý: Điều này chỉ ảnh hưởng đến các bản dựng bảng điều khiển. Android Studio luôn sử dụng trình nền Gradle (và tùy thuộc vào cài đặt của bạn một số tối ưu hóa khác)."
ChiefTwoP Pencil

2
Tùy chọn song song cải thiện bản dựng của tôi ngay cả trong AS. Cảm ơn bạn :)
jonathanrz

3
Tùy chọn song song không cải thiện bản dựng của tôi.
Vlado Pandžić

Cảm ơn. Giải pháp này khiến thời gian xây dựng của tôi từ 7 phút đến 23 giây ...
Vignesh Bala

thanx thực hiện bản dựng của tôi từ hai phút đến 3 giây
Pouya Samie

12

Thực hiện theo các bước sẽ làm cho nó nhanh hơn 10 lần và giảm thời gian xây dựng 90%

Đầu tiên tạo một tệp có tên gradle.properies trong thư mục sau:

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

Thêm dòng này vào tập tin:

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

Và kiểm tra tùy chọn này trong Android Studio

nhập mô tả hình ảnh ở đây

nhập mô tả hình ảnh ở đây


7

Có một phiên bản mới hơn của gradle (ver 2.4).

Bạn có thể thiết lập điều này cho (các) dự án của mình bằng cách mở hộp thoại 'Cấu trúc dự án' từ menu Tệp,

Project Structure -> Project -> Gradle version

và đặt thành '2.4'.
Bạn có thể đọc thêm về việc tăng hiệu suất tại liên kết này .


2
Cảm ơn, Gradle phiên bản 2.4 đã lưu gần ~ 14 giây.
Miao1007

5
Điều này làm cho thời gian xây dựng của tôi lâu hơn
Egemen Hamutçu


6

Đây là những gì tôi đã làm và tốc độ xây dựng lớp của tôi được cải thiện đáng kể! từ 1 phút đến 20 giây cho lần xây dựng đầu tiên và các bản dựng thành công trở thành từ 40 giây đến 5 giây.

Trong tệp gradle.properIES Thêm vào đây:

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

Trong Đối số dòng lệnh thông qua Chuyển đến tệp> Cài đặt khác> Cài đặt mặc định> Xây dựng, thực thi, triển khai> So sánh và thêm các đối số sau vào đối số dòng lệnh

Thêm điều này:

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

Xem hình ảnh tại đây


6

Cố gắng tránh sử dụng máy Mac / PC chỉ có 8 GB RAM khi thực hiện phát triển Android. Ngay khi bạn khởi chạy ngay cả 1 trình giả lập (Genymotion hay nói cách khác), thời gian xây dựng của bạn trở nên cực kỳ chậm trong Android Studio với các bản dựng xếp lớp. Điều này xảy ra ngay cả khi bạn thực hiện thay đổi một dòng đơn giản thành 1 tệp nguồn.

Đóng trình giả lập và sử dụng một thiết bị thực sự giúp ích rất nhiều, nhưng tất nhiên điều này rất hạn chế và kém linh hoạt. Giảm cài đặt sử dụng RAM của trình giả lập có thể giúp ích, nhưng cách tốt nhất là đảm bảo máy tính xách tay của bạn có ít nhất 12-16 GB RAM.

Cập nhật (tháng 6 năm 2017): Hiện tại có một số bài viết hay trên Medium.com giải thích cách tăng tốc độ xây dựng lớp Android Studio một cách chi tiết và thậm chí nó còn hoạt động trên các máy 8 GB:

Sự đồng thuận tóm tắt là:

Tạo một tệp gradle.properIES (toàn cầu tại ~/.gradle/gradle.propertieshoặc cục bộ để dự án) và thêm các dòng sau:

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. Bật công việc ngoại tuyến

  2. Cải thiện hiệu suất Gradle bằng cách thêm mã sau vào gradle.properties

org.gradle.daemon = true
org.gradle.pool = true

Hướng dẫn từng bước: http://www.virusandroid.com/2015/08/how-to-make-android-studio-fast.html


Hãy giữ những câu trả lời khác nhau và tập trung vào các chi tiết của câu hỏi OP. re: stackoverflow.com/a/34828203 ... stackoverflow.com/a/34827929 ... stackoverflow.com/a/34827858 ... stackoverflow.com/a/34827827 ... stackoverflow.com/a/34827788
Đã vẽ

4
dexOptions {
    incremental true
    javaMaxHeapSize "4g"
}

1
'Ture gia tăng' đã lỗi thời trong Android Studio 2018.
M'aiq the Coder

Điều này đã được đăng 2 năm trở lại.
AnupamChugh

tôi biết, tôi chỉ tuyên bố nó cho những người vẫn đang tìm kiếm các giải pháp này;)
M'aiq the Coder

3

Theo trang này của Nhóm Ứng dụng Wikimedia của Android , một cách tốt để tối ưu hóa các bản dựng Gradle là thêm các dòng này vào ~ / .gradle / gradle.properies của bạn

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

Đối với những người không có tệp này, có hai cách để làm điều đó:

  1. Thêm tệp cục bộ trong dự án của bạn bằng cách tạo một tệp có tên gradle.properies trong gốc dự án hoặc,

  2. Bạn có thể đặt chúng trên toàn cầu cho tất cả các dự án của mình bằng cách tạo cùng một tệp trong thư mục chính của bạn (% UserProfile% .gradle trên Windows , ~ / .gradle trên LinuxMac OS X )

    Đó là một thực hành tốt để đặt các thuộc tính trong thư mục nhà của bạn, chứ không phải ở cấp độ dự án.


2

Bạn cũng có thể sử dụng dòng lệnh để có hiệu suất tốt hơn. Bạn có thể sử dụng lệnh ./gradlew <task name>từ bên trong thư mục gốc của dự án của bạn từ linux hoặc sử dụng tệp gradlew.bat như gradlew<task name> Lần đầu tiên bạn chạy một trong các lệnh trên cho một Gradle đã cho phiên bản, nó sẽ tải xuống bản phân phối Gradle tương ứng và sử dụng nó để thực hiện quá trình xây dựng.

Khi nhập dự án Gradle qua trình bao bọc của nó, IDE của bạn có thể yêu cầu sử dụng bản phân phối 'all' của Gradle. Điều này là hoàn toàn tốt và giúp IDE cung cấp hoàn thành mã cho các tệp xây dựng. Điều này không chỉ có nghĩa là bạn không phải tự cài đặt Gradle mà còn chắc chắn sử dụng phiên bản Gradle mà bản dựng được thiết kế cho. Điều này làm cho các bản dựng lịch sử của bạn đáng tin cậy hơn. để biết thêm thông tin tham khảo Thực hiện bản dựng với Wrapper


2

Để xây dựng nhanh hơn, hãy tăng kích thước heap tối đa cho daemon Gradle lên hơn 2048 MB.

Để làm điều này thiết lập
org.gradle.jvmargs=-Xmx2048M
trong gradle.properies dự án .


1

Thêm một build.gradletập tin:

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

Tôi hy vọng nó sẽ giúp.


1

Tôi đang chạy i7 thế hệ thứ 5 với Windows 10 và Trạng thái rắn 1TB. Tôi đã nén thư mục Android Studio Project và tăng khoảng 80%. Hi vọng điêu nay co ich.

Sau đó, tôi đã kết hợp nó với các giải pháp trên tức là (org.gradle.pool = true, org.gradle.daemon = true). Hiệu suất tăng khá ấn tượng.

Ngoài ra:

Tất cả các câu trả lời trên là hoàn toàn chính xác nhưng tôi phải tuyên bố là một nhà phát triển Android có kinh nghiệm (trong 4 năm rưỡi) rằng: Không nhà phát triển Android / Gradle nào nên làm việc trên một máy có ổ đĩa spinner, bạn cần phải bỏ ra một Thể rắn. Tất cả chúng ta đều nhấn nút phát đó trong IDE 100 lần mỗi ngày. Khi tôi chuyển từ spinner sang SSD (bài Gradle), tốc độ và hiệu quả của tôi nhanh hơn gấp 2 - 4 lần và tôi hứa với bạn rằng tôi KHÔNG phóng đại ở đây.

Bây giờ tôi không nói về việc có một máy có SSD nhỏ và spinner lớn, tôi đang nói về 1 SSD lớn. Nếu bạn đã có một máy có SSD nhỏ và một spinner lớn, bạn có thể nâng cấp spinner nhỏ để nói SSD 500 GB và đặt SSD làm ổ đĩa hệ điều hành chính với các công cụ dành cho nhà phát triển của bạn được cài đặt trên nó.

Vì vậy, nếu bạn đang làm việc trong một môi trường có nhịp độ nhanh, vui lòng hiển thị bài đăng này cho sếp của bạn. Một ổ SSD 1TB kha khá sẽ đặt lại cho bạn khoảng 300 bảng Anh (bao gồm VAT) hoặc khoảng 160 bảng cho ổ SSD 500 GB. Tùy thuộc vào việc bạn là nhà phát triển Android cơ sở hay cấp cao, ổ đĩa sẽ tự trả (chi phí tiền lương) trong 1 - 2 tuần làm việc, hoặc khoảng 2 rưỡi đến 5 ngày làm việc nếu bạn đầu tư vào một khoản nhỏ hơn; nói 500GB SSD.

Rất nhiều nhà phát triển có thể lập luận rằng đây không phải là trường hợp, nhưng đó là trường hợp của Gradle, vì hệ thống Gradle rất khó khăn trong việc truy cập đĩa trực tiếp. Nếu bạn làm việc với .NET / C # / VB Net hoặc các công cụ phát triển khác, bạn sẽ không nhận thấy nhiều sự khác biệt nhưng sự khác biệt trong Gradle là LỚN. Nếu bạn hành động trên bài đăng này, tôi hứa với bạn, bạn sẽ không thất vọng. Cá nhân tôi đang sử dụng i7 thế hệ thứ năm với RAM 8GB, ban đầu đi kèm với Spinner 1TB và tôi đã nâng cấp nó lên Samsung SSD 840 EVO 1TB và tôi chưa bao giờ nhìn lại kể từ đó. Tôi đã mua của tôi từ: https://www.aria.co.uk .

Hi vọng điêu nay co ich. Ngoài ra tôi phải nói rằng đây KHÔNG phải là một bài viết có động cơ thương mại, tôi chỉ giới thiệu cho Aria vì tôi đã sử dụng chúng nhiều lần trước đây và chúng luôn đáng tin cậy.


1

Một vài lệnh chúng ta có thể thêm vào tệp gradle.properIES:

org.gradle.configureondemand = true - Lệnh này sẽ báo cho lớp chỉ xây dựng các dự án mà nó thực sự cần xây dựng. Sử dụng Daemon - org.gradle.daemon = true - Daemon giữ phiên bản của lớp và chạy trong nền ngay cả sau khi quá trình xây dựng của bạn kết thúc. Điều này sẽ loại bỏ thời gian cần thiết để khởi tạo lớp và giảm đáng kể thời gian xây dựng của bạn.

org.gradle.pool = true - Cho phép gradle xây dựng dự án của bạn song song. Nếu bạn có nhiều mô-đun trong dự án của mình, thì bằng cách kích hoạt điều này, lớp có thể chạy các hoạt động xây dựng cho các mô-đun độc lập song song.

Tăng kích thước Heap - org.gradle.jvmargs = -Xmx3072m -XX: MaxPermSize = 512m -XX: + HeapDumpOnOutOfMemoryError -Dfile.encoding = UTF-8 - Kể từ khi android studio 2.0 sử dụng để giảm thời gian xây dựng dự án. Nói chung, trong khi xây dựng các ứng dụng, nhiều quy trình dx chạy trên các phiên bản VM khác nhau. Nhưng bắt đầu từ Android Studio 2.0, tất cả các quy trình dx này chạy trong một VM và VM đó cũng được chia sẻ với lớp. Điều này làm giảm đáng kể thời gian xây dựng vì tất cả quá trình dex chạy trên cùng các phiên bản VM. Nhưng điều này đòi hỏi bộ nhớ lớn hơn để chứa tất cả các quá trình dex và phân lớp. Điều đó có nghĩa là bạn cần tăng kích thước heap theo yêu cầu của lớp daemon. Theo mặc định, kích thước heap cho daemon là khoảng 1GB.

Đảm bảo rằng phụ thuộc động không được sử dụng. tức là không sử dụng triển khai 'com.android.support:appcompat-v7:27.0.+'. Lệnh này có nghĩa là gradle sẽ lên mạng và kiểm tra phiên bản mới nhất mỗi khi nó xây dựng ứng dụng. Thay vào đó, hãy sử dụng các phiên bản cố định, ví dụ 'com.android.support:appcompat-v7:27.0.2'


1

Thêm phần này vào gradle.propertiestập tin của bạn

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

1

Mở gradle.properies từ thư mục Android và các dòng được tô sáng và cung cấp các giá trị bộ nhớ theo cấu hình máy của bạn. Tôi có ram 8gb trên máy của mình vì vậy tôi đã cho tối đa 4096mb và 1024mb tương ứng.

# 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

Thời gian xây dựng của tôi đã giảm xuống một nửa sau này. Chúc bạn xây dựng vui vẻ !!


0

Nó thường xảy ra khi bạn kích hoạt multidex trong dự án của bạn. Điều này có khả năng làm chậm quá trình phát triển của bạn !! Theo tài liệu :

Cấu hình multidex yêu cầu tăng đáng kể thời gian xử lý bản dựng vì hệ thống bản dựng phải đưa ra các quyết định phức tạp về các lớp phải được đưa vào tệp DEX chính và các lớp nào có thể được bao gồm trong các tệp DEX thứ cấp. Điều này có nghĩa là các bản dựng gia tăng sử dụng multidex thường mất nhiều thời gian hơn và có khả năng làm chậm quá trình phát triển của bạn.

nhưng bạn có thể tối ưu hóa điều này:

Để giảm thiểu thời gian xây dựng gia tăng lâu hơn, bạn nên sử dụng tiền xử lý trước để sử dụng lại đầu ra multidex giữa các bản dựng.

Nếu bạn đang sử dụng Android Studio 2.3 trở lên, IDE sẽ tự động sử dụng tính năng này khi triển khai ứng dụng của bạn lên thiết bị chạy Android 5.0 (API cấp 21) trở lên.

Vì vậy, bạn cần đặt minSdkVersion thành 21 hoặc cao hơn !

Nhưng nếu bạn sản xuất phiên bản cần hỗ trợ minSdkVersion thấp hơn 21, ví dụ 19

bạn có thể sử dụng ProductFlavors để đặt minSdkVersion 21 cho phiên bản dev của bạn :

    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

Tôi thích xây dựng từ dòng lệnh cho thời gian xây dựng tốt hơn. Nếu cơ sở mã ứng dụng của bạn lớn và bạn có nhiều mô-đun thì bạn có thể thử phương pháp AAR cục bộ như được mô tả ở đây, nó sẽ giúp bạn tăng mạnh về hiệu suất và thời gian xây dựng của Android Studio. Nó tương thích với các dòng lệnh xây dựng là tốt

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

Dự án demo với hướng dẫn tích hợp có thể được tìm thấy ở đây: https://github.com/akhgupta/AndroidLocalMavenRepoAARDemo

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.