Gradle ve Android Studio üzerinden uygulama oluşturmak ve çalıştırmak Eclipse üzerinden daha yavaştır


461

Binanın her seferinde yaklaşık 20-30 saniye süren bir çoklu projem var (~ 10 modül). Android Studio'da Çalıştır'a bastığımda, uygulamayı yeniden oluşturmak için her seferinde beklemek zorundayım, bu da son derece yavaş.

Android Studio'da oluşturma işlemini otomatikleştirmek mümkün mü? Yoksa bu süreci nasıl daha hızlı yapacağınız konusunda tavsiyeleriniz var mı?

Eclipse'de otomatik bina sayesinde aynı projeyi bir emülatörde ç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
    }
}

23
Lütfen ne Gradle tabanlı yapı sisteminin ne de Android Studio'nun şu anda üretim sınıfı olmadığını unutmayın.
CommonsWare

11
Burada harcanan zaman büyük olasılıkla DEXing aşamasındadır. Ne yazık ki, android stüdyosunun markası her seferinde temiz bir performans sergiliyor ve daha önce dex'd dosyalarının silinmesine neden oluyor. Umarım, yakında artımlı bir yapı düzeltmesi göreceğiz.
Richard J. Ross III

3
Bu arada, varsayılan Gradle görevlerini her zaman temiz bir performans göstermeyecek şekilde değiştirmeyi söylemenin basit bir yolu var mı?
sigmabeta

10
@CommonsWare iyi, şimdi 1.02 sürümünde mazeret yok, ama hala önemli bir sorun. 4GB dört çekirdekli dizüstü bilgisayarımı çalıştıran Android stüdyosu, sadece bir merhaba dünya projesinin tek bir örneğini tutan koçunun yaklaşık 3.75GB'ını kullanıyor. Sonuç olarak da çok durgun. Bana göre bu ciddi ve devam eden bir tasarım hatasını gösteriyor. Umarım işler yakında çözülür.
Andrew S

7
@AndrewS Daha önceki araçlara kıyasla makul bir hızda çalışmasını sağlamak için işletim sistemimizi değiştirmemiz gerektiğine üzülüyorum.
Richard Le Mesurier

Yanıtlar:


441

Donanım

Üzgünüm, ancak geliştirme istasyonunu SSD'ye ve tonlarca koça yükseltmek, muhtemelen aşağıdaki noktalardan daha büyük bir etkiye sahiptir.

Araçlar sürümleri

Geliştirme performansının artırılması geliştirme ekipleri için büyük önceliğe sahiptir, bu nedenle en yeni Gradle ve Android Gradle Eklentisini kullandığınızdan emin olun .

Yapılandırma Dosyası

gradle.propertiesHangi dizinde geçerli olursa adlı bir dosya oluşturun :

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

ekleme:

# 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 onları yerleştirirseniz yerel, yerleştirirseniz projectRoot\gradle.propertiesglobal olarak çalışır user_home\.gradle\gradle.properties. Sınıflandırma görevlerini konsoldan veya doğrudan fikirden çalıştırırsanız uygulanan özellikler:

IDE Ayarları

Gradle-IntelliJ entegrasyonunu IDE ayarları GUI'sinden değiştirmek mümkündür. "Çevrimdışı çalışma" etkinleştirildiğinde ( aşağıdaki yava'dan yanıtı kontrol edin ) her "eşitleme derecelendirme dosyasında" gerçek ağ isteklerini devre dışı bırakır.

IDE ayarları

Yerel çoklu dex

APK derlemesinin en yavaş adımlarından biri, java bayt kodunu tek dex dosyasına dönüştürmektir. Yerel multidex'in etkinleştirilmesi (yalnızca hata ayıklama derlemeleri için minSdk 21), takımın bir miktar işi azaltmasına yardımcı olacaktır ( aşağıdaki Aksel Willgert'ten yanıtı kontrol edin ).

Bağımlılıklar

@aarKütüphane alt projeleri yerine bağımlılıkları tercih edin .

Aar paketini mavenCentral , jCenter'da arayın veya gitub'dan herhangi bir kütüphane oluşturmak için jitpack.io kullanın. Bağımlılık kitaplığının kaynaklarını düzenlemiyorsanız, proje kaynaklarınızla her seferinde oluşturmamalısınız.

antivirüs

Proje ve önbellek dosyalarını virüsten koruma taramasından hariç tutmayı düşünün. Bu tabii ki güvenlik ile bir denge (evde denemeyin!). Ancak dallar arasında çok fazla geçiş yaparsanız, antivirüs, geçiş sürecini kullanmasına izin vermeden önce dosyaları yeniden tarar, bu da yapım süresini yavaşlatır (özellikle de gradle dosyaları ve dizinleme görevleri ile AndroidStudio senkronizasyon projesi). Oluşturma süresini ölçün ve ilgili olup olmadığını görmek için antivirüs etkin ve etkin olmayan CPU'yu işleyin.

Bir yapının profilini oluşturma

Gradle, profil oluşturma projeleri için yerleşik desteğe sahiptir . Farklı projeler, eklenti ve özel komut dosyalarının farklı bir kombinasyonunu kullanıyor. Kullanımı --profiledarboğazları bulmanıza yardımcı olacaktır.


1
@aar bağımlılıkları hakkında: örneğin kullanmak dependencies {compile 'com.android.support:support-v4:21.0.+'}yavaş bir çözüm mü? emin değilim
younes0

1
Görüntüleme, bunun gibi bir kütüphane eklediniz : github.com/novak/numberpicker . Bir sorun için kod çözümü sağlayan değeri vardır, ancak yazar maven veya jCenter gibi hiçbir yerde yayınlamaz. Şimdi ya bu kütüphaneyi kaynak olarak projenize getirin ve ana proje her kurulduğunda derleyin ya da derleyin ve proje havuzunuza sadece @ aar verin. Yani bu gerçekten bir kaynak / ikili bağımlılık seçimidir. Eğer kaynağı düzenlemiyorsanız, bağımlılığınızı önceden derlenmiş ikili olarak getirmelisiniz. .Jar olan düz java kütüphaneleri için, .aar olan android kütüphaneleri için
Sergii Pechenizkyi

1
Proje ayarları> gradle. Aşağıdaki ekran görüntüsüne bakın: i.stack.imgur.com/wrwgo.png
Sergii Pechenizkyi

2
Açıklandığı gibi tüm optimizasyonları ayarladım, ancak Android Studio'da uygulamamın başlatılması 3 ila 4 dakika sürerken, Eclipse'de yaklaşık 30 saniye sürdü. Bok. Sadece 12 proje, çalıştırmak için tek bir uygulama! Android dev şimdi çok hantal hale geldi ve bu bir yıldan fazla bir süre sonra.
3c71

1
Tüm optimizasyonları uyguladım ve Eclipse'deki 2-3 saniyeye kıyasla bir HelloWorld apk oluşturmak hala yaklaşık 20 saniye sürüyor.
Pawel

148

Sınıf güncelleme güncellemelerini göz ardı edebilirsiniz.

resim açıklamasını buraya girin

Android Studio 1.5 çalıştıran Windows için: File -> Settings -> Build, Execution, Deployment -> Build tools -> Gradle -> Check Offline work (as shown in image)

~ 30 + saniyeden ~ 3 saniyeye


24
Bu oldukça havalı. Bu çok daha hızlı. Peki bu ne kırıyor?
John Ballinger

2
En iyi çözüm. Bu çözümün yan etkilerini bilebilir miyim
Kavin Varnan

26
@JohnBallinger Çevrimdışı çalışma - Çevrimdışı modda Gradle ile çalışmak için bu onay kutusunu kullanın. Bu durumda Gradle, önbellekten bağımlılıklar kullanır. Gradle, bağımlılık çözümlemesi gerçekleştirmek için ağa erişmeye çalışmaz. Gerekli bağımlılıklar bağımlılıkların önbelleğinde yoksa, derleme yürütme başarısız olur. (Kaynak: jetbrains.com/idea/help/gradle-2.html )
cprcrack

10
Ağ üzerinden geçmeden önce önbelleğe alınmış bağımlılıkları kullanmak varsayılan mıdır? Bu güncelleme bağımlılıkları her gradlezaman çalıştırılır düşünemiyorum . Bu tuhaf.
Ehtesh Choudhury

1
@EhteshChoudhury ÇOK tuhaf. Tüm Gradle / Android Studio geliştirme ortamı çok slooooooow. Çoğu insan Java nedeniyle yavaş olduğunu düşünüyor. IDEA sunucu tarafı Java dev yapmak ve işler çok sorunsuz çalışır.
stepanian

34

Bunun için her yerde arama yaptı ve sonunda bizim için çalışan bir çözüm buldu. Paralel yapıları etkinleştirmek (OSX'te:) preferences -> compiler -> gradle -> "Compile independent modules in parallel"ve 'projeyi otomatik yap' seçeneğini etkinleştirmek, ~ 1 dakikadan ~ 20 saniyeye düşürdü. / U / Covalence sayesinde.

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


56
20 saniye hala çok yavaş.
Johannes Brodwall

6
Bunun yalnızca birden fazla bağımsız modülünüz / projeniz olduğunda yardımcı olduğunu unutmayın. Tek bir modül uygulamasında test ettim ve herhangi bir fark yaratmadı.
Sam

Oldukça büyük bir projem var ve MacBook Pro 2012 Core i7, 8 GB RAM'de 2-3 dakika sürüyor. Tamam mı?
17'de Sermilion

25

Kısa süre önce yeni bir SSD aldım ve Windows'tan Linux'a gittim.Yapım sürelerim artık daha hızlı ve can sıkıcı değil.

Tutulmadan neden daha yavaş olduğu sorusuna doğrudan cevap vermese de, işlemin diskle sınırlı olduğunu ve SSD'ye yükseltmenin (biraz pahalı) bir çözüm olabileceğini gösterir. Sorunu araştıran ve burada biten, deneyimlerimi takdir edecek insanlar olacağını tahmin ediyorum.


11
Ekibimdeki geliştiricilerin çok fazla belleğe sahip hızlı makinelerde hızlı SSD'leri var. Önemsiz bir uygulama için, küçük bir kod değişikliğinden sonra yeniden dağıtım, yaklaşık Eclipse'de neredeyse anında yeniden dağıtılmaya kıyasla yaklaşık ~ 45 saniye sürer. Sade, Android olmayan bir JUnit bile çalıştırmak oldukça yavaştır. Android Studio ve Gradle'a "yükseltme" şu ana kadar büyük bir düşüş oldu. : - /
spaaarky21

@Lionleaf Windows'dan Linux'a ne kadar hızlı geçiş?
younes0

@ younes0 Bilmiyorum. Aynı anda Linux'a, SSD'ye geçtim. Bunun olumlu bir etkisi olduğunu söylemiyorum, sadece hızlanma için değiştirdiğim iki değişken oldu.
Andreas Løve Selvik

4
Benim durumumda Windows'tan Linux'a geçiş% 40 daha hızlı Android sürümleri ile sonuçlandı ... bu yüzden kesinlikle buna değer
kosiara - Bartosz Kosarzycki

@Bartosz Kosarzycki'nin söylediklerini ikinciyim. Dev makinemde virtualbox ile bir Ubuntu vm çalıştırdım. Windows üzerinde ~ 54 saniyelik derleme, aynı donanımda sanal makinenin içinde aynı derleme için ~ 7sn. Linux'a geçerek hızlanma.
Eric Cornelson

20

Android Studio'da Sürüm Oluşturmayı Hızlandır 3.2.1

Yapıların birkaç dakika boyunca Android Studio'da tamamlanmasını beklediğiniz gibi hissettiniz mi? Ben de. Ve bu oldukça can sıkıcı. Neyse ki, bunu iyileştirmek için kullanabileceğiniz birkaç yol vardır. Android, Gradle'ı bina için kullanır. En son sürüm 4.6, önceki sürümlere göre büyük bir performans artışına sahiptir (ayrıntılar için sürüm notlarına bakın).

Adım 1: Gradle sürümünü güncelleyin Bunu yapmanın daha kolay bir yolu şudur: Modül Ayarlarını Aç (projeniz)> Proje Yapısı

resim açıklamasını buraya girin

GÜNCELLEME

Olarak değiştirin 4.6: Gradle sürümü ve Değişim Android Eklenti Version: 3.2.1

resim açıklamasını buraya girin

Gradle Release dağıtımını https://services.gradle.org/distributions/gradle-4.6-all.zip adresinden indirin ve Gradle klasörüne kopyalayın:

resim açıklamasını buraya girin

Son adım, ayrımınızı Ayarlar> Sınıflandırma'ya eklemektir

resim açıklamasını buraya girin

Değişiklikleri kaydetmek için Uygula'yı tıklamayı unutmayın.

Adım 2: Çevrimdışı modunu etkinleştir, Gradle daemon ve proje için paralel derleme Çevrimdışı mod, Gradle'a güncelleştirme kontrollerini yok saymasını söyler. Gradle her seferinde bağımlılık ister ve bu seçeneğe sahip olmak, bağımlılıklar için makinede olanı kullanmasını sağlar. Android stüdyosu ayarından Gradle'a gidin ve Çevrimdışı çalışma kutusuna tıklayın.

resim açıklamasını buraya girin

  1. Android stüdyosundan Derleyici'ye gidin Ayar ve komut satırı kutusuna “- çevrimdışı” ekleyin ve Bağımsız modülleri paralel olarak derle'ye tıklayın.

resim açıklamasını buraya girin

Bir sonraki adım, projeniz için Gradle daemon ve paralel oluşturmayı etkinleştirmektir. Paralel yapılar, büyük veya modüler projelerin daha hızlı inşa edilmesini sağlayacak çoklu modüllere (Gradle'da çoklu proje yapıları) sahip projelerinizin paralel olarak oluşturulmasına neden olur.

resim açıklamasını buraya girin

Bu ayarlar Gradle komut dosyaları dizinindeki gradle.properties adlı bir dosyayı değiştirerek etkinleştirilebilir (örn. ~ / .Gradle / gradle.properties) .Bu seçeneklerden bazıları (örn. Paralel olarak Complie modülleri) Android Studio'dan edinilebilir ve ancak onları gradle.properties dosyasına koymak, terminalden oluştururken ve iş arkadaşlarınızın aynı ayarları kullanacağından emin olur. Ancak bir ekip üzerinde çalışıyorsanız, bazen bu şeyleri yapamazsınız.

# 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

Daemon'u kullanmak, her zaman tüm Gradle uygulamasını başlatmak zorunda kalmayacağından derlemelerinizin daha hızlı başlatılmasını sağlayacaktır. Gradle Daemon varsayılan olarak etkin değildir, ancak geliştiricilerin makineleri için her zaman etkinleştirilmesi önerilir (ancak sürekli entegrasyon sunucuları için devre dışı bırakılması). Bu mod hakkında SSS, https://docs.gradle.org/current/userguide/gradle_daemon.html adresinde bulunabilir . Paralel yapı ayarı bazı projeler için güvensiz olabilir. Gereksinim, tüm modüllerinizin ayrıştırılması veya derlemenizin başarısız olması (bkz. Http://gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects ayrıntılar için ).

Adım 3: Artımlı dexign ve tweak bellek ayarlarını etkinleştirin Artımlı dexing'i açarak yapılarınızı hızlandırabilirsiniz. Modülünüzün derleme dosyasında:

resim açıklamasını buraya girin

Android bloğunuza bu seçeneği ekleyin:

dexOptions {
    incremental true
}

Bu dexOptions bloğunda, dex işlemi için yığın boyutunu da belirtebilirsiniz, örneğin:

dexOptions {
    incremental true
    javaMaxHeapSize "12g"
}

“12g”, 12GB bellektir. Bununla ilgili ek bilgiler burada bulunabilir google.github.io/android-gradle-dsl/current/ Gradle parametrelerini ayarlar dosyasında da yapılandırabilirsiniz, örneğin büyük bir projeniz olması durumunda maksimum yığın boyutunu büyütme:

# 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

Tüm parametre listesine buradan bakın: https://docs.gradle.org/current/userguide/userguide_single.html#sec:gradle_configuration_properties ayrıntılar için .

4. Adım: Antivirüs'ü devre dışı bırakın Proje ve önbellek dosyalarını antivirüs taramasının dışında bırakmak için düşünün. Bu elbette güvenlikle yapılan bir değiş tokuş. Ancak dallar arasında çok fazla geçiş yaparsanız, antivirüs, geçiş sürecini kullanmasına izin vermeden önce dosyaları yeniden tarar, bu da yapım süresini yavaşlatır (özellikle de gradle dosyaları ve dizinleme görevleri ile Android Studio senkronizasyon projesi). Oluşturma süresini ölçün ve ilgili olup olmadığını görmek için antivirüs etkin ve etkin olmayan CPU'yu işleyin. Umarım bu yardımcı olur. Derleme performansını artırmak için herhangi bir sorunuz veya başka ipuçlarınız varsa bir yorum bırakın.

yardımcı link


19

Google play hizmetleri kullanıyorsanız, tüm blob yerine ihtiyacınız olan kütüphanelere bağlı olarak işleri daha hızlı hale getirebilirsiniz.

Tek ihtiyacınız haritalarsa, aşağıdakileri kullanın:

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

onun yerine:

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

İkincisi 20k yöntem getiriyor (bkz. Blog) , sınıf yoluna getirir ve toplam yöntem sayısını 64 binin üzerine çıkarabilir.

Bu, hata ayıklama yapıları için bile koruma veya multidex kullanımını zorlar . Projelerimden biri için aşağıdaki derleme sürelerine sahiptim

  • multidex derlemesi (supportlibrary ile) ~ 40 saniye
  • koruma oluşturmak ~ 20sn
  • yöntem sınırı <64k ~ 5sn olduğunda derle

SDK 21+ üzerinde geliştiriliyorsa , android belgelerinde belirtildiği gibi multidex yapılarını optimize etmek mümkün olacaktır

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
Bunun yerine tüm derleme play-servicekütüphanesi, sadece derlenmiş mapsve locations ve devre dışı multidex. Büyük farkı hissediyorum. Teşekkürler +1
Sami Eltamawy

16

Kabul edilen cevap android studio'nun eski sürümleri içindir ve çoğu hala çalışıyor. Android stüdyosunu güncellemek biraz daha hızlı yaptı. Xms ve Xmx artışıyla otomatik olarak artacağından yığın boyutunu belirtmeye zahmet etmeyin. İşte VMoptions ile bazı değişiklikler

  1. Bin klasöründe ortam yapılandırmasını ayarlamak için bir studio.vmoptions dosyası vardır. Benim durumumda bu studio64.vmoptions Henüz eklenmediyse aşağıdaki satırları ekleyin ve dosyayı kaydedin. Benim durumumda 8GB RAM var.

    -Xms4096m
    -Xmx4096m
    -XX:MaxPermSize=2048m
    -XX:+CMSClassUnloadingEnabled
    -XX:+CMSPermGenSweepingEnabled 
    -XX:+HeapDumpOnOutOfMemoryError
    -Dfile.encoding=utf-8`
  2. Android stüdyosunu başlatın. Dosya-> Ayarlar-> Derleme, Yürütme, Dağıtım-> Derleyici'ye gidin

    • Derleme bağımsız modüllerini paralel olarak kontrol edin
    • Komut satırı Seçeneklerine şunu yazın: --offline
    • Projeyi otomatik yap seçeneğini işaretleyin
    • İstek üzerine yapılandırmayı kontrol edin

Mac kullanılması durumunda, ilk önce vmoptions'ı bulamadım. Her neyse, MAC OSX'teki vmoptions'ı nasıl değiştirebileceğimiz hakkında güzel bir makale . Bu makaleden alıntılar burada.

Terminalinizi açın ve MAC OSX'te vmoptions'ı açmak için bu komutu koyun:

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

1
AS 2.3.2'den itibaren vim seçeneklerini yardım-> Özel Vm Seçeneklerini Düzenle
Sam

15

Aşağıdaki dizinde gradle.properties adlı bir dosya oluşturmanız yeterlidir:

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

Bu satırı dosyaya ekleyin:

org.gradle.daemon=true

Benim için hız şimdi Eclipse'e eşit.

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


Mac'te .gradle klasörünü göremiyorum. Nasıl açılır?
Dharmik

@Dharmik: Belki Android Studio'yu farklı bir kullanıcı adı altında yüklediniz. Aksi takdirde, doğru şekilde kurulmamış sanırım.
Yster

1
Hayır, başka bir sorun vardı .. ".gradle" sistem klasörü gizlendi .. Bu yüzden Git => Klasöre Git ve .gradle klasörü buldum .. Hızlı cevap için teşekkürler ..
Dharmik

14

Komut satırından gradle kullanırsanız işlemi daha hızlı yapabilirsiniz. IDE geliştiricileri için yapacak çok optimizasyon var. Ama bu sadece erken bir versiyon.

Daha fazla bilgi için g + 'daki bazı tartışmaları içeren bu tartışmayı okuyun .


3
Bu, 2016'da bile doğru gibi görünüyor
Leo, Monica Cellio'yu

11

Subversion ile senkronize edilen bir proje çalışıyorsa ve bu hala devam ediyorsa, bunun Android Studio'daki iş akışı sürecini yavaşlatabileceğini düşünüyorum. Örneğin, çok yavaş çalışıyorsa: Uygulamam hala cihazımda çalışırken bir sınıfta kaydırma, xml vb.

  • Tercihler'de Sürüm Denetimi'ne gidin ve Subversion'dan None'a ayarlayın.resim açıklamasını buraya girin

1
Günümü kurtarıyorsun: 2/4 dk -> 15 saniye (Tortoise HG'yi proje için devre dışı bıraktım).
kaftanati

3
Hala Subversion kullanıyorsa, Git veya Mercurial'a geçmeleri gerekir
Leo, Monica Cellio'yu

8

Android Studio 2.3 Sonrası Güncelleme

Tüm cevaplar harika ve yapım hızını artırmak için bu yöntemleri bu yöntemle kullanmanızı tavsiye ediyorum.

Eylül 2016'da Android 2.2'nin piyasaya sürülmesinden sonra Android, şimdi Android Studio 2.3 Canary'den resmi olan yapım performansını hızlandırmak için deneysel yapı önbellek özelliği yayınladı gradle. (Resmi Sürüm Notu)

Aynı veya farklı Android'in önceki sürümlerinde oluşturulmuş dosyaları / dizinleri depolayıp yeniden kullanarak, varsayılan olarak etkinleştirilmiş yeni bir derleme önbellek özelliği sunar (tam derlemeler, artımlı derlemeler ve anında çalıştırma dahil) derleme sürelerini hızlandırabilir projesi.

Nasıl kullanılır:

gradle.propertiesDosyanıza aşağıdaki satırı ekleyin

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.

Önbelleği temizleyin:

  • cleanBuildCacheDerleme önbelleğini daha kolay temizlemeniz için çağrılan yeni bir Gradle görevi var . Terminalinize aşağıdakileri yazarak kullanabilirsiniz:

    ./gradlew cleanBuildCache

  • VEYA Konumdaki tüm dosya deposunu silerek Android studio 2.2 önbelleğini temizleyebilirsiniz

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


7

Bu ayarları değiştirdikten sonra derleme sürem 10 dakika ~ 10 saniye olarak değiştirildi.

Aşama 1:

Ayarlar (ctrl + Alt + S) ->

Oluşturma, Yürütme, Dağıtım ->

Derleyici ->

--offlinekomut satırı Seçenekler kutusuna " " yazın.

Adım 2:

“Bağımsız modülleri paralel olarak derleyin” onay kutusunu işaretleyin.

& Uygula -> Tamam'ı tıklayın

resim açıklamasını buraya girin

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

dezavantajı:

Build.gradle dosyanızda belirtilen bağımlılıkların en son sürümlerini geri alamazsınız. İçe aktarılan bu kitaplıkların önbelleğe alınmış bir anlık görüntüsünü kullandığından daha hızlı çalışır.

Önemli Not : Uygulamayı dağıtırken bu ayarları kaldırın ve en son bağımlılık sürümleriyle derleyin.


6

Mayın ile çözüldü

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

Kepçe yapıları 8 dakikadan 3 saniyeye çıktı.


4

İşte bu başlangıç ​​Android programcısının (eski profesyonel programcı, yıllar önce) Android Studio 2.2'yi hızlandırmasına yardımcı olan şey. Bunun bir rehash olduğunu biliyorum, ama sadece özetlemek gerekirse bir yerde .

İlk yapılar hala acımasızca yavaş olabilir, ancak çalışan uygulamaların yeniden başlatılması artık genellikle çok tolere edilebilir. Optimal bir PC kullanıyorum: AMD Dört Çekirdekli A8-7410 CPU, 8MB RAM, SSD olmayan HD, Win 10. (Ve bu benim ilk Stack Overflow gönderim ....;)

AYARLARDA -> GRADLE:

"Çevrimdışı çalışma" için evet (bu belki de en fazla içe aktarma ayarıdır).

AYARLARDA -> DERLEME:

"Bağımsız modülleri paralel olarak derle" için evet (bunun aslında çok çekirdekli CPU'ların kullanılmasına yardımcı olup olmadığından emin değilim).

GRADLE SCRIPTS , "build.gradle (Modül: uygulama)":

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

AYRICA HİSSE SENETLERİNDE , "gradle.properties (Proje Özellikleri)":

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

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

Ayrıca , emülatör yerine fiziksel bir cihaz üzerinde test yapmak benim için iyi çalışıyor; ayağa kalkan küçük bir tablet uygundur.


4

Başka bir performans geliştirme ipucu:

Android Studio 3.0 , D8 adlı yeni DEX derleyicisini içerir.

"Dex derleyicisi günlük uygulama geliştirmenizde çoğunlukla başlık altında çalışır, ancak uygulamanızın oluşturma süresini, .dex dosya boyutunu ve çalışma zamanı performansını doğrudan etkiler."

"Ve yeni D8 derleyicisini mevcut DX derleyicisiyle karşılaştırırken, D8 daha hızlı derler ve aynı veya daha iyi uygulama çalışma zamanı performansına sahipken daha küçük .dex dosyaları verir."

D8 isteğe bağlıdır - bunu kullanın, projenin derecesine koymak zorundayız.

android.enableD8=true

Daha fazla bilgi: https://android-developers.googleblog.com/2017/08/next-generation-dex-compiler-now-in.html

PS. İnşa süremi yaklaşık% 30 oranında arttırır.


1

Bu kurulum benim için gerçekten hızlı gidiyor (derleme yaklaşık 2 saniye)

build.gradle

android {

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

gradle.properties

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

benim bilgisayarım:

  • CPU Intel (R) Pentium (R) CPU G2030 @ 3.00GHz, 3000 Mhz, 2 procesadores prensibi, 2 procesadores lógicos
  • x64
  • Microsoft Windows 7 Professional
  • (RAM) 16,0 GB

proje dosyaları
- Tümü yerel HD'de bulunur


1

Lütfen aşağıdaki adımları izleyin.

  1. Çevrimdışı modu etkinleştir: Lütfen aşağıdaki yazdırma ekranını kontrol edin.

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

  2. Anında Çalıştırmayı Etkinleştir: Lütfen aşağıdaki yazdırma ekranını kontrol edin.

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

    Anında çalıştırma hakkında daha fazla bilgi edinmek istiyorsanız lütfen android geliştirici sitesini ziyaret edin.


1

Stüdyonun sağ tarafındaki gradle menüsünü açmayı ve yalnızca değiştirdiğiniz modülleri monte etmeyi deneyebilir, ardından install komutunu çalıştırabilirsiniz. Çalıştır düğmesine bastığınızda, oluşturduğu kodda yapmış olabileceğiniz değişikliklerden bağımsız olarak her şeyi birleştirir


0

Gradle'da uzman olmaktan çok uzakım ancak ortamım .gradle / init.gradle

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

Yine de bu hattın neden orada olduğu hakkında hiçbir fikrim yok, ama

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

ve şimdi Android Studio & Gradle buildind şemasına küfretmeden çalışabilirim.


sizin durumunuzda yapay bir kütüphane muhtemelen bir kütüphane önbelleği olarak kullanılmıştır. Kitaplığa sahip olup olmadığına bakılan yapay sunucuya başvurun. Cevabınız evet ise size iade eder, aksi takdirde mavencentral'dan alır ve size geri döner.
Fabio Marcolini

0

Bizim özel durumumuzda, sorun retrolambdaya sahip olmaktan kaynaklanıyordu. çekirdek modüllerimizde hiçbir kod değiştirilmemiş olsa bile, uygulamayı başlatmaya çalıştığımız her projeyi ve alt projeyi yeniden derlemeye zorlayan eklentisinin .

Retrolamba'nın çıkarılması bizim için düzeltildi. Umarım birine yardımcı olur.


0

Önce bunu deneyin. Benim kişisel deneyimim.

Ben de aynı problemi yaşadım. Yaptığım şey sadece antivirüsün kalıcı olarak devre dışı bırakılması (Mine Avast Security 2015 idi). Antivirüsün devre dışı bırakılmasından hemen sonra, her şey yolunda gitti. sınıf başarıyla tamamlandı. Şu andan itibaren saniye içinde kepçe bitiyor (Sadece 5-10 saniye sürüyor).


0

Merhaba, bunun çok geç bir cevap olduğunu biliyorum ama belki
benim durumumda birine yardım ediyordum

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

Uygulamamda Gradle bağımlılığı
ancak kütüphanelerimden birinde

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

En son sürüme geçtikten sonra sorunum çözüldü.


0

Adımları takip etmek 10 kat daha hızlı hale getirecek ve inşa süresini% 90 azaltacaktır

Önce aşağıdaki dizinde gradle.properties adlı bir dosya oluşturun:

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

Bu satırı dosyaya ekleyin:

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

Android Studio'da bu seçenekleri işaretleyin

resim açıklamasını buraya girin



0

Bir önemsiz (bir resoruce xml) değişim hala aldı 10 dakika . @Rivare'nin cevabında söylediği gibi , bir komut satırı derlemesi daha hızlıdır (bunu 15 saniyeye indirdi ).
En azından Windows için komut satırından hızlı bir yapı oluşturmak için bazı adımlar.

  1. Git projelerinizi kök (gradlew.bat olduğu) için:

    cd c: \ android \ MaskActivity

  2. derlemeyi yürütün :

    Kepçe montajı

  3. kaldırmak doğrudan telefondan apk (sürükle o kaldırmak için).

  4. Derleme tamamlandığında, Windows Görev Yöneticisi'ni kullanarak BIG java işlemini öldürün .

VEYA Windows makinenizde unix araçlarınız varsa:

ps

"pid" ler gösterilir:

kill -9 <pid>
  1. Şimdi apk'nizi yükleyin :

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


0

Göre android belgeler , uygulama modülünün gradle dosyasında bu ekleyin.

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

0

Android ortamını düşük yapılandırma makinesinde çalıştırmak için.

  1. Tarayıcıdaki işlenmemiş web sekmelerini kapatın
  2. Antivirüs kullanıcıları için, otomatik olarak oluşturulan derleme klasörünü hariç tutun
  3. Android stüdyosu var 1.2 Gb varsayılan yığın 512 MB'a düşebilir Yardım> Özel VM seçeneklerini düzenle studio.vmoptions -Xmx512m Layouts performansı hızlanacak

  4. Gradle için Android stüdyo Mkae'nin temel bileşenlerinden biri şu anda olduğu gibi 3.0beta en sonuncusu

Aşağıdaki ipuçları kod kalitesini etkileyebileceğinden lütfen dikkatli kullanın:

  1. Studio, açıldığında Güç güvenli Mod içerir, tiftik, kod tamamlamaları vb. Arka plan işlemlerini kapatır.

  2. Gerektiğinde manuel olarak lintcheck çalıştırabilirsiniz ./gradlew lint

  3. Birçoğu ortalama 2 GB RAM tüketen Android emülatörlerini kullanıyor, bu nedenle mümkünse gerçek Android cihazı kullanın, bunlar bilgisayarınızdaki kaynak yükünüzü azaltacaktır. Alternatif olarak, taklitçinin RAM'ini azaltabilirsiniz ve bilgisayarınızdaki sanal bellek tüketimini otomatik olarak azaltacaktır. bunu sanal cihaz yapılandırmasında ve ilerleme ayarında bulabilirsiniz.

  4. Gradle çevrimdışı modu, bant genişliği sınırlı kullanıcıların derleme bağımlılıklarının indirilmesini devre dışı bırakma özelliğidir. Android stüdyosunun performansını artırmaya yardımcı olacak arka plan işlemini azaltacaktır.

  5. Android stüdyosu, birden fazla modülü paralel olarak derlemek için bir optimizasyon sunar. Düşük RAM makinelerinde bu özellik muhtemelen performans üzerinde olumsuz bir etkiye sahip olacaktır. Derleyici ayarları iletişim kutusunda devre dışı bırakabilirsiniz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.