Xây dựng và chạy ứng dụng qua Gradle và Android Studio chậm hơn qua Eclipse


461

Tôi có nhiều dự án (~ 10 mô-đun) trong đó tòa nhà mất khoảng 20-30 giây mỗi lần. Khi tôi nhấn Run trong Android Studio, tôi phải đợi mỗi lần để xây dựng lại ứng dụng, điều này cực kỳ chậm.

Có thể tự động hóa quá trình xây dựng trong Android Studio? Hoặc bạn có lời khuyên nào về cách làm cho quá trình này nhanh hơn?

Trong Eclipse, nhờ xây dựng tự động, chạy cùng một dự án trên trình giả lập mất khoảng 3-5 giây.

Đây là tệp build.gradle của tôi (mô-đun ứng dụng):

buildscript {
    repositories {
        maven { url 'http://repo1.maven.org/maven2' }
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.4'
    }
}
apply plugin: 'android'

dependencies {
    compile fileTree(dir: 'libs', include: '*.jar')
    compile project(':libraries:SharedLibs')
    compile project(':libraries:actionbarsherlock')
    compile project(':libraries:FacebookSDK')
    compile project(':libraries:GooglePlayServices')
    compile project(':libraries:HorizontalGridView')
    compile project(':libraries:ImageViewTouch')
    compile project(':libraries:SlidingMenu')
}

android {
    compileSdkVersion 17
    buildToolsVersion "17.0.0"

    defaultConfig {
        minSdkVersion 8
        targetSdkVersion 16
    }
}

23
Xin lưu ý rằng cả hệ thống xây dựng dựa trên Gradle và Android Studio đều không được sản xuất tại thời điểm này.
CommonsWare

11
Thời gian ở đây rất có thể trong giai đoạn DEXing. Thật không may, bộ sưu tập của android dường như thực hiện sạch mọi lúc, khiến các tập tin dex'd trước đó bị xóa. Hy vọng, chúng ta sẽ sớm thấy bản sửa lỗi tăng dần.
Richard J. Ross III

3
Trong khi đó, có cách nào đơn giản để nói thay đổi các nhiệm vụ Gradle mặc định sao cho chúng không luôn luôn thực hiện sạch?
sigmabeta

10
@CommonsWare tốt, không có lý do gì để chúng tôi có phiên bản 1.02, nhưng đây vẫn là một vấn đề lớn. Với studio Android chạy máy tính xách tay lõi tứ 4GB của tôi sử dụng khoảng 3,75gb ram của nó chỉ giữ một phiên bản duy nhất của một dự án hello world. Đó cũng là kết quả rất chậm chạp. Đối với tôi điều đó cho thấy một lỗ hổng thiết kế nghiêm trọng và đang diễn ra. Tôi hy vọng mọi thứ sẽ được giải quyết sớm.
Andrew S

7
@AndrewS Tôi thấy thật đáng tiếc khi chúng ta cần thay đổi hệ điều hành của mình chỉ để có được lớp để chạy ở tốc độ hợp lý so với các công cụ trước đây.
Richard Le Mesurier

Câu trả lời:


441

Phần cứng

Tôi xin lỗi, nhưng việc nâng cấp trạm phát triển lên SSD và hàng tấn ram có thể có ảnh hưởng lớn hơn các điểm dưới đây cộng lại.

Phiên bản công cụ

Tăng hiệu suất xây dựng có ưu tiên lớn cho các nhóm phát triển, vì vậy hãy đảm bảo bạn đang sử dụng Plugin GradleAndroid Gradle mới nhất .

Tập tin cấu hình

Tạo một tệp có tên gradle.propertiestrong bất kỳ thư mục nào áp dụng:

  • /home/<username>/.gradle/ (Linux)
  • /Users/<username>/.gradle/ (Mac)
  • C:\Users\<username>\.gradle (Các cửa sổ)

Nối:

# IDE (e.g. Android Studio) users:
# Settings specified in this file will override any Gradle settings
# configured through the IDE.

# For more details on how to configure your build environment visit
# http://www.gradle.org/docs/current/userguide/build_environment.html

# The Gradle daemon aims to improve the startup and execution time of Gradle.
# When set to true the Gradle daemon is to run the build.
# TODO: disable daemon on CI, since builds should be clean and reliable on servers
org.gradle.daemon=true

# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.
# https://medium.com/google-developers/faster-android-studio-builds-with-dex-in-process-5988ed8aa37e#.krd1mm27v
org.gradle.jvmargs=-Xmx5120m -XX:MaxPermSize=512m -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
org.gradle.parallel=true

# Enables new incubating mode that makes Gradle selective when configuring projects. 
# Only relevant projects are configured which results in faster builds for large multi-projects.
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:configuration_on_demand
org.gradle.configureondemand=true

# Set to true or false to enable or disable the build cache. 
# If this parameter is not set, the build cache is disabled by default.
# http://tools.android.com/tech-docs/build-cache
android.enableBuildCache=true

Thuộc tính Gradle hoạt động cục bộ nếu bạn đặt chúng tại projectRoot\gradle.propertiesvà trên toàn cầu nếu bạn đặt chúng tại user_home\.gradle\gradle.properties. Thuộc tính được áp dụng nếu bạn chạy các tác vụ lớp từ bảng điều khiển hoặc trực tiếp từ ý tưởng:

Cài đặt IDE

Có thể điều chỉnh tích hợp Gradle-IntelliJ từ GUI cài đặt IDE. Bật "công việc ngoại tuyến" (kiểm tra câu trả lời từ yava bên dưới) sẽ vô hiệu hóa các yêu cầu mạng thực trên mỗi "tệp lớp đồng bộ hóa".

Cài đặt IDE

Đa dex bản địa

Một trong những bước chậm nhất của quá trình xây dựng apk là chuyển đổi mã byte java thành tệp dex duy nhất. Kích hoạt multidex riêng (minSdk 21 chỉ cho các bản dựng gỡ lỗi) sẽ giúp công cụ giảm một lượng công việc (kiểm tra câu trả lời từ Aksel Willgert bên dưới).

Phụ thuộc

Thích @aarphụ thuộc hơn các dự án thư viện.

Tìm kiếm gói aar trên mavenCentral , jCenter hoặc sử dụng jitpack.io để xây dựng bất kỳ thư viện nào từ github. Nếu bạn không chỉnh sửa các nguồn của thư viện phụ thuộc, bạn không nên xây dựng nó mỗi lần với các nguồn dự án của bạn.

Diệt virus

Xem xét để loại trừ các tệp dự án và bộ đệm khỏi quét chống vi-rút. Đây rõ ràng là một sự đánh đổi với an ninh (đừng thử điều này ở nhà!). Nhưng nếu bạn chuyển đổi giữa các nhánh rất nhiều, thì phần mềm chống vi-rút sẽ quét lại các tệp trước khi cho phép quá trình phân lớp sử dụng nó, làm chậm thời gian xây dựng (cụ thể là dự án đồng bộ hóa AndroidStudio với các tệp phân lớp và tác vụ lập chỉ mục). Đo thời gian xây dựng và xử lý CPU có và không kích hoạt chống vi-rút để xem nó có liên quan hay không.

Cấu hình một bản dựng

Gradle đã tích hợp hỗ trợ cho các dự án định hình . Các dự án khác nhau đang sử dụng kết hợp các plugin và tập lệnh tùy chỉnh khác nhau. Sử dụng --profilesẽ giúp tìm ra tắc nghẽn.


1
about @aar depedencies: sử dụng eg dependencies {compile 'com.android.support:support-v4:21.0.+'}là một giải pháp chậm? không chắc chắn để hiểu
younes0

1
Hình ảnh, bạn đã thêm thư viện như thế này: github.com/novak/numberpicker . Nó có giá trị, cung cấp giải pháp mã cho một vấn đề, nhưng tác giả không công bố nó ở bất cứ đâu như maven hoặc jCenter. Bây giờ, bạn sẽ mang thư viện đó làm nguồn vào dự án của mình và xây dựng nó mọi lúc, dự án chính sẽ xây dựng hoặc biên dịch nó một lần và chỉ cam kết @aar vào kho lưu trữ dự án của bạn. Vì vậy, nó thực sự là một sự lựa chọn phụ thuộc nguồn / nhị phân. Nếu bạn không chỉnh sửa nguồn, bạn nên mang phần phụ thuộc của mình dưới dạng nhị phân được biên dịch trước. Đối với các thư viện java đơn giản là .jar, đối với các thư viện Android đó là .aar
Sergii Pechenizkyi

1
Đó là cài đặt dự án> gradle. Xem ảnh chụp màn hình bên dưới: i.stack.imgur.com/wrwgo.png
Sergii Pechenizkyi

2
Tôi đã thiết lập tất cả các tối ưu hóa như được mô tả, tuy nhiên trong Android Studio, phải mất 3 đến 4 phút để khởi động ứng dụng của tôi, trong khi đó là khoảng 30 giây trong Eclipse. Tào lao Chỉ có 12 dự án, một ứng dụng duy nhất để chạy! Android dev đã trở nên quá cồng kềnh và bây giờ là hơn một năm sau.
3c71

1
Tôi đã áp dụng tất cả các tối ưu hóa và vẫn mất khoảng 20 giây để xây dựng apk HelloWorld, so với 2-3 giây trong Eclipse.
Pawel

148

Bạn có thể bỏ qua kiểm tra cập nhật lớp.

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

Đối với Windows chạy Android Studio 1.5: Truy cập File -> Settings -> Build, Execution, Deployment -> Build tools -> Gradle -> Check Offline work (as shown in image)

giảm từ ~ 30 + giây xuống ~ 3 giây


24
Đó là khá mát mẻ. Đó là rất nhiều nhanh hơn. Nhưng điều này phá vỡ những gì?
John Ballinger

2
Giải pháp tốt nhất. Tôi có thể biết tác dụng phụ của giải pháp này không
Kavin Varnan

26
@JohnBallinger Công việc ngoại tuyến - sử dụng hộp kiểm này để làm việc với Gradle trong chế độ ngoại tuyến. Trong trường hợp này, Gradle sẽ sử dụng các phụ thuộc từ bộ đệm. Gradle sẽ không cố gắng truy cập mạng để thực hiện độ phân giải phụ thuộc. Nếu các phụ thuộc được yêu cầu không có trong bộ đệm của phụ thuộc, việc thực thi bản dựng sẽ thất bại. (Nguồn: jetbrains.com/idea/help/gradle-2.html )
cprcrack 17/12/14

10
Có mặc định sử dụng các phụ thuộc được lưu trong bộ nhớ cache trước khi đi qua mạng không? Tôi không thể tưởng tượng kiểm tra này cho các phụ thuộc được cập nhật mỗi khi gradleđược chạy. Điều đó thật kỳ quái.
Ehtesh Choudhury

1
@EhteshChoudhury nó RẤT kỳ quái. Toàn bộ môi trường dev của Gradle / Android Studio rất slooooooow. Hầu hết mọi người nghĩ rằng nó chậm vì Java. Tôi làm Java dev phía máy chủ trên IDEA và mọi thứ chạy rất trơn tru.
stepanian

34

Tìm kiếm ở khắp mọi nơi cho điều này và cuối cùng tìm thấy một giải pháp phù hợp với chúng tôi. Kích hoạt các bản dựng song song (Trên OSX preferences -> compiler -> gradle -> "Compile independent modules in parallel":) và bật 'tạo dự án tự động' đưa nó xuống từ ~ 1 phút đến ~ 20 giây. Cảm ơn / u / Hóa trị.

http://www.reddit.com/r/androiddev/comments/1k3nb3/gradle_and_android_studio_way_slower_to_build/


56
20 giây vẫn còn rất chậm.
Julian Brodwall

6
Hãy ghi nhớ điều này rõ ràng chỉ có ích khi bạn có nhiều mô-đun / dự án độc lập. Tôi đã thử nghiệm nó trên một ứng dụng mô-đun duy nhất và nó không tạo ra sự khác biệt nào.
Sam

Tôi có một dự án khá lớn và phải mất 2 - 3 phút trên MacBook Pro 2012 Core i7, RAM 8 GB. Là nó ổn?
Bài giảng

25

Gần đây tôi đã mua một ổ SSD mới và chuyển từ Windows sang Linux. Thời gian xây dựng của tôi bây giờ nhanh hơn và không còn khó chịu nữa.

Mặc dù nó không trả lời trực tiếp câu hỏi của bạn về lý do tại sao nó chậm hơn nhật thực, nhưng nó cho thấy quá trình này bị giới hạn bởi đĩa và việc nâng cấp lên SSD có thể là một giải pháp (hơi tốn kém). Tôi đoán sẽ có người giải quyết vấn đề và kết thúc ở đây, những người có thể đánh giá cao kinh nghiệm của tôi.


11
Các nhà phát triển trong nhóm của tôi có SSD nhanh trong các máy nhanh có nhiều bộ nhớ. Đối với một ứng dụng không tầm thường, việc triển khai lại sau khi thay đổi mã nhỏ vẫn mất khoảng ~ 45 giây, so với việc triển khai lại gần như ngay lập tức trong Eclipse. Ngay cả khi chạy một JUnit đơn giản, không phải Android cũng rất chậm. "Nâng cấp" lên Android Studio và Gradle đã bị hạ cấp lớn cho đến nay. : - /
spaaarky21

@Lionleaf chuyển đổi từ windows sang linux nhanh hơn bao nhiêu?
younes0

@ younes0 tôi không biết. Tôi đã chuyển sang Linux cùng lúc tôi chuyển sang SSD. Tôi không nói rằng nó có bất kỳ tác động tích cực nào, đó chỉ là hai biến tôi đã thay đổi để tăng tốc.
Andreas Løve Selvik

4
Trong trường hợp của tôi, việc chuyển đổi từ Windows sang Linux đã tạo ra các bản dựng Android nhanh hơn 40% ... vì vậy nó hoàn toàn xứng đáng
kosiara - Bartosz Kosarzycki

Tôi thứ hai những gì @Bartosz Kosarzycki nói. Cuối cùng tôi đã chạy Ubuntu vm với hộp ảo trên máy dev của mình. ~ 54 giây xây dựng trên windows, ~ 7 giây cho cùng một bản dựng bên trong máy ảo trên cùng một phần cứng. Tăng tốc điên cuồng bằng cách chuyển sang Linux.
Eric Cornelson

20

Tăng tốc độ xây dựng lớp trong Android Studio 3.2.1

Bạn có bao giờ cảm thấy như bạn đang chờ các bản dựng hoàn thành trong Android Studio trong vài phút không? Tôi cũng vậy. Và nó khá là khó chịu. May mắn thay, có một vài cách mà bạn có thể sử dụng để cải thiện điều này. Android sử dụng Gradle để xây dựng. Phiên bản mới nhất là 4.6 có hiệu suất tăng rất lớn so với các phiên bản trước (xem Ghi chú phát hành để biết chi tiết).

Bước 1: Cập nhật phiên bản Gradle Một cách dễ dàng hơn để thực hiện việc này là vào: Mở Cài đặt mô-đun (dự án của bạn)> Cấu trúc dự án

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

CẬP NHẬT

Thay đổi thành phiên bản Gradle: 4.6 và Thay đổi thành Plugin Android Phiên bản: 3.2.1

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

Tải xuống bản phân phối Gradle Release từ https://service.gradle.org/distribution/gradle-4.6-all.zip Và sao chép nó vào thư mục Gradle:

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

Bước cuối cùng là thêm phân phối của bạn trong Cài đặt> Gradle

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

Đừng quên bấm Áp dụng để lưu thay đổi.

Bước 2: Kích hoạt chế độ Ngoại tuyến, trình nền Gradle và xây dựng song song cho dự án Chế độ ngoại tuyến báo cho Gradle bỏ qua các kiểm tra cập nhật. Gradle yêu cầu sự phụ thuộc mọi lúc và có tùy chọn này làm cho nó chỉ sử dụng những gì đã có trên máy cho các phụ thuộc. Chuyển đến Gradle từ thiết lập studio android và nhấp vào hộp công việc Ngoại tuyến.

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

  1. Chuyển đến Trình biên dịch từ thiết lập studio android và thêm vào - ngoại tuyến trong hộp dòng lệnh và nhấp vào Biên dịch song song các mô-đun độc lập.

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

Bước tiếp theo là kích hoạt trình nền Gradle và xây dựng song song cho dự án của bạn. Các bản dựng song song sẽ khiến các dự án của bạn có nhiều mô-đun (bản dựng nhiều dự án trong Gradle) được xây dựng song song, điều này sẽ làm cho các dự án lớn hoặc mô-đun xây dựng nhanh hơn.

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

Các cài đặt này có thể được kích hoạt bằng cách sửa đổi một tệp có tên gradle.properies trong thư mục tập lệnh Gradle (nghĩa là ~ / .gradle / gradle.properies). Một số tùy chọn này (ví dụ: các mô-đun tuân thủ song song) có sẵn từ Android Studio và cũng được bật ở đó bởi mặc định, nhưng đặt chúng vào tệp gradle.properIES sẽ kích hoạt chúng khi xây dựng từ thiết bị đầu cuối và cũng đảm bảo rằng các đồng nghiệp của bạn sẽ sử dụng cùng các cài đặt. Nhưng nếu bạn đang làm việc trong một nhóm, đôi khi bạn không thể cam kết những thứ này.

# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit org.gradle.parallel=true
# When set to true the Gradle daemon is used to run the build. For local developer builds this is our favorite property.
# The developer environment is optimized for speed and feedback so we nearly always run Gradle jobs with the daemon.
 org.gradle.daemon=true

Sử dụng trình nền sẽ giúp các bản dựng của bạn khởi động nhanh hơn vì nó sẽ không phải khởi động toàn bộ ứng dụng Gradle mỗi lần. Gradle Daemon không được bật theo mặc định, nhưng chúng tôi khuyên bạn luôn luôn bật nó cho các máy của nhà phát triển (nhưng để nó bị vô hiệu hóa cho các máy chủ tích hợp liên tục). Câu hỏi thường gặp về chế độ này có thể được tìm thấy ở đây https://docs.gradle.org/civerse/userguide/gradle_daemon.html . Cài đặt bản dựng song song có thể không an toàn cho một số dự án. Yêu cầu là tất cả các mô-đun của bạn phải được tách rời hoặc bản dựng của bạn có thể không thành công (xem http://gradle.org/docs/civerse/userguide/multi_project_builds.html#sec:decoupling_projects để biết chi tiết).

Bước 3: Kích hoạt dexign gia tăng và điều chỉnh cài đặt bộ nhớ Bạn có thể tăng tốc các bản dựng của mình bằng cách bật dexing tăng dần. Trong tệp xây dựng mô-đun của bạn:

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

Thêm tùy chọn này vào khối Android của bạn:

dexOptions {
    incremental true
}

Trong khối dexOptions đó, bạn cũng có thể chỉ định kích thước heap cho quy trình dex, ví dụ:

dexOptions {
    incremental true
    javaMaxHeapSize "12g"
}

Trong đó, 12g nghiêm trọng là 12GB bộ nhớ. Thông tin bổ sung về điều này có thể được tìm thấy ở đây google.github.io/android-gradle-dsl/civerse/ Bạn cũng có thể định cấu hình các tham số Gradle trong tệp cài đặt, ví dụ: tăng kích thước heap tối đa trong trường hợp bạn có một dự án lớn:

# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.
# Default value: -Xmx10248m -XX:MaxPermSize=256m
org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8

Xem tất cả danh sách các tham số tại đây: https://docs.gradle.org/civerse/userguide/userguide_single.html#sec:gradle_configuration_properies để biết chi tiết.

Bước 4: Vô hiệu hóa Antivirus Xem xét để loại trừ các tệp dự án và bộ đệm khỏi quét vi-rút. Đây rõ ràng là một sự đánh đổi với an ninh. Nhưng nếu bạn chuyển đổi giữa các nhánh rất nhiều, thì phần mềm chống vi-rút sẽ quét lại các tệp trước khi cho phép quá trình phân lớp sử dụng nó, điều này làm chậm thời gian xây dựng (cụ thể là dự án đồng bộ hóa Android Studio với các tệp phân lớp và tác vụ lập chỉ mục). Đo thời gian xây dựng và xử lý CPU có và không kích hoạt chống vi-rút để xem nó có liên quan hay không. Tôi hi vọng cái này giúp được. Để lại một bình luận nếu bạn có bất kỳ câu hỏi hoặc một số lời khuyên khác để cải thiện hiệu suất xây dựng.

liên kết hữu ích


19

Nếu sử dụng dịch vụ google play, tùy thuộc vào chỉ các thư viện bạn cần thay vì toàn bộ blob có thể làm cho mọi thứ nhanh hơn.

Nếu nhu cầu duy nhất của bạn là bản đồ, hãy sử dụng:

compile 'com.google.android.gms:play-services-maps:6.5.+'

thay vì:

compile 'com.google.android.gms:play-services:6.5.+'

Phương thức thứ hai mang các phương thức 20k (xem blog) vào đường dẫn lớp, có thể vượt quá tổng số phương thức trên 64k.

Điều đó sẽ buộc sử dụng proguard hoặc multidex ngay cả đối với các bản dựng gỡ lỗi. Đối với một trong những dự án của tôi, tôi đã có thời gian xây dựng sau

  • xây dựng multidex (có thư viện hỗ trợ) ~ 40 giây
  • xây dựng proguard ~ 20 giây
  • xây dựng khi giới hạn phương thức <64k ~ 5sec

Nếu phát triển trên sdk 21+, có thể tối ưu hóa các bản dựng multidex như được nêu trong tài liệu Android

android {
    productFlavors {
        // Define separate dev and prod product flavors.
        dev {
            // dev utilizes minSDKVersion = 21 to allow the Android gradle plugin
            // to pre-dex each module and produce an APK that can be tested on
            // Android Lollipop without time consuming dex merging processes.
            minSdkVersion 21
        }
        prod {
            // The actual minSdkVersion for the application.
            minSdkVersion 14
        }
    }
    ...
}

2
Thay vì biên dịch tất cả các play-servicethư viện, tôi chỉ biên soạn mapslocations và vô hiệu hóa multidex. Tôi cảm thấy sự khác biệt lớn. Cảm ơn +1
Sami Eltamawy

16

Câu trả lời được chấp nhận là dành cho các phiên bản cũ hơn của studio android và hầu hết chúng vẫn hoạt động. Cập nhật studio android làm cho nó nhanh hơn một chút. Đừng bận tâm chỉ định kích thước heap vì nó sẽ tự động tăng khi tăng Xms và Xmx. Đây là một số sửa đổi với VMoptions

  1. Trong thư mục bin có tệp studio.vmoptions để đặt cấu hình môi trường. Trong trường hợp của tôi, đây là studio64.vmoptions Thêm các dòng sau nếu chúng chưa được thêm và lưu tệp. Trong trường hợp của tôi, tôi có RAM 8GB.

    -Xms4096m
    -Xmx4096m
    -XX:MaxPermSize=2048m
    -XX:+CMSClassUnloadingEnabled
    -XX:+CMSPermGenSweepingEnabled 
    -XX:+HeapDumpOnOutOfMemoryError
    -Dfile.encoding=utf-8`
  2. Bắt đầu studio android. Chuyển đến Tệp-> Cài đặt-> Xây dựng, Thi hành, Triển khai-> Trình biên dịch

    • Kiểm tra biên dịch các mô đun độc lập song song
    • Trong dòng lệnh Tùy chọn ghi: --offline
    • Kiểm tra Make dự án tự động
    • Kiểm tra cấu hình theo yêu cầu

Trong trường hợp sử dụng mac, ban đầu tôi không thể tìm thấy vmoptions. Dù sao, đây là một bài viết hay về cách chúng ta có thể thay đổi các vmoptions trong MAC OSX . Trích dẫn từ bài viết này ở đây.

Mở terminal của bạn và đặt lệnh này để mở vmoptions trong MAC OSX:

open -e /Applications/Android\ Studio.app/Contents/bin/studio.vmoptions

1
kể từ AS 2.3.2, bạn có thể thay đổi tùy chọn vim bằng cách trợ giúp-> Chỉnh sửa tùy chọn Vm tùy chỉnh
Sam

15

Chỉ cầ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

Đối với tôi tốc độ bây giờ bằng với Eclipse.

Nguồn: https://www.timroes.de/2013/09/12/speed-up-gradle/


Tôi không thể xem thư mục .gradle trong mac. Làm thế nào để mở nó?
Dharmik

@Dharmik: Có thể bạn đã cài đặt Android Studio dưới một tên người dùng khác. Nếu không, nó không được cài đặt chính xác, tôi đoán.
Yster

1
Không, đó là vấn đề khác .. thư mục hệ thống ".gradle" đã bị ẩn .. Vì vậy, tôi đi đến Go => Chuyển đến Thư mục và hơn tôi tìm thấy thư mục .gradle .. Cảm ơn đã trả lời nhanh ..
Dharmik

14

Bạn có thể làm cho quá trình nhanh hơn, nếu bạn sử dụng lớp từ dòng lệnh. Có rất nhiều tối ưu hóa để làm cho các nhà phát triển IDE. Nhưng nó chỉ là một phiên bản đầu tiên.

Để biết thêm thông tin hãy đọc cuộc thảo luận này trên g + với một số nhà phát triển.


3
Điều này dường như đúng ngay cả trong năm 2016
Leo ủng hộ Monica Cellio vào

11

Nếu bất cứ ai đang làm việc một dự án được đồng bộ hóa thông qua Subversion và điều này vẫn xảy ra, tôi nghĩ rằng điều này có thể làm chậm quá trình xử lý công việc trong Android Studio. Ví dụ: nếu nó hoạt động rất chậm trong khi: cuộn trong một lớp, xml, v.v., trong khi ứng dụng của tôi vẫn đang chạy trên thiết bị của tôi.

  • Chuyển đến Kiểm soát phiên bản tại Tùy chọn và đặt từ Subversion thành Không có.nhập mô tả hình ảnh ở đây

1
Bạn tiết kiệm được ngày của tôi: 2/4 phút -> 15 giây (Tôi đã vô hiệu hóa Rùa HG cho dự án).
kaftanati

3
Nếu bất cứ ai vẫn đang sử dụng Subversion, họ nên chuyển sang Git hoặc Mercurial
Leo hỗ trợ Monica Cellio vào

8

Cập nhật sau Android Studio 2.3

Tất cả các câu trả lời đều tuyệt vời và tôi khuyến khích sử dụng các phương pháp này với phương pháp này để cải thiện tốc độ xây dựng.

Sau khi phát hành Android 2.2 vào tháng 9 năm 2016, Android đã phát hành tính năng bộ nhớ cache xây dựng thử nghiệm để tăng tốc gradlehiệu suất xây dựng, hiện đã chính thức từ Android Studio 2.3 Canary. (Ghi chú phát hành chính thức)

Nó giới thiệu một tính năng bộ đệm xây dựng mới, được bật theo mặc định, có thể tăng tốc thời gian xây dựng (bao gồm cả bản dựng đầy đủ, bản dựng gia tăng và chạy ngay lập tức) bằng cách lưu trữ và sử dụng lại các tệp / thư mục được tạo trong các bản dựng trước của cùng hoặc Android khác nhau dự án.

Cách sử dụng:

Thêm dòng sau vào gradle.propertiestập tin của bạn

android.enableBuildCache = true
# Set to true or false to enable or disable the build cache. If this parameter is not set, the build cache is enable by default.

Làm sạch bộ đệm:

  • Có một nhiệm vụ Gradle mới được gọi cleanBuildCacheđể bạn dễ dàng dọn dẹp bộ đệm xây dựng hơn. Bạn có thể sử dụng nó bằng cách gõ như sau trong thiết bị đầu cuối của bạn:

    ./gradlew cleanBuildCache

  • HOẶC Bạn có thể xóa bộ nhớ cache cho Android studio 2.2 bằng cách xóa tất cả các tệp lưu trữ tại vị trí

    C:\Users\<username>\.android\build-cache


7

Sau khi thay đổi cài đặt này, thời gian biên dịch của tôi 10 phút thay đổi thành ~ 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

Tham khảo - https://www.sundoginteractive.com/blog/speed-up-gradle-in-android-studio

Bất lợi:

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.

Lưu ý quan trọng : Khi bạn triển khai ứng dụng, hãy xóa cài đặt này và xây dựng với các phiên bản phụ thuộc mới nhất.


6

Đã giải quyết của tôi với

File -> Settings -> Build, Execution, Deployment -> Build Tools -> Gradle -> Offline work

Xây dựng lớp đã đi từ 8 phút đến 3 giây.


4

Đây là những gì đã giúp lập trình viên Android khởi đầu này (cựu lập trình viên chuyên nghiệp, nhiều năm trước) trong việc tăng tốc Android Studio 2.2. Tôi biết đây là một buổi tổng duyệt, nhưng, chỉ tóm tắt ở một nơi.

Các bản dựng ban đầu vẫn có thể bị chậm một cách tàn nhẫn, nhưng việc khởi động lại các ứng dụng đang chạy thường rất dễ chấp nhận. Tôi đang sử dụng một PC tối ưu phụ: CPU AMD Quad-Core A8-7410, RAM 8 MB, không phải SSD HD, Win 10. (Và, đây là bài đăng Stack Overflow đầu tiên của tôi ....;)

TRONG CÀI ĐẶT -> LỚP:

có cho "Công việc ngoại tuyến" (đây có lẽ là cài đặt nhập nhiều nhất).

TRONG CÀI ĐẶT -> MÁY TÍNH:

có cho "Biên dịch song song các mô-đun độc lập" (không chắc điều này có thực sự giúp sử dụng CPU đa lõi không).

IN GRADLE SCRIPTS , "build.gradle (Module: ứng dụng)":

defaultConfig {
    ...
   // keep min high so that restarted apps can be hotswapped...obviously, this is hugely faster.
   minSdkVersion 14
   ...
    // enabling multidex support...does make big difference for me.
    multiDexEnabled true

C INNG Ở CÁC LỚP GRADLE , "gradle.properations (Thuộc tính dự án)":

org.gradle.jvmargs = -Xmx3048m -XX: MaxPermSize = 512m -XX: + HeapDumpOnOutOfMemoryError -Dfile.encoding = UTF-8

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

Ngoài ra , thử nghiệm trên thiết bị vật lý thay vì trình giả lập đang hoạt động tốt đối với tôi; một máy tính bảng nhỏ mà đứng lên là thuận tiện.


4

Chỉ là một mẹo quan trọng về hiệu suất:

Android Studio 3.0 bao gồm trình biên dịch DEX mới có tên D8.

"Trình biên dịch dex chủ yếu hoạt động dưới sự phát triển của ứng dụng hàng ngày của bạn, nhưng nó ảnh hưởng trực tiếp đến thời gian xây dựng ứng dụng, kích thước tệp .dex và hiệu suất thời gian chạy của ứng dụng."

"Và khi so sánh trình biên dịch D8 mới với trình biên dịch DX hiện tại, D8 ​​biên dịch nhanh hơn và xuất ra các tệp .dex nhỏ hơn, trong khi có hiệu năng thời gian chạy ứng dụng tương tự hoặc tốt hơn."

D8 là tùy chọn - hãy sử dụng nó, chúng ta phải đưa vào gradle.properies của dự án

android.enableD8=true

Thêm thông tin: https://android-developers.googleblog.com/2017/08/next-generation-dex-compiler-now-in.html

Tái bút Nó làm mất thời gian xây dựng của tôi khoảng 30%.


1

Thiết lập này diễn ra rất nhanh đối với tôi (khoảng 2 giây khi xây dựng)

xây dựng. nâng cấp

android {

    dexOptions {
        incremental true
        preDexLibraries = false
        jumboMode = false
        maxProcessCount 4
        javaMaxHeapSize "6g"
    }
}

gradle.properies

org.gradle.daemon=true
org.gradle.parallel=true
org.gradle.jvmargs=-Xmx8192M

PC của tôi:

  • CPU Intel (R) Pentium (R) CPU G2030 @ 3.00GHz, 3000 Mhz, 2 nguyên tắc procesadores, 2 procesadores lógicos
  • x64
  • Microsoft Windows 7 chuyên nghiệp
  • (RAM) 16,0 GB

tập tin dự án
- Tất cả nằm trong HD địa phương


1

Hãy làm theo các bước sau.

  1. Bật chế độ ngoại tuyến: Vui lòng kiểm tra bên dưới màn hình in.

    https://i.stack.imgur.com/RF9uG.png

  2. Kích hoạt tính năng Instant Run: Vui lòng kiểm tra bên dưới màn hình in.

    https://i.stack.imgur.com/mvHKJ.png

    Nếu bạn muốn tìm hiểu thêm về chạy ngay lập tức, vui lòng truy cập trang web dành cho nhà phát triển Android.


1

Bạn có thể thử mở menu gradle ở phía bên phải của studio và chỉ lắp ráp các mô-đun bạn đã thay đổi, sau đó chạy lệnh cài đặt. Khi bạn nhấn chạy, nó sẽ lắp ráp mọi thứ bất kể bạn có thể thực hiện bất kỳ thay đổi nào đối với mã mà nó đang lắp ráp


0

Tôi không phải là một chuyên gia về Gradle nhưng môi trường của tôi có dòng sau trong .gradle / init.gradle

gradle.projectsLoaded {
    rootProject.allprojects {
        repositories {
            mavenRepo name: 'libs-repo', url: 'http://guest-vm/artifactory/repo'
        }
    }
}

Tuy nhiên, tôi không biết tại sao dòng đó lại ở đó, nhưng tôi cố gắng thay đổi thành

gradle.projectsLoaded {
    rootProject.allprojects {
        repositories {
            mavenCentral()
        }
    }
} 

và bây giờ tôi cuối cùng cũng có thể làm việc mà không thề với sơ đồ xây dựng Android Studio & Gradle.


Artifactory trong trường hợp của bạn có thể được sử dụng làm bộ đệm thư viện. Bạn liên hệ với máy chủ nhân tạo, nếu nó có thư viện. Nếu có, nó sẽ trả lại cho bạn nếu không nó sẽ lấy nó từ mavencentral và sau đó trả lại cho bạn.
Fabio Marcolini

0

Trong trường hợp cụ thể của chúng tôi, vấn đề là do có plugin retrolambda , điều này buộc tất cả các dự án và dự án con phải biên dịch lại mỗi khi chúng tôi cố gắng khởi chạy ứng dụng của mình, ngay cả khi không có mã nào bị thay đổi trong các mô-đun cốt lõi của chúng tôi.

Loại bỏ retrolamba đã sửa nó cho chúng tôi. Hy vọng nó sẽ giúp được ai đó.


0

Chỉ cần thử điều này đầu tiên. Đó là kinh nghiệm cá nhân của tôi.

Tôi đã từng gặp vấn đề tương tự. Những gì tôi đã làm chỉ là vô hiệu hóa vĩnh viễn phần mềm chống vi-rút (Mine là Avast Security 2015). Ngay sau khi vô hiệu hóa phần mềm chống vi-rút, mọi thứ đã diễn ra tốt đẹp. lớp đã hoàn thành thành công. Từ giờ trong vòng vài giây, lớp sẽ hoàn thành (Chỉ mất 5-10 giây).


0

Xin chào Tôi biết đây là câu trả lời rất muộn nhưng có thể giúp ai đó
trong trường hợp tôi đang sử dụng

compile 'com.android.support:support-v4:23.1.1'

trong ứng dụng của tôi Phụ thuộc cấp độ
nhưng trong một trong các thư viện của tôi, đó là

 compile 'com.android.support:support-v4:23.0.1'

Sau khi thay đổi tất cả sang phiên bản mới nhất, vấn đề của tôi đã được giải quyết.


0

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



0

Một thay đổi nhỏ (để xua lại xml) vẫn mất 10 phút . Như @rivare nói trong câu trả lời của mình, việc xây dựng dòng lệnh sẽ nhanh hơn (mất khoảng 15 giây ).
Dưới đây là một số bước để ít nhất thực hiện một bản dựng tầm thường nhanh chóng từ dòng lệnh cho Windows.

  1. Đi đến gốc dự án của bạn (nơi gradlew.bat là):

    cd c: \ android \ MaskActivity

  2. thực hiện việc xây dựng :

    gradlew lắp rápDebug

  3. gỡ cài đặt apk từ điện thoại trực tiếp (kéo nó để gỡ cài đặt).

  4. Khi quá trình xây dựng kết thúc, tiêu diệt tiến trình java LỚN bằng Trình quản lý tác vụ Windows.

HOẶC nếu bạn có các công cụ unix trên máy Windows của mình:

ps

"pid" được hiển thị:

kill -9 <pid>
  1. Bây giờ cài đặt apk của bạn:

    adb -d cài đặt C: \ Android \ MaskActivity \ app \ build \ output \ apk \ app-debug.apk


0

Theo tài liệu Android , hãy thêm phần này vào tệp lớp của mô-đun ứng dụng.

android {
    ...
    dexOptions {
    preDexLibraries true
    maxProcessCount 8
    }
}

0

Để chạy môi trường Android trên máy cấu hình thấp.

  1. Đóng các tab web không cần thiết trong trình duyệt
  2. Đối với người dùng Antivirus, loại trừ thư mục bản dựng được tạo tự động
  3. Studio Android có heap mặc định 1,2 Gb có thể giảm xuống 512 MB Trợ giúp> Chỉnh sửa tùy chọn VM tùy chỉnh studio.vmoptions -Xmx512m Trình diễn bố cục sẽ được tăng tốc

  4. Đối với Gradle, một trong những thành phần cốt lõi trong studio Android Mkae chắc chắn thích ngay bây giờ 3.0beta là phiên bản mới nhất

Các mẹo dưới đây có thể ảnh hưởng đến chất lượng mã, vì vậy vui lòng sử dụng với cảnh báo:

  1. Studio chứa Chế độ an toàn nguồn khi được bật, nó sẽ đóng các hoạt động nền mà lint, tuân thủ mã, v.v.

  2. Bạn có thể chạy thủ công lintcheck khi cần ./gradlew lint

  3. Hầu hết mọi người đang sử dụng trình giả lập Android trung bình, nó tiêu thụ 2 GB RAM, vì vậy nếu có thể sử dụng thiết bị Android thực tế thì những điều này sẽ làm giảm tải tài nguyên của bạn trên máy tính. Ngoài ra, bạn có thể giảm RAM của trình giả lập và nó sẽ tự động giảm mức tiêu thụ bộ nhớ ảo trên máy tính của bạn. bạn có thể tìm thấy điều này trong cấu hình thiết bị ảo và cài đặt trước.

  4. Chế độ ngoại tuyến Gradle là một tính năng cho người dùng bị giới hạn băng thông để vô hiệu hóa việc tải xuống các phụ thuộc của bản dựng. Nó sẽ làm giảm hoạt động nền sẽ giúp tăng hiệu suất của studio Android.

  5. Android studio cung cấp một tối ưu hóa để biên dịch song song nhiều mô-đun. Trên các máy RAM thấp, tính năng này có thể sẽ có tác động tiêu cực đến hiệu suất. Bạn có thể vô hiệu hóa nó trong hộp thoại cài đặt trình biên dịch.

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.