Menjalankan aplikasi melalui Gradle dan Android Studio lebih lambat daripada melalui Eclipse?

Menjalankan aplikasi melalui Gradle dan Android Studio lebih lambat daripada melalui Eclipse?

iis

September 21, 2019

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.

studio-homepage-hero

File Konfigurasi

Buat file bernama gradle.properties di direktori apa pun yang berlaku:

/home//.gradle/ (Linux)
/ Pengguna //.gradle/ (Mac)
C: \ Users \ \ .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.properties dan secara global jika Anda menempatkannya di user_home \ .gradle \ gradle.properties. Properti diterapkan jika Anda menjalankan tugas gradle dari konsol atau langsung dari 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”.

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 perkakas untuk mengurangi jumlah pekerjaan (periksa jawaban dari Aksel Willgert di bawah).

Ketergantungan

Lebih memilih dependensi @aar 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, maka 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 –profile akan membantu menemukan kemacetan.