Oluşturulması her seferinde yaklaşık 20-30 saniye süren çoklu bir projem (~10 modül) var. Android Studio'da Çalıştır'a bastığımda, uygulamayı yeniden oluşturmak için her seferinde beklemem gerekiyor, bu da son derece yavaş.
Android Studio'da inşa sürecini otomatikleştirmek mümkün mü? Ya da bu süreci nasıl daha hızlı hale getirebileceğimize dair bir tavsiyeniz var mı?
Eclipse'te, otomatik oluşturma sayesinde, aynı projeyi bir emülatör üzerinde çalıştırmak yaklaşık 3-5 saniye sürer.
Bu benim build.gradle dosyam (uygulama modülü):
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
}
}
Üzgünüm ama geliştirme istasyonunu SSD'ye ve tonlarca ram'e yükseltmek muhtemelen aşağıdaki noktaların toplamından daha büyük bir etkiye sahiptir.
Geliştirme ekipleri için derleme performansını artırmak büyük bir önceliğe sahiptir, bu nedenle en son Gradle ve Android Gradle Plugin kullandığınızdan emin olun.
Geçerli dizinde gradle.properties
adında bir dosya oluşturun:
/home/<username>/.gradle/
(Linux)/Users/<username>/.gradle/
(Mac)C:\Users\<username>\.gradle
(Windows)Ekleyin:
# 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 özellikleri projectRoot\gradle.properties
adresine yerleştirirseniz yerel olarak, user_home\.gradle\gradle.properties
adresine yerleştirirseniz global olarak çalışır. Gradle görevlerini konsoldan veya doğrudan fikirden çalıştırırsanız özellikler uygulanır:
Gradle-IntelliJ entegrasyonunu IDE ayarları GUI'sinden ayarlamak mümkündür. Çevrimdışı çalışmayı" etkinleştirmek (aşağıdaki yava cevabını kontrol edin) her "sync gradle dosyasında" gerçek ağ isteklerini devre dışı bırakacaktır.
Apk oluşturmanın en yavaş adımlarından biri java bytecode'u tek bir dex dosyasına dönüştürmektir. Yerel multidex'i etkinleştirmek (yalnızca hata ayıklama derlemeleri için minSdk 21), araçların bir miktar işi azaltmasına yardımcı olacaktır (aşağıdaki Aksel Willgert yanıtını kontrol edin).
Kütüphane alt projeleri yerine @aar
bağımlılıklarını tercih edin.
mavenCentral]6, jCenter üzerinde aar paketini arayın veya github'dan herhangi bir kütüphane oluşturmak için jitpack.io kullanın. Bağımlılık kütüphanesinin kaynaklarını düzenlemediyseniz, proje kaynaklarınızla her seferinde derlememelisiniz.
Proje ve önbellek dosyalarını antivirüs taramasından hariç tutmayı düşünün. Bu tabii ki güvenlikle ilgili bir değiş tokuştur (bunu evde denemeyin!). Ancak şubeler arasında çok fazla geçiş yaparsanız, antivirüs gradle işleminin kullanmasına izin vermeden önce dosyaları yeniden tarar, bu da derleme süresini yavaşlatır (özellikle AndroidStudio projeyi gradle dosyaları ve indeksleme görevleri ile senkronize eder). İlgili olup olmadığını görmek için derleme süresini ve işlem CPU'sunu antivirüs etkin ve etkin değilken ölçün.
Gradle, profil oluşturma projeleri için yerleşik desteğe sahiptir. Farklı projeler farklı eklentiler ve özel komut dosyaları kombinasyonu kullanmaktadır. Profil` kullanmak darboğazları bulmaya yardımcı olacaktır.
Bunun için her yeri aradım ve sonunda bizim için işe yarayan bir çözüm buldum. Paralel derlemeleri etkinleştirmek (OSX'te: preferences -> compiler -> gradle -> "Compile independent modules in parallel"
) ve 'make project automatically' özelliğini etkinleştirmek ~1 dakikadan ~20 saniyeye düşürdü. Teşekkürler /u/Covalence.
http://www.reddit.com/r/androiddev/comments/1k3nb3/gradle_and_android_studio_way_slower_to_build/
Komut satırından gradle kullanırsanız işlemi daha hızlı hale getirebilirsiniz. IDE geliştiricileri için yapılacak çok fazla optimizasyon var. Ancak bu sadece erken bir sürüm.
Daha fazla bilgi için g+ üzerinde bazı geliştiricilerle yapılan bu tartışmayı okuyun.