Membangun dan menjalankan aplikasi melalui Gradle dan Android Studio lebih lambat daripada melalui Eclipse

461

Saya memiliki multi-proyek (~ 10 modul) yang bangunannya memakan waktu sekitar 20-30 detik setiap kali. Ketika saya menekan Run di Android Studio, saya harus menunggu setiap waktu untuk membangun kembali aplikasi, yang sangat lambat.

Apakah mungkin untuk mengotomatiskan proses pembangunan di Android Studio? Atau apakah Anda punya saran tentang cara membuat proses ini lebih cepat?

Di Eclipse, berkat pembangunan otomatis, menjalankan proyek yang sama pada emulator membutuhkan waktu sekitar 3-5 detik.

Ini adalah file build.gradle saya (modul aplikasi):

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
    }
}
froger_mcs
sumber
23
Harap diingat bahwa baik sistem build berbasis Gradle maupun Android Studio tidak memiliki tingkat produksi saat ini.
CommonsWare
11
Waktu yang dihabiskan di sini kemungkinan besar dalam fase DEXing. Sayangnya, make android studio tampaknya melakukan pembersihan setiap saat, menyebabkan file yang sebelumnya dihapus dihapus. Mudah-mudahan, kita akan melihat perbaikan build bertahap segera.
Richard J. Ross III
3
Sementara itu, apakah ada cara sederhana untuk mengatakan mengubah tugas Gradle default sehingga mereka tidak selalu melakukan pembersihan?
sigmabeta
10
@CommonsWare, tidak ada alasan sekarang kita ada di versi 1.02, tapi ini masih menjadi masalah besar. Dengan Android studio menjalankan laptop quad core 4GB saya menggunakan sekitar 3,75 GB ram-nya hanya memegang satu contoh proyek hello world. Hasilnya juga sangat lamban. Bagi saya itu menunjukkan cacat desain yang serius dan berkelanjutan. Saya harap semuanya diselesaikan segera.
Andrew S
7
@AndrewS Saya merasa kasihan kita perlu mengubah OS kita hanya untuk mendapatkan gradle untuk berjalan pada kecepatan yang wajar dibandingkan dengan alat-alat sebelumnya.
Richard Le Mesurier

Jawaban:

441

Perangkat keras

Maaf, tetapi peningkatan stasiun pengembangan ke SSD dan berton-ton ram mungkin memiliki pengaruh yang lebih besar daripada gabungan poin di bawah ini.

Versi alat

Meningkatkan kinerja build memiliki prioritas utama untuk tim pengembangan, jadi pastikan Anda menggunakan Gradle dan Android Gradle Plugin terbaru .

File Konfigurasi

Buat file bernama gradle.propertiesdi direktori apa pun yang berlaku:

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

Menambahkan:

# 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

Properti Gradle berfungsi secara lokal jika Anda menempatkannya di projectRoot\gradle.propertiesdan secara global jika Anda menempatkannya di user_home\.gradle\gradle.properties. Properti diterapkan jika Anda menjalankan tugas gradle dari konsol atau langsung dari ide:

Pengaturan IDE

Dimungkinkan untuk men-tweak integrasi Gradle-IntelliJ dari GUI pengaturan IDE. Mengaktifkan "pekerjaan offline" (periksa jawaban dari yava di bawah) akan menonaktifkan permintaan jaringan nyata pada setiap "file gradasi sinkronisasi".

Pengaturan IDE

Asli multi-dex

Salah satu langkah paling lambat dari pembangunan apk adalah mengubah bytecode java menjadi file dex tunggal. Mengaktifkan multidex asli (minSdk 21 hanya untuk debug build) akan membantu tooling untuk mengurangi jumlah pekerjaan (periksa jawaban dari Aksel Willgert di bawah).

Ketergantungan

Lebih suka @aarketergantungan daripada sub proyek perpustakaan.

Cari paket aar di mavenCentral , jCenter atau gunakan jitpack.io untuk membangun perpustakaan apa pun dari github. Jika Anda tidak mengedit sumber pustaka dependensi Anda tidak harus membangunnya setiap kali dengan sumber proyek Anda.

Anti Virus

Pertimbangkan untuk mengecualikan file proyek dan cache dari pemindaian antivirus. Ini jelas merupakan pertukaran dengan keamanan (jangan coba ini di rumah!). Tetapi jika Anda sering berpindah antar cabang, antivirus akan memindai ulang file sebelum mengizinkan proses gradle untuk menggunakannya, yang memperlambat waktu pembuatan (khususnya proyek sinkronisasi AndroidStudio dengan file gradle dan tugas pengindeksan). Ukur waktu pembuatan dan proses CPU dengan dan tanpa antivirus yang diaktifkan untuk melihat apakah itu terkait.

Membuat profil bangunan

Gradle memiliki dukungan bawaan untuk membuat profil proyek . Proyek yang berbeda menggunakan kombinasi plugin dan skrip khusus yang berbeda. Menggunakan --profileakan membantu menemukan kemacetan.

Sergii Pechenizkyi
sumber
1
tentang @aar depedencies: menggunakan eg dependencies {compile 'com.android.support:support-v4:21.0.+'}adalah solusi yang lambat? tidak yakin untuk mengerti
younes0
1
Anda dapat menambahkan perpustakaan seperti ini: github.com/novak/numberpicker . Ini memiliki nilai, memberikan solusi kode untuk masalah, tetapi penulis tidak menerbitkannya di mana saja seperti maven atau jCenter. Sekarang Anda membawa perpustakaan itu sebagai sumber ke dalam proyek Anda dan membangunnya setiap kali proyek utama membangun atau mengkompilasinya satu kali dan hanya komit @ aar ke dalam repositori proyek Anda. Jadi itu benar-benar pilihan ketergantungan sumber / biner. Jika Anda tidak mengedit sumber, Anda harus membawa ketergantungan Anda sebagai biner yang sudah dikompilasi. Untuk perpustakaan java biasa yaitu .jar, untuk perpustakaan android yaitu .aar
Sergii Pechenizkyi
1
Ini pengaturan proyek> gradle. Lihat tangkapan layar di bawah ini: i.stack.imgur.com/wrwgo.png
Sergii Pechenizkyi
2
Saya telah menyiapkan semua optimasi seperti yang dijelaskan, namun di Android Studio, dibutuhkan 3 hingga 4 menit untuk memulai aplikasi saya, sedangkan itu sekitar 30 detik di Eclipse. Sampah. Hanya 12 proyek, satu aplikasi tunggal untuk dijalankan! Android dev menjadi sangat rumit sekarang, dan itu lebih dari setahun kemudian.
3c71
1
Saya menerapkan semua optimasi dan masih membutuhkan waktu sekitar 20 detik untuk membangun HelloWorld apk, dibandingkan dengan 2-3 detik di Eclipse.
Pawel
148

Anda dapat mengabaikan pemeriksaan pembaruan mutakhir secara bertahap.

masukkan deskripsi gambar di sini

Untuk Windows yang menjalankan Android Studio 1.5: Pergi ke File -> Settings -> Build, Execution, Deployment -> Build tools -> Gradle -> Check Offline work (as shown in image)

turun dari ~ 30 + detik hingga ~ 3 detik

yava
sumber
24
Itu keren sekali. Itu BANYAK lebih cepat. Tapi apa yang ini hancurkan?
John Ballinger
2
Solusi terbaik. Bisakah saya tahu efek samping dari solusi ini
Kavin Varnan
26
@JohnBallinger Offline berfungsi - gunakan kotak centang ini untuk bekerja dengan Gradle dalam mode offline. Dalam hal ini Gradle akan menggunakan dependensi dari cache. Gradle tidak akan mencoba mengakses jaringan untuk melakukan resolusi dependensi. Jika dependensi yang diperlukan tidak ada dalam cache dependensi, eksekusi build akan gagal. (Sumber: jetbrains.com/idea/help/gradle-2.html )
cprcrack
10
Apakah default untuk menggunakan dependensi cache terlebih dahulu sebelum pergi melalui jaringan? Saya tidak bisa membayangkan ini memeriksa dependensi yang diperbarui setiap kali gradledijalankan. Itu aneh.
Ehtesh Choudhury
1
@EhteshChoudhury SANGAT aneh. Seluruh lingkungan pengembang Gradle / Android Studio sangat slooooooow. Kebanyakan orang berpikir itu lambat karena Jawa. Saya melakukan sisi server Java dev pada IDEA dan semuanya berjalan sangat lancar.
stepanian
34

Mencari di mana-mana untuk ini dan akhirnya menemukan solusi yang bekerja untuk kita. Mengaktifkan build paralel (On OSX:) preferences -> compiler -> gradle -> "Compile independent modules in parallel"dan mengaktifkan 'make project secara otomatis' menurunkannya dari ~ 1 menit hingga ~ 20 detik. Terima kasih kepada / u / Covalence.

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

odiggitas
sumber
56
20 detik masih sangat lambat.
Johannes Brodwall
6
Perlu diingat bahwa ini tampaknya hanya membantu ketika Anda memiliki banyak modul / proyek independen. Saya sudah mengujinya pada aplikasi modul tunggal, dan itu tidak ada bedanya.
Sam
Saya memiliki proyek yang cukup besar dan membutuhkan 2 - 3 menit pada MacBook Pro 2012 Core i7, 8 GB RAM. Apakah itu oke?
Sermilion
25

Saya baru-baru ini membeli SSD baru dan beralih dari Windows ke Linux. Kali build saya sekarang lebih cepat, dan tidak lagi mengganggu.

Meskipun tidak langsung menjawab pertanyaan Anda mengapa lebih lambat dari gerhana, ini menunjukkan bahwa prosesnya terbatas pada disk dan peningkatan ke SSD mungkin merupakan solusi (agak mahal). Saya menduga akan ada orang yang menelusuri masalah ini dan berakhir di sini, yang mungkin menghargai pengalaman saya.

Andreas Løve Selvik
sumber
11
Pengembang di tim saya memiliki SSD cepat di mesin cepat dengan banyak memori. Untuk aplikasi non-sepele, pengerahan kembali setelah perubahan kode kecil masih membutuhkan waktu ~ 45 detik, dibandingkan dengan menggunakan kembali hampir secara instan di Eclipse. Bahkan menjalankan JUnit yang non-Android, sangat lambat. "Peningkatan" ke Android Studio dan Gradle telah menjadi penurunan besar sejauh ini. : - /
spaaarky21
@ Lionleaf seberapa cepat beralih dari windows ke linux?
younes0
@ younes0 Saya tidak tahu. Saya beralih ke Linux pada saat yang sama saya beralih ke SSD. Saya tidak mengatakan itu memiliki efek positif, hanya dua variabel yang saya ubah untuk speedup.
Andreas Løve Selvik
4
Dalam kasus saya beralih dari Windows ke Linux menghasilkan build Android 40% lebih cepat ... jadi pasti sepadan
kosiara - Bartosz Kosarzycki
Saya kedua apa yang @Bartosz Kosarzycki katakan. Saya akhirnya menjalankan vm Ubuntu dengan virtualbox di mesin dev saya. ~ 54 second build on windows, ~ 7sec untuk build yang sama di dalam mesin virtual pada hardware yang sama. Speedup gila dengan pindah ke Linux.
Eric Cornelson
20

Mempercepat Pembuatan Gradle Di Android Studio 3.2.1

Pernah merasa seperti Anda menunggu build selesai di Android Studio selama beberapa menit? Saya juga. Dan itu sangat menjengkelkan. Untungnya, ada beberapa cara yang dapat Anda gunakan untuk meningkatkan ini. Android menggunakan Gradle untuk membangun. Versi terbaru adalah 4.6 memiliki peningkatan kinerja yang sangat besar dibandingkan versi sebelumnya (lihat Catatan rilis untuk detail)

Langkah 1: Perbarui versi Gradle Cara yang lebih mudah untuk melakukannya adalah dengan membuka: Buka Pengaturan Modul (proyek Anda)> Struktur Proyek

masukkan deskripsi gambar di sini

MEMPERBARUI

Ubah ke versi Gradle: 4.6 dan Ubah ke Versi Plugin Android: 3.2.1

masukkan deskripsi gambar di sini

Unduh Gradle Release distributive dari https://services.gradle.org/distributions/gradle-4.6-all.zip Dan salin ke folder Gradle:

masukkan deskripsi gambar di sini

Langkah terakhir adalah menambahkan distribusi Anda di Pengaturan> Gradle

masukkan deskripsi gambar di sini

Jangan lupa klik Terapkan untuk menyimpan perubahan.

Langkah 2: Aktifkan mode Offline, daemon Gradle, dan build paralel untuk proyek, mode Offline memberitahu Gradle untuk mengabaikan pemeriksaan terbaru. Gradle meminta dependensi setiap kali dan memiliki opsi ini membuatnya hanya menggunakan apa yang sudah ada pada mesin untuk dependensi. Pergi ke Gradle dari Pengaturan studio android dan klik di kotak kerja Offline.

masukkan deskripsi gambar di sini

  1. Pergi ke Kompiler dari Pengaturan studio android dan tambahkan "- offline" di kotak baris perintah dan klik Kompilasi modul independen secara paralel.

masukkan deskripsi gambar di sini

Langkah selanjutnya adalah mengaktifkan daemon Gradle dan pembangunan paralel untuk proyek Anda. Build paralel akan menyebabkan proyek Anda dengan banyak modul (multi-proyek build in Gradle) dibangun secara paralel, yang seharusnya membuat proyek besar atau modular lebih cepat dibangun.

masukkan deskripsi gambar di sini

Pengaturan ini dapat diaktifkan dengan memodifikasi file bernama gradle.properties di direktori skrip Gradle (yaitu, ~ / .gradle / gradle.properties). Beberapa opsi ini (misalnya modul Complie secara paralel) tersedia dari Android Studio dan juga diaktifkan di sana oleh default, tetapi menempatkan mereka di file properti gradle.prop akan memungkinkan mereka ketika membangun dari terminal dan juga memastikan bahwa kolega Anda akan menggunakan pengaturan yang sama. Tetapi jika Anda bekerja dalam tim, terkadang Anda tidak dapat melakukan hal ini.

# 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

Menggunakan daemon akan membuat startup build Anda lebih cepat karena tidak harus memulai seluruh aplikasi Gradle setiap saat. Gradle Daemon tidak diaktifkan secara default, tetapi disarankan untuk selalu mengaktifkannya untuk mesin pengembang (tetapi membiarkannya dinonaktifkan untuk server integrasi berkelanjutan). FAQ tentang mode ini dapat ditemukan di sini https://docs.gradle.org/current/userguide/gradle_daemon.html . Pengaturan build paralel mungkin tidak aman untuk beberapa proyek. Syaratnya adalah semua modul Anda harus dipisahkan atau bangunan Anda bisa gagal (lihat http://gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects untuk perincian).

Langkah 3: Aktifkan pengaturan incxemental dexign dan tweak memori Anda dapat mempercepat build Anda dengan menyalakan incremental dexing. Dalam file build modul Anda:

masukkan deskripsi gambar di sini

Tambahkan opsi ini ke blok android Anda:

dexOptions {
    incremental true
}

Dalam blok dexOptions Anda juga dapat menentukan ukuran heap untuk proses dex, misalnya:

dexOptions {
    incremental true
    javaMaxHeapSize "12g"
}

Di mana "12g" adalah memori 12GB. Informasi tambahan tentang ini dapat ditemukan di sini google.github.io/android-gradle-dsl/current/ Anda juga dapat mengkonfigurasi parameter Gradle dalam file pengaturan, mis. Menambah ukuran tumpukan maksimum jika Anda memiliki proyek besar:

# 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

Lihat semua daftar parameter di sini: https://docs.gradle.org/current/userguide/userguide_single.html#sec:gradle_configuration_properties untuk detailnya.

Langkah 4: Nonaktifkan Antivirus Pertimbangkan untuk mengecualikan file proyek dan cache dari pemindaian antivirus. Ini jelas merupakan pertukaran dengan keamanan. Tetapi jika Anda sering berpindah antar cabang, antivirus akan memindai ulang file sebelum mengizinkan proses gradle untuk menggunakannya, yang memperlambat waktu pembuatan (khususnya proyek sinkronisasi Studio Android dengan file gradle dan tugas pengindeksan). Ukur waktu pembuatan dan proses CPU dengan dan tanpa antivirus yang diaktifkan untuk melihat apakah itu terkait. Saya harap ini membantu. Tinggalkan komentar jika Anda memiliki pertanyaan atau kiat lain untuk meningkatkan kinerja build.

tautan bermanfaat

Ahmad Aghazadeh
sumber
19

Jika menggunakan layanan Google Play, tergantung hanya pada perpustakaan yang Anda butuhkan, bukannya seluruh gumpalan dapat membuat segalanya lebih cepat.

Jika yang Anda butuhkan hanyalah peta, gunakan:

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

dari pada:

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

Yang terakhir membawa 20k metode (lihat blog) ke classpath, yang mungkin memberi tip jumlah metode total lebih dari 64k.

Itu akan memaksa penggunaan proguard atau multidex bahkan untuk membangun debug. Untuk salah satu proyek saya, saya memiliki waktu pengembangan berikut

  • multidex build (dengan dukunganlibrary) ~ 40sec
  • build proguard ~ 20sec
  • membangun ketika batas metode <64k ~ 5sec

Jika dikembangkan pada sdk 21+, dimungkinkan untuk mengoptimalkan pembuatan multidex seperti yang dinyatakan dalam dokumentasi 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
        }
    }
    ...
}
Aksel Willgert
sumber
2
Alih-alih kompilasi semua play-serviceperpustakaan, saya dikompilasi hanya mapsdan locations dan menonaktifkan multidex. Saya merasakan perbedaan besar. Terima kasih +1
Sami Eltamawy
16

Jawaban yang diterima adalah untuk versi android studio yang lebih lama dan sebagian besar masih berfungsi sampai sekarang. Memperbarui studio Android membuatnya sedikit lebih cepat. Jangan repot-repot untuk menentukan ukuran tumpukan karena akan meningkat secara otomatis dengan peningkatan Xms dan Xmx. Berikut ini beberapa modifikasi dengan VMoptions

  1. Di folder bin ada file studio.vmtions untuk mengatur konfigurasi lingkungan. Dalam kasus saya ini adalah studio64.vmoptions Tambahkan baris berikut jika belum ditambahkan dan simpan file. Dalam kasus saya saya sudah 8GB RAM.

    -Xms4096m
    -Xmx4096m
    -XX:MaxPermSize=2048m
    -XX:+CMSClassUnloadingEnabled
    -XX:+CMSPermGenSweepingEnabled 
    -XX:+HeapDumpOnOutOfMemoryError
    -Dfile.encoding=utf-8`
  2. Mulai studio android. Pergi ke File-> Pengaturan-> Build, Eksekusi, Deployment-> Compiler

    • Periksa kompilasi modul independen secara paralel
    • Dalam Opsi baris perintah tulis: --offline
    • Periksa Jadikan proyek secara otomatis
    • Periksa konfigurasi sesuai permintaan

Dalam hal menggunakan mac, pada awalnya saya tidak dapat menemukan vmoptions. Pokoknya, inilah artikel yang bagus tentang bagaimana kita dapat mengubah opsi di MAC OSX . Mengutip dari artikel ini di sini.

Buka terminal Anda dan masukkan perintah ini untuk membuka vmoptions di MAC OSX:

open -e /Applications/Android\ Studio.app/Contents/bin/studio.vmoptions
Reaz Murshed
sumber
1
pada AS 2.3.2 Anda dapat mengubah opsi vim dengan bantuan-> Edit Pilihan Vm Kustom
Sam
15

Cukup buat file bernama gradle.properties di direktori berikut:

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

Tambahkan baris ini ke file:

org.gradle.daemon=true

Bagi saya, kecepatannya sekarang sama dengan Eclipse.

Sumber: https://www.timroes.de/2013/09/12/speed-up-gradle/

Yster
sumber
Saya tidak dapat melihat folder .gradle di mac. Bagaimana cara membukanya?
Dharmik
@ Dharmik: Mungkin Anda telah menginstal Android Studio dengan nama pengguna yang berbeda. Kalau tidak, kurasa tidak terpasang dengan benar.
Yster
1
Tidak, itu masalah lain .. ".gradle" folder sistem disembunyikan .. Jadi saya pergi ke Go => Go To Folder dan daripada yang saya temukan folder .gradle .. Terima kasih atas balasan cepatnya ..
Dharmik
14

Anda bisa membuat proses lebih cepat, jika Anda menggunakan gradle dari command line. Ada banyak optimasi yang harus dilakukan untuk para pengembang IDE. Tetapi ini hanyalah versi awal.

Untuk informasi lebih lanjut baca diskusi ini di g + dengan beberapa devs.

menyaingi
sumber
3
Ini tampaknya benar bahkan sekarang di tahun 2016
Leo mendukung Monica Cellio
11

Jika ada yang mengerjakan proyek yang disinkronkan melalui Subversion dan ini masih terjadi, saya pikir ini dapat memperlambat proses alur kerja di Android Studio. Misalnya jika itu berfungsi sangat lambat saat: menggulir kelas, xml dll, saat aplikasi saya masih berjalan di perangkat saya.

  • Buka Kontrol Versi di Preferensi, dan atur dari Subversion ke None.masukkan deskripsi gambar di sini
Gent Berani
sumber
1
Anda menghemat hari saya: 2/4 mnt -> 15 dtk (Saya menonaktifkan Tortoise HG untuk proyek).
kaftanati
3
Jika ada yang masih menggunakan Subversi, mereka harus beralih ke Git atau Mercurial
Leo mendukung Monica Cellio
8

Pembaruan Setelah Android Studio 2.3

Semua jawaban bagus, dan saya mendorong untuk menggunakan metode itu dengan yang ini untuk meningkatkan kecepatan membangun.

Setelah merilis Android 2.2 pada September 2016, Android merilis fitur cache build eksperimental untuk mempercepat gradlekinerja build, yang sekarang resmi dari Android Studio 2.3 Canary. (Catatan Rilis Resmi)

Ini memperkenalkan fitur cache bangunan baru, yang diaktifkan secara default, dapat mempercepat waktu membangun (termasuk build penuh, build tambahan, dan jalankan instan) dengan menyimpan dan menggunakan kembali file / direktori yang dibuat pada build sebelumnya dari Android yang sama atau berbeda. proyek.

Cara Penggunaan:

Tambahkan baris berikut di gradle.propertiesfile Anda

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.

Bersihkan cache:

  • Ada tugas Gradle baru yang meminta cleanBuildCacheAnda untuk lebih mudah membersihkan cache build. Anda dapat menggunakannya dengan mengetik berikut ini di terminal Anda:

    ./gradlew cleanBuildCache

  • ATAU Anda dapat membersihkan cache untuk Android studio 2.2 dengan menghapus semua file yang disimpan di lokasi

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

Shaishav Jogani
sumber
7

Setelah mengubah pengaturan ini, durasi kompilasi saya 10 menit berubah menjadi ~ 10 detik.

Langkah 1:

Pengaturan (ctrl + Alt + S) ->

Bangun, Eksekusi, Penempatan ->

Kompiler ->

ketik " --offline" di kotak Opsi baris perintah.

Langkah 2:

centang kotak "Kompilasi modul independen secara paralel".

& klik Terapkan -> OK

masukkan deskripsi gambar di sini

Referensi - https://www.sundoginteractive.com/blog/speed-up-gradle-in-android-studio

Kerugian:

Anda tidak akan dapat menarik versi terbaru dari dependensi yang diidentifikasi dalam file build.gradle Anda. Ini berjalan lebih cepat karena menggunakan snapshot cache dari perpustakaan yang diimpor itu.

Catatan Penting : Saat Anda menggunakan aplikasi hapus pengaturan ini & bangun dengan versi dependensi terbaru.

Ranjith Kumar
sumber
6

Tambang dipecahkan dengan

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

Gradle build berubah dari 8 menit menjadi 3 detik.

mn_test347
sumber
4

Inilah yang membantu programmer Android pemula ini (mantan programmer profesional, tahun lalu) dalam mempercepat Android Studio 2.2. Saya tahu ini adalah pengulangan, tetapi, hanya meringkas di satu tempat.

Pembuatan awal masih bisa sangat lambat, tetapi memulai ulang aplikasi yang sedang berjalan biasanya sangat dapat ditoleransi. Saya menggunakan PC sub-optimal: CPU AMD Quad-Core A8-7410, RAM 8MB, HD non-SSD, Win 10. (Dan, ini posting Stack Overflow pertama saya ....;)

DALAM PENGATURAN -> GRADLE:

ya untuk "Pekerjaan offline" (ini mungkin merupakan pengaturan paling impor).

DALAM PENGATURAN -> KOMPILER:

ya untuk "Kompilasi modul independen secara paralel" (tidak yakin apakah ini memang membantu menggunakan CPU multicore).

DI GRADLE SCRIPTS , "build.gradle (Module: app)":

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

JUGA DALAM TULISAN GRADLE , "gradle.properties (Project Properties)":

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

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

Selain itu , pengujian pada perangkat fisik bukan emulator bekerja dengan baik untuk saya; tablet kecil yang berdiri nyaman.

Greg
sumber
4

Hanya tip perbaikan kinerja lainnya:

Android Studio 3.0 termasuk kompiler DEX baru yang disebut D8.

"Kompilator dex sebagian besar bekerja di bawah tenda dalam pengembangan aplikasi Anda sehari-hari, tetapi secara langsung memengaruhi waktu pembuatan aplikasi Anda, ukuran file .dex, dan kinerja runtime."

"Dan ketika membandingkan kompiler D8 baru dengan kompiler DX saat ini, D8 ​​mengkompilasi lebih cepat dan menghasilkan file .dex yang lebih kecil, sambil memiliki kinerja runtime aplikasi yang sama atau lebih baik."

D8 adalah opsional - jangan gunakan itu kita harus meletakkan ke project's gradle.properties

android.enableD8=true

Informasi lebih lanjut: https://android-developers.googleblog.com/2017/08/next-generation-dex-compiler-now-in.html

PS. Itu meningkatkan waktu build saya sekitar 30%.

Leśniakiewicz
sumber
1

Setup ini berjalan sangat cepat untuk saya (sekitar 2 detik build)

build.gradle

android {

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

properti

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

PC saya:

  • CPU Intel (R) Pentium (R) CPU G2030 @ 3.00GHz, 3000 Mhz, 2 prinsip prosesor, 2 prosesor prosesor
  • x64
  • Microsoft Windows 7 Professional
  • (RAM) 16,0 GB

file proyek
- Semua terletak di HD lokal

MoaLaiSkirulais
sumber
1

Anda dapat mencoba membuka menu gradle di sisi kanan studio, dan hanya merakit modul yang telah Anda ubah, lalu jalankan perintah install. Ketika Anda menekan run itu merakit semua terlepas dari perubahan apa pun yang mungkin Anda buat pada kode yang dirakitnya

SBC
sumber
0

Saya jauh dari menjadi ahli Gradle tetapi lingkungan saya memiliki baris berikut di .gradle / init.gradle

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

Namun saya tidak tahu mengapa garis itu ada di sana, tetapi saya mencoba mengubahnya

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

dan sekarang saya akhirnya dapat bekerja tanpa bersumpah untuk skema buildind Android Studio & Gradle.

cifuentes
sumber
artifactory dalam kasus Anda mungkin digunakan sebagai cache perpustakaan. Anda menghubungi server artifactory yang terlihat jika memiliki perpustakaan. Jika ya itu mengembalikannya kepada Anda sebaliknya ia pergi dan mengambilnya dari mavencentral dan kemudian kembali kepada Anda.
Fabio Marcolini
0

Dalam kasus khusus kami, masalahnya adalah karena memiliki retrolambda plugin , yang memaksa semua proyek dan sub-proyek untuk mengkompilasi ulang setiap kali kami mencoba meluncurkan aplikasi kami, bahkan jika tidak ada kode yang telah diubah dalam modul inti kami.

Menghapus retrolamba telah memperbaikinya bagi kami. Semoga ini bisa membantu seseorang.

Henrique de Sousa
sumber
0

Coba ini dulu. Ini adalah pengalaman pribadi saya.

Saya memiliki masalah yang sama. Apa yang saya lakukan hanyalah menonaktifkan antivirus secara permanen (Mine was Avast Security 2015). Setelah menonaktifkan antivirus, semuanya berjalan dengan baik. gradle selesai dengan sukses. Mulai sekarang dalam hitungan detik gradle selesai (Hanya butuh 5-10 detik).

NIKHIL CM
sumber
0

Hai Saya tahu ini jawaban yang sangat terlambat tapi mungkin membantu seseorang
dalam kasus saya yang saya gunakan

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

dalam ketergantungan Gradle aplikasi saya
tetapi di salah satu perpustakaan saya itu

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

setelah mengubah semua ke versi terbaru masalah saya terpecahkan.

maks
sumber
0

Mengikuti langkah-langkah akan membuatnya 10 kali lebih cepat dan mengurangi waktu pembangunan 90%

Pertama buat file bernama gradle.properties di direktori berikut:

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

Tambahkan baris ini ke file:

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

Dan periksa opsi ini di Android Studio

masukkan deskripsi gambar di sini

Biswajit Karmakar
sumber
0

Perubahan sepele (ke resorpsi xml) masih membutuhkan waktu 10 menit . Seperti @rivare mengatakan dalam jawabannya, membangun baris perintah lebih cepat (mengambil ini ke 15 detik ).
Berikut adalah beberapa langkah untuk setidaknya membuat build sepele dari baris perintah untuk Windows.

  1. Buka root proyek Anda (di mana gradlew.bat berada):

    cd c: \ android \ MaskActivity

  2. jalankan build :

    gradlew assembleDebug

  3. hapus instalan apk dari telepon secara langsung (seret untuk menghapus instalan).

  4. Ketika build selesai, bunuh proses java BESAR menggunakan Windows Task Manager.

ATAU jika Anda memiliki alat unix pada mesin Windows Anda:

ps

"pid" ditampilkan:

kill -9 <pid>
  1. Sekarang instal apk Anda:

    adb -d instal C: \ Android \ MaskActivity \ app \ build \ outputs \ apk \ app-debug.apk

Jon Goodwin
sumber
0

Menurut dokumentasi android , tambahkan ini dalam file gradle dari modul aplikasi.

android {
    ...
    dexOptions {
    preDexLibraries true
    maxProcessCount 8
    }
}
Allan
sumber
0

Untuk menjalankan Android envirorment pada mesin konfigurasi rendah.

  1. Tutup tab web yang tidak diakses di browser
  2. Untuk pengguna Antivirus, kecualikan folder build yang dibuat secara otomatis
  3. Android studio memiliki 1.2 Gb default heap dapat turun menjadi 512 MB Help> Edit custom VM options studio.vmoptions -Xmx512m Performace layout akan dipercepat

  4. Untuk Gradle salah satu komponen inti di Android studio Mkae yakin seperti sekarang 3.0beta adalah yang terbaru

Kiat di bawah ini dapat memengaruhi kualitas kode, jadi harap digunakan dengan hati-hati:

  1. Studio berisi Power safe Mode ketika dinyalakan akan menutup operasi latar belakang yang berserat, kode komplit dan sebagainya.

  2. Anda dapat menjalankan lintcheck secara manual saat dibutuhkan ./gradlew lint

  3. Sebagian besar menggunakan emulator Android rata-rata mengkonsumsi 2 GB RAM jadi jika mungkin menggunakan perangkat Android yang sebenarnya ini akan mengurangi beban sumber daya Anda di komputer Anda. Atau Anda dapat mengurangi RAM emulator dan secara otomatis akan mengurangi konsumsi memori virtual pada komputer Anda. Anda dapat menemukannya di konfigurasi perangkat virtual dan pengaturan lanjutan.

  4. Mode offline Gradle adalah fitur untuk pengguna dengan bandwidth terbatas untuk menonaktifkan pengunduhan dependensi build. Ini akan mengurangi operasi latar belakang yang akan membantu meningkatkan kinerja studio Android.

  5. Studio Android menawarkan optimasi untuk mengkompilasi beberapa modul secara paralel. Pada mesin RAM rendah fitur ini kemungkinan akan berdampak negatif pada kinerja. Anda dapat menonaktifkannya di dialog pengaturan kompiler.

Smit Patel
sumber