Saya memiliki multi-proyek (~10 modul) yang bangunan membutuhkan waktu sekitar 20-30 detik setiap waktu. Ketika saya tekan Run di Android Studio, saya harus menunggu setiap waktu untuk membangun kembali aplikasi yang sangat lambat.
Apakah mungkin untuk mengotomatisasi proses pembangunan di Android Studio? Atau apakah anda memiliki saran tentang cara untuk membuat proses ini lebih cepat?
Di Eclipse, terima kasih untuk otomatis membangun, menjalankan proyek yang sama pada emulator ini membutuhkan waktu sekitar 3-5 detik.
Ini adalah membangun.gradle (aplikasi modul):
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
}
}
I'm maaf, tapi upgrade pengembangan stasiun untuk SSD dan ton ram memiliki kemungkinan yang lebih besar pengaruh dari poin-poin di bawah ini dikombinasikan.
Meningkatnya membangun kinerja yang memiliki prioritas utama untuk pengembangan tim, jadi pastikan anda menggunakan terbaru Gradle dan Android Gradle Plugin.
Buat sebuah file bernama gradle.properties
dalam apa pun direktori berlaku:
/home/<username>/.gradle/
(Linux)/Pengguna/<username>/.gradle/
(Mac)C:\Users\<username>\.gradle
(Windows)Append:
# 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
Gradle sifat karya lokal jika anda menempatkan mereka di projectRoot\gradle.properties
dan global jika anda menempatkan mereka di user_home\.gradle\gradle.properties
. Sifat diterapkan jika anda menjalankan gradle tugas dari konsol atau langsung dari ide:
Hal ini dimungkinkan untuk men-tweak Gradle-IntelliJ integrasi dari IDE pengaturan GUI. Mengaktifkan "bekerja secara offline" (periksa jawaban dari yava di bawah ini) akan menonaktifkan jaringan yang nyata permintaan pada setiap "sync gradle".
Salah satu langkah paling lambat apk membangun adalah mengubah bytecode java ke satu dex file. Memungkinkan asli multidex (minSdk 21 untuk men-debug membangun hanya) akan membantu perkakas untuk mengurangi jumlah pekerjaan (periksa jawaban dari Aksel Willgert di bawah ini).
Sukai @aar
dependensi dari perpustakaan sub-proyek.
Pencarian aar paket pada mavenCentral, jCenter atau gunakan jitpack.io untuk membangun perpustakaan dari github. Jika anda tidak mengedit sumber dari ketergantungan perpustakaan anda tidak harus membangun itu setiap waktu dengan proyek anda sumber.
Pertimbangkan untuk mengecualikan proyek dan cache file dari pemindaian antivirus. Ini jelas merupakan trade off dengan keamanan (don't try this at home!). Tapi jika anda beralih di antara cabang-cabang yang banyak, maka antivirus ini akan memindai file sebelum mengizinkan gradle proses untuk menggunakannya, yang memperlambat waktu membangun (khususnya AndroidStudio sync proyek dengan gradle file dan pengindeksan tugas). Mengukur waktu membangun dan proses CPU dengan dan tanpa antivirus diaktifkan untuk melihat apakah hal itu berkaitan.
Gradle memiliki dukungan built-in untuk profil proyek. Berbeda dengan proyek-proyek yang menggunakan kombinasi yang berbeda dari plugin dan skrip kustom. Menggunakan --profil
akan membantu untuk menemukan kemacetan.
Anda dapat mengabaikan gradle update-to-date cek.
Untuk Windows yang menjalankan Android Studio 1.5: Pergi ke File -> Pengaturan -> Membangun, Pelaksanaan, Penerapan,- > Membangun alat -> Gradle -> Memeriksa pekerjaan Offline (seperti yang ditunjukkan dalam gambar)
turun dari ~30+ sec untuk ~3 detik
Mencari di mana-mana selama ini dan akhirnya menemukan solusi yang bekerja untuk kita. Memungkinkan paralel membangun (Pada OSX: preferences -> compiler -> gradle -> "Mengkompilasi modul independen secara paralel"
) dan memungkinkan 'membuat proyek secara otomatis' membawanya turun dari ~1 menit ~20 detik. Terima kasih untuk /u/Covalence.
http://www.reddit.com/r/androiddev/comments/1k3nb3/gradle_and_android_studio_way_slower_to_build/
Saya baru saja membeli sebuah SSD baru dan pergi dari Windows ke Linux.Saya membangun zaman sekarang urutan besarnya lebih cepat, dan tidak lagi mengganggu.
Meskipun tidak secara langsung menjawab pertanyaan anda, mengapa hal itu's lebih lambat dari eclipse, hal ini menunjukkan bahwa proses disk-dibatasi dan upgrade ke SSD mungkin (agak mahal) solusi. I'm menebak akan ada orang-orang yang googling masalah dan berakhir di sini, yang mungkin menghargai pengalaman saya.
Mempercepat Gradle Membangun Di Android Studio 3.2.1
Pernah merasa seperti anda sedang menunggu untuk membangun untuk menyelesaikan di Android Studio untuk beberapa menit? Saya juga. Dan itu cukup menjengkelkan. Untungnya, ada beberapa cara yang dapat anda gunakan untuk memperbaiki ini. Android menggunakan Gradle untuk bangunan. Versi terbaru adalah 4,6 memiliki peningkatan performa yang hebat dari versi sebelumnya (lihat catatan Rilis untuk detail).
Langkah 1: Update versi Gradle Cara yang lebih mudah untuk mencapai ini adalah untuk pergi ke: Buka Pengaturan Modul (proyek) > Struktur Proyek
UPDATE
Perubahan Gradle versi: 4.6 dan Perubahan untuk Android Plugin Versi: 3.2.1
Download Gradle Rilis distributif dari https://services.gradle.org/distributions/gradle-4.6-all.zip Dan salin ke Gradle folder:
Langkah terakhir adalah menambahkan discribution dalam Pengaturan > Gradle
Jangan lupa untuk klik Apply untuk menyimpan perubahan.
Langkah 2: Aktifkan modus Offline, Gradle daemon dan paralel untuk membangun proyek Modus Offline memberitahu Gradle untuk mengabaikan update-to-date cek. Gradle meminta dependensi setiap kali dan memiliki opsi ini membuatnya hanya menggunakan apa yang sudah ada di mesin untuk dependensi. Pergi ke Gradle dari android studio Pengaturan dan klik di pekerjaan Offline kotak.
Langkah berikutnya adalah untuk mengaktifkan Gradle daemon dan paralel membangun untuk proyek anda. Paralel membangun akan menyebabkan proyek-proyek anda dengan beberapa modul (multi-proyek yang dibangun di Gradle) yang akan dibangun secara paralel, yang harus membuat besar atau modular proyek membangun lebih cepat.
Pengaturan ini bisa diaktifkan oleh modifiing sebuah file bernama gradle.properti di Gradle direktori script(yaitu, ~/.gradle/gradle.properties).Beberapa pilihan ini (misalnya Complie modul secara paralel) yang tersedia dari Android Studio dan juga diaktifkan ada secara default, tetapi menempatkan mereka di gradle.properties file yang akan memungkinkan mereka ketika membangun dari terminal dan juga memastikan bahwa rekan-rekan anda akan menggunakan pengaturan yang sama. Tetapi jika anda bekerja pada sebuah tim, kadang-kadang 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 anda membangun startup lebih cepat karena tidak harus memulai seluruh Gradle aplikasi setiap saat. Yang Gradle Daemon tidak diaktifkan secara default, tapi itu merekomendasikan selalu memungkinkan untuk pengembang' mesin (tetapi meninggalkan keluarga untuk terus-menerus integrasi server). FAQ tentang mode ini bisa ditemukan di sini https://docs.gradle.org/current/userguide/gradle_daemon.html. Paralel membangun pengaturan bisa menjadi tidak aman untuk beberapa proyek. Persyaratan adalah bahwa semua modul anda harus dipisahkan atau membangun anda bisa gagal (lihat http://gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects untuk rincian).
Langkah 3: Aktifkan tambahan dexign dan men-tweak pengaturan memori Anda dapat mempercepat anda membangun dengan menyalakan tambahan dexing. Dalam modul ini membangun file:
Tambahkan opsi ini untuk android anda blok:
dexOptions {
incremental true
}
Dalam dexOptions blok anda juga dapat menentukan ukuran tumpukan untuk dex proses, misalnya:
dexOptions {
incremental true
javaMaxHeapSize "12g"
}
Di mana "12g" adalah 12GB dari memory. Informasi tambahan tentang ini bisa ditemukan di sini google.github.io/android-gradle-dsl/saat ini/ Anda juga dapat mengkonfigurasi Gradle parameter dalam pengaturan file, misalnya meningkatkan max heap size dalam kasus anda memiliki sebuah 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 dari parameter berikut: https://docs.gradle.org/current/userguide/userguide_single.html#sec:gradle_configuration_properties untuk rincian.
Langkah 4: Menonaktifkan Antivirus Pertimbangkan untuk mengecualikan proyek dan cache file dari pemindaian antivirus. Ini jelas merupakan trade off dengan keamanan. Tapi jika anda beralih di antara cabang-cabang yang banyak, maka antivirus ini akan memindai file sebelum mengizinkan gradle proses untuk menggunakannya, yang memperlambat waktu membangun (khususnya Android Studio sync proyek dengan gradle file dan pengindeksan tugas). Mengukur waktu membangun dan proses CPU dengan dan tanpa antivirus diaktifkan untuk melihat apakah hal itu berkaitan. Saya harap ini membantu. Tinggalkan komentar jika anda memiliki pertanyaan atau beberapa tips lain untuk meningkatkan membangun kinerja.
Jika menggunakan google play layanan, tergantung pada perpustakaan yang anda butuhkan bukan seluruh blob dapat membuat hal-hal lebih cepat.
Jika anda hanya perlu peta, menggunakan:
compile 'com.google.android.gms:play-services-maps:6.5.+'
bukannya:
compile 'com.google.android.gms:play-services:6.5.+'
Yang terakhir membawa 20k metode (lihat blog) ke dalam classpath, yang mungkin ujung total metode menghitung lebih dari 64k.
Yang akan memaksa penggunaan proguard atau multidex bahkan untuk debug membangun. Untuk salah satu proyek saya yang telah saya berikut membangun kali
Jika berkembang di sdk 21+, itu akan mungkin untuk mengoptimalkan multidex membangun seperti yang dinyatakan di android dokumentasi
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
}
}
...
}
Jawaban yang diterima adalah untuk versi android studio dan sebagian besar dari mereka masih bekerja sekarang. Memperbarui android studio dibuat sedikit lebih cepat. Don't repot-repot untuk menentukan ukuran tumpukan seperti ini'll meningkat secara otomatis dengan peningkatan Xms dan Xmx. Berikut ini's beberapa modifikasi dengan VMoptions
-Xms4096m -Xmx4096m -XX:MaxPermSize=2048m -XX:+CMSClassUnloadingEnabled -XX:+CMSPermGenSweepingEnabled -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=utf-8`
Dalam kasus menggunakan mac, pada awalnya saya tidak't menemukan vmoptions. Anyway, di sini's artikel bagus tentang bagaimana kita bisa mengubah vmoptions di MAC OSX. Mengutip dari artikel ini di sini.
Buka terminal dan masukkan perintah ini untuk membuka vmoptions di MAC OSX:
open -e /Applications/Android\ Studio.app/Contents/bin/studio.vmoptions
Hanya membuat sebuah file bernama gradle.properti 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, kecepatan angin dan sekarang sama dengan Eclipse.
Anda bisa membuat proses lebih cepat, jika anda menggunakan gradle dari baris perintah. Ada banyak optimasi yang harus dilakukan untuk IDE pengembang. Tapi itu hanya sebuah versi awal.
Untuk informasi lebih lanjut baca diskusi di g+ dengan beberapa devs.
Jika seseorang bekerja dalam sebuah proyek yang disinkronkan melalui Subversi dan ini masih terjadi, saya pikir ini dapat memperlambat proses alur kerja dalam Android Studio. Misalnya jika bekerja sangat lambat sementara: bergulir di kelas,xml, dll, sementara saya aplikasi ini masih berjalan pada perangkat saya.
Semua jawaban yang besar, dan saya mendorong untuk menggunakan metode-metode dengan yang satu ini untuk meningkatkan membangun kecepatan.
Setelah rilis android 2.2 pada September 2016, Android dirilis eksperimen membangun fitur cache untuk mempercepat gradle
membangun kinerja, yang sekarang resmi dari Android Studio 2.3 Canary. (Resmi Rilis catatan)
Hal ini memperkenalkan baru membangun fitur cache, yang mengaktifkan secara default, dapat mempercepat membangun kali (termasuk penuh membangun, bertahap membangun, dan menjalankan instan) dengan menyimpan dan menggunakan kembali file/direktori yang dibuat dalam membangun sebelumnya yang sama atau berbeda proyek Android.
Cara pemakaian:
Tambahkan baris berikut di gradle.properties
file
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.
Membersihkan cache:
cleanBuildCache
bagi anda untuk lebih mudah membersihkan membangun cache. Anda dapat menggunakannya dengan mengetik perintah berikut di terminal anda: ./gradlew cleanBuildCache
C:\Users\<username>\.android\build-cache
Setelah mengubah pengaturan ini saya mengkompilasi durasi 10 menit berubah menjadi ~10 detik.
Langkah 1:
Pengaturan(ctrl+Alt+S) ->
Membangun,Pelaksanaan,Penerapan,- >
Compiler ->
type "
--offline
" di baris perintah Pilihan kotak.
Langkah 2:
memeriksa "Mengkompilasi modul independen secara paralel" kotak centang.
& klik Apply -> OK
Referensi - https://www.sundoginteractive.com/blog/speed-up-gradle-in-android-studio
Kerugian:
Anda tidak akan dapat untuk pull down versi terbaru dari dependensi yang diidentifikasi dalam membangun.gradle. Ini berjalan lebih cepat karena menggunakan cache snapshot dari mereka diimpor perpustakaan.
Catatan penting: Ketika anda menggunakan aplikasi menghapus pengaturan & membangun dengan versi terbaru dari ketergantungan.
Hanya kinerja yang lain pembenahan tip:
Android Studio 3.0 termasuk new DEX compiler disebut D8.
"dex penyusun sebagian besar bekerja di bawah tenda di anda sehari-hari pengembangan aplikasi, tetapi langsung dampak aplikasi anda's waktu membangun, .dex ukuran file, dan kinerja runtime."
"Dan ketika membandingkan D8 baru compiler dengan arus DX compiler, D8 mengkompilasi lebih cepat dan output yang lebih kecil .file dex, sementara memiliki yang sama atau lebih baik app runtime kinerja."
D8 adalah opsional - tidak menggunakannya kita harus menempatkan untuk proyek's gradle.properti
android.enableD8=true
Informasi lebih lanjut: https://android-developers.googleblog.com/2017/08/next-generation-dex-compiler-now-in.html
PS. Itu impove saya membangun waktu sekitar 30%.
Berikut ini's apa yang membantu ini awal programmer Android (mantan programmer profesional, tahun yang lalu) dalam mempercepat Android Studio 2.2. Saya tahu ini adalah pengulangan, tetapi, hanya meringkas di satu tempat.
Awal membangun masih dapat brutal lambat, tapi restart semua aplikasi yang sedang berjalan sekarang biasanya sangat lumayan. I'm menggunakan sub-optimal PC: AMD Quad-Core A8-7410 CPU, 8MB RAM, non-SSD HD, Win 10. (Dan, ini adalah pertama saya Stack Overflow posting.... ;)
DI PENGATURAN -> GRADLE:
ya untuk "bekerja secara Offline" (ini mungkin yang paling mengimpor pengaturan).
DI PENGATURAN -> COMPILER:
ya untuk "Mengkompilasi modul independen secara paralel" (tidak yakin jika ini tidak membantu memanfaatkan multicore Cpu).
DI GRADLE SCRIPT, "membangun.gradle (Modul: aplikasi)":
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 DI GRADLE SCRIPT, "gradle.properties (Properti Proyek)":
org.gradle.jvmargs=-Xmx3048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
org.gradle.paralel=true org.gradle.daemon=true
Tambahan, pengujian pada perangkat fisik bukan emulator ini bekerja dengan baik bagi saya; tablet kecil yang berdiri tidak jauh.
Penataan ini berjalan sangat cepat bagi saya (2 detik membangun)
membangun.gradle
android {
dexOptions {
incremental true
preDexLibraries = false
jumboMode = false
maxProcessCount 4
javaMaxHeapSize "6g"
}
}
gradle.sifat-sifat
org.gradle.daemon=true
org.gradle.parallel=true
org.gradle.jvmargs=-Xmx8192M
PC saya:
file proyek
Silakan ikuti langkah-langkah berikut.
https://i.stack.imgur.com/RF9uG.png
https://i.stack.imgur.com/mvHKJ.png
Jika anda ingin mempelajari lebih lanjut tentang instan run silahkan kunjungi situs pengembang android.
Anda bisa mencoba membuka gradle menu di sisi kanan dari studio, dan hanya merakit modul-modul yang telah anda ubah, kemudian jalankan install perintah. Ketika anda menekan menjalankannya merakit semuanya terlepas dari semua perubahan yang telah anda buat untuk kode ini adalah perakitan
GUNAKAN ini sudo dpkg --add-arsitektur i386 sudo apt-get update sudo apt-get install libncurses5:i386 sebuah berkas++6:i386 zlib1g:i386
I'm jauh dari menjadi seorang ahli di Gradle tapi 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 itu ada, tapi saya mencoba untuk mengubah
gradle.projectsLoaded {
rootProject.allprojects {
repositories {
mavenCentral()
}
}
}
dan akhirnya sekarang aku dapat bekerja tanpa bersumpah untuk Android Studio & Gradle buildind skema.