Gradle 및 Android Studio를 통한 앱 빌드 및 실행이 Eclipse를 통한 속도보다 느립니다.


461

건물마다 매번 약 20-30 초가 걸리는 다중 프로젝트 (~ 10 개 모듈)가 있습니다. Android Studio에서 실행을 누르면 앱을 다시 빌드 할 때마다 기다려야합니다. 매우 느립니다.

Android Studio에서 빌드 프로세스를 자동화 할 수 있습니까? 또는이 프로세스를 더 빠르게 만드는 방법에 대한 조언이 있습니까?

Eclipse에서 자동 빌드 덕분에 에뮬레이터에서 동일한 프로젝트를 실행하는 데 약 3-5 초가 걸립니다.

이것은 내 build.gradle 파일 (앱 모듈)입니다.

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
현재 Gradle 기반 빌드 시스템이나 Android Studio가 프로덕션 등급이 아님을 명심하십시오.
CommonsWare

11
여기에서 보내는 시간은 DEXing 단계에있을 가능성이 높습니다. 불행히도, 안드로이드 스튜디오의 make는 매번 청소를 수행하여 이전에 dex 된 파일이 삭제되는 것처럼 보입니다. 바라건대, 곧 점진적인 빌드 픽스를 보게 될 것입니다.
Richard J. Ross III

3
그 동안 기본 Gradle 작업을 변경하여 항상 깨끗하게 수행하지는 않는 간단한 방법이 있습니까?
sigmabeta

10
@CommonsWare 잘, 지금 우리가 버전 1.02에 대한 변명은 없지만 여전히 큰 문제입니다. 4GB 쿼드 코어 랩톱을 실행하는 Android 스튜디오에서는 Hello World 프로젝트의 단일 인스턴스를 보유하는 약 3.75GB의 램을 사용합니다. 결과적으로 매우 느립니다. 그것은 심각하고 진행중인 디자인 결함을 나타냅니다. 곧 문제가 해결되기를 바랍니다.
Andrew S

7
@AndrewS 나는 이전 도구와 비교하여 gradle이 합리적인 속도로 실행되도록 OS를 변경 해야하는 것이 유감이라고 생각합니다.
Richard Le Mesurier

답변:


441

하드웨어

죄송합니다. 개발 스테이션을 SSD 및 숫양으로 업그레이드하면 아래의 조합보다 훨씬 큰 영향을 미칩니다.

도구 버전

개발 팀에게는 빌드 성능 향상이 최우선 순위이므로 최신 GradleAndroid Gradle 플러그인을 사용하고 있는지 확인하십시오 .

구성 파일

gradle.properties적용되는 디렉토리에 이름이 지정된 파일을 작성하십시오 .

  • /home/<username>/.gradle/ (리눅스)
  • /Users/<username>/.gradle/ (맥)
  • C:\Users\<username>\.gradle (윈도우)

추가 :

# 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 속성은에 배치하면 로컬로 작동하고에 배치하면 projectRoot\gradle.properties전역 적으로 작동합니다 user_home\.gradle\gradle.properties. 콘솔에서 또는 아이디어에서 직접 gradle 작업을 실행하는 경우 적용되는 속성 :

IDE 설정

IDE 설정 GUI에서 Gradle-IntelliJ 통합을 조정할 수 있습니다. "오프라인 작업"을 활성화 하면 ( 아래 yava의 답변 확인 ) 모든 "sync gradle file"에서 실제 네트워크 요청이 비활성화됩니다.

IDE 설정

네이티브 멀티 덱스

apk 빌드의 가장 느린 단계 중 하나는 Java 바이트 코드를 단일 dex 파일로 변환하는 것입니다. 네이티브 멀티 덱스 (디버그 빌드의 경우 minSdk 21 만)를 활성화하면 툴링 작업량을 줄이는 데 도움이됩니다 ( 아래 Aksel Willgert의 답변 확인 ).

의존성

@aar라이브러리 하위 프로젝트보다 종속성을 선호하십시오 .

mavenCentral , jCenter 에서 aar 패키지를 검색 하거나 jitpack.io 를 사용 하여 github에서 라이브러리를 빌드하십시오. 종속성 라이브러리의 소스를 편집하지 않는 경우 프로젝트 소스로 매번 빌드하지 않아야합니다.

안티 바이러스

바이러스 백신 검색에서 프로젝트 및 캐시 파일을 제외하십시오. 이것은 분명히 보안과의 절충입니다 (집에서 시도하지 마십시오!). 그러나 브랜치 사이를 많이 전환하면 안티 바이러스는 gradle 프로세스가 사용하기 전에 파일을 다시 검색하여 빌드 시간이 느려집니다 (특히 gradle 파일 및 인덱싱 작업이있는 AndroidStudio 동기화 프로젝트). 바이러스 백신 사용 여부에 관계없이 빌드 시간을 측정하고 CPU가 관련되어 있는지 확인하십시오.

빌드 프로파일 링

Gradle은 프로파일 링 프로젝트 를 기본적으로 지원 합니다 . 다른 프로젝트는 서로 다른 플러그인과 사용자 지정 스크립트 조합을 사용하고 있습니다. 를 사용 --profile하면 병목 현상을 찾는 데 도움이됩니다.


1
@ aar depedencies에 대해 : 예를 들어 dependencies {compile 'com.android.support:support-v4:21.0.+'}느린 솔루션입니까? 잘 모르겠다
younes0

1
이미징, github.com/novak/numberpicker 와 같은 라이브러리를 추가 했습니다 . 가치가 있으며 문제에 대한 코드 솔루션을 제공하지만 작성자는 maven 또는 jCenter와 같은 곳에서는 게시하지 않습니다. 이제 라이브러리를 소스로 프로젝트에 가져 와서 메인 프로젝트가 빌드 될 때마다 빌드하거나 한 번 컴파일하고 @aar 만 프로젝트 저장소에 커밋합니다. 따라서 실제로 소스 / 이진 종속성 선택입니다. 소스를 편집하지 않으면 종속성을 사전 컴파일 된 바이너리로 가져와야합니다. .jar 인 일반 Java 라이브러리의 경우 .aar 인 Android 라이브러리의 경우
Sergii Pechenizkyi

1
프로젝트 설정> gradle입니다. 아래 스크린 샷을 참조하십시오 : i.stack.imgur.com/wrwgo.png
Sergii Pechenizkyi

2
설명 된대로 모든 최적화를 설정했지만 Android Studio에서는 앱을 시작하는 데 3 ~ 4 분이 걸리지 만 Eclipse에서는 약 30 초가 걸렸습니다. 쓰레기. 12 개의 프로젝트, 하나의 단일 앱만 실행! 안드로이드 개발자는 이제 너무 번거로워졌고 1 년 이상이 지났습니다.
3c71

1
모든 최적화를 적용했지만 Eclipse에서 2-3 초에 비해 HelloWorld APK를 빌드하는 데 여전히 약 20 초가 걸립니다.
Pawel

148

gradle 업데이트 날짜 확인을 무시할 수 있습니다.

여기에 이미지 설명을 입력하십시오

Android Studio 1.5를 실행하는 Windows의 경우 : File -> Settings -> Build, Execution, Deployment -> Build tools -> Gradle -> Check Offline work (as shown in image)

~ 30 + 초에서 ~ 3 초로 감소


24
꽤 괜찮은데. 훨씬 빠릅니다. 그러나 이것이 무엇입니까?
John Ballinger

2
최고의 솔루션. 나는이 솔루션의 부작용을 알 수
Kavin Varnan에게

26
@JohnBallinger 오프라인 작업-오프라인 모드에서 Gradle에 대해 작업하려면이 확인란을 사용하십시오. 이 경우 Gradle은 캐시의 종속성을 사용합니다. Gradle은 네트워크에 액세스하여 종속성 확인을 수행하지 않습니다. 종속성의 캐시에 필요한 종속성이 없으면 빌드 실행이 실패합니다. (출처 : jetbrains.com/idea/help/gradle-2.html )
cprcrack

10
네트워크를 통과하기 전에 먼저 캐시 된 종속성을 사용하는 것이 기본입니까? 이것이 gradle실행될 때마다 업데이트 된 종속성을 확인한다고 상상할 수 없습니다 . 기괴하다.
Ehtesh Choudhury

1
@EhteshChoudhury 그것은 매우 기이합니다. 전체 Gradle / Android Studio 개발 환경은 매우 어둡습니다. 대부분의 사람들은 자바 때문에 느리다고 생각합니다. IDEA에서 서버 측 Java 개발자를 수행하고 매우 원활하게 실행됩니다.
stepanian

34

이 모든 곳을 검색하고 마침내 우리에게 맞는 솔루션을 찾았습니다. 병렬 빌드 (OSX :) preferences -> compiler -> gradle -> "Compile independent modules in parallel"를 활성화하고 '자동으로 프로젝트 만들기'를 활성화하면 ~ 1 분에서 ~ 20 초로 줄었습니다. / u / Covalence에게 감사합니다.

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


56
20 초가 여전히 너무 느립니다.
Johannes Brodwall

6
이것은 독립적 인 모듈 / 프로젝트가 여러 개인 경우에만 도움이됩니다. 단일 모듈 앱에서 테스트했지만 아무런 차이가 없었습니다.
Sam

나는 꽤 큰 프로젝트를 가지고 있으며 MacBook Pro 2012 Core i7, 8GB RAM에서 2-3 분이 걸립니다. 괜찮아?
Sermilion

25

최근에 새로운 SSD를 구입하여 Windows에서 Linux로갔습니다. 이제 빌드 시간이 훨씬 빨라지고 더 이상 성가신 일이 아닙니다.

이클립스보다 왜 느린 지에 대한 질문에 직접 대답하지는 않지만 프로세스가 디스크 바운드되어 SSD로 업그레이드하는 것이 (약간 비싼) 솔루션 일 수 있음을 보여줍니다. 나는 내 경험을 고맙게 여기는 사람들 이이 문제를 인터넷 검색하고 끝나게 될 것이라고 생각합니다.


11
우리 팀의 개발자들은 많은 양의 메모리가있는 빠른 컴퓨터에 빠른 SSD를 가지고 있습니다. 사소한 앱의 경우, 사소한 코드 변경 후에 재배치하는 데 Eclipse에서 거의 즉시 재배치하는 데 비해 약 45 초가 걸립니다. Android 이외의 일반 JUnit을 실행하더라도 속도가 너무 느립니다. Android Studio 및 Gradle 로의 "업그레이드"는 지금까지 크게 다운 그레이드되었습니다. :-/
spaaarky21

@Lionleaf Windows에서 Linux로 얼마나 빨리 전환합니까?
younes0

@ younes0 모르겠습니다. SSD로 전환하는 동시에 Linux로 전환했습니다. 나는 그것이 긍정적 인 효과가 있다고 말하지는 않습니다. 속도 향상을 위해 내가 변경 한 두 변수 일뿐입니다.
Andreas Løve Selvik

4
그것은 확실히 가치가 있도록 Windows에서 Linux로 내 경우 전환에 ... 빠른 안드로이드 빌드 40 %의 결과
kosiara - 바르 토스 Kosarzycki

나는 @Bartosz Kosarzycki가 말한 것을 두 번째입니다. 내 dev 컴퓨터에서 virtualbox와 함께 Ubuntu vm을 실행했습니다. Windows에서 최대 54 초 빌드, 동일한 하드웨어에서 가상 머신 내부의 동일한 빌드에 대해 ~ 7sec Linux로 이동하여 미친듯한 속도 향상.
Eric Cornelson

20

Android Studio 3.2.1에서 Gradle 빌드 속도 향상

몇 분 동안 Android Studio에서 빌드가 완료되기를 기다리는 느낌이 있습니까? 나도. 그리고 그것은 꽤 성가시다. 다행히도이를 개선하기 위해 사용할 수있는 몇 가지 방법이 있습니다. Android는 빌드에 Gradle을 사용합니다. 최신 버전 인 4.6은 이전 버전보다 성능이 크게 향상되었습니다 (자세한 내용은 릴리스 정보 참조).

1 단계 : Gradle 버전 업데이트이를 수행하는 더 쉬운 방법은 다음으로 이동하는 것입니다. 모듈 설정 열기 (프로젝트)> 프로젝트 구조

여기에 이미지 설명을 입력하십시오

최신 정보

Gradle 버전으로 변경 : 4.6Android 플러그인 버전으로 변경 : 3.2.1

여기에 이미지 설명을 입력하십시오

https://services.gradle.org/distributions/gradle-4.6-all.zip 에서 Gradle Release 배포판을 다운로드 하여 Gradle 폴더에 복사하십시오.

여기에 이미지 설명을 입력하십시오

마지막 단계는 설정> Gradle에서 차별을 추가하는 것입니다

여기에 이미지 설명을 입력하십시오

변경 사항을 저장하려면 적용을 클릭하는 것을 잊지 마십시오.

2 단계 : 오프라인 모드, Gradle 데몬 및 프로젝트에 대한 병렬 빌드를 사용하도록 설정 오프라인 모드는 Gradle에게 최신 업데이트 확인을 무시하도록 지시합니다. Gradle은 항상 종속성을 요구 하며이 옵션을 사용하면 시스템에 이미있는 것을 종속성으로 사용합니다. android studio Setting에서 Gradle로 이동하여 Offline 작업 상자를 클릭하십시오.

여기에 이미지 설명을 입력하십시오

  1. android studio 설정에서 컴파일러로 이동하여 명령 줄 상자에“— 오프라인”을 추가하고 독립 모듈 컴파일을 병렬로 클릭하십시오.

여기에 이미지 설명을 입력하십시오

다음 단계는 프로젝트에 Gradle 데몬 및 병렬 빌드를 활성화하는 것입니다. 병렬 빌드는 여러 모듈 (Gradle의 다중 프로젝트 빌드)이있는 프로젝트를 병렬로 빌드하므로 대규모 또는 모듈 식 프로젝트를 더 빠르게 빌드 할 수 있습니다.

여기에 이미지 설명을 입력하십시오

이러한 설정은 Gradle 스크립트 디렉토리 (예 : ~ / .gradle / gradle.properties)에서 gradle.properties라는 파일을 수정하여 활성화 할 수 있습니다. 이러한 옵션 중 일부 (예 : 병렬 모듈 병렬)는 Android Studio에서 사용할 수 있으며 터미널에서 빌드 할 때 gradle.properties 파일에 저장하면 동료가 동일한 설정을 사용할 수 있습니다. 그러나 팀에서 일하는 경우 때로는이 일을 할 수 없습니다.

# 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

데몬을 사용하면 매번 전체 Gradle 응용 프로그램을 시작할 필요가 없으므로 빌드가 더 빨리 시작됩니다. Gradle 데몬은 기본적으로 활성화되어 있지 않지만 개발자 컴퓨터에서는 항상 활성화하는 것이 좋습니다 (그러나 지속적인 통합 서버에서는 비활성화되어 있음). 이 모드에 대한 FAQ는 https://docs.gradle.org/current/userguide/gradle_daemon.html 에서 찾을 수 있습니다 . 일부 프로젝트에서는 병렬 빌드 설정이 안전하지 않을 수 있습니다. 모든 모듈을 분리해야하거나 빌드가 실패 할 수 있어야합니다 (자세한 내용은 http://gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects 참조).

3 단계 : 증 분식 dexign 사용 및 메모리 설정 조정 증 분식 dexing을 설정하여 빌드 속도를 높일 수 있습니다. 모듈의 빌드 파일에서 :

여기에 이미지 설명을 입력하십시오

이 옵션을 안드로이드 블록에 추가하십시오 :

dexOptions {
    incremental true
}

해당 dexOptions 블록에서 dex 프로세스의 힙 크기를 지정할 수도 있습니다 (예 :

dexOptions {
    incremental true
    javaMaxHeapSize "12g"
}

여기서 "12g"는 12GB의 메모리입니다. 이에 대한 추가 정보는 google.github.io/android-gradle-dsl/current/에서 찾을 수 있습니다. 설정 파일에서 Gradle 매개 변수를 구성 할 수도 있습니다 (예 : 대규모 프로젝트가있는 경우 최대 힙 크기 늘리기).

# 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

자세한 내용은 https://docs.gradle.org/current/userguide/userguide_single.html#sec:gradle_configuration_properties 에서 모든 매개 변수 목록을 참조 하십시오.

4 단계 : 바이러스 백신 사용 안 함 바이러스 백신 검색에서 프로젝트 및 캐시 파일을 제외하는 것을 고려하십시오. 이것은 분명히 보안과의 균형입니다. 그러나 지점을 많이 전환하면 안티 바이러스는 gradle 프로세스가 사용하기 전에 파일을 다시 검색하여 빌드 시간이 느려집니다 (특히 gradle 파일 및 인덱싱 작업이있는 Android Studio 동기화 프로젝트). 바이러스 백신 사용 여부에 관계없이 빌드 시간을 측정하고 CPU가 관련되어 있는지 확인하십시오. 이게 도움이 되길 바란다. 빌드 성능 향상에 대한 질문이나 다른 팁이 있으면 의견을 남겨주십시오.

유용한 링크


19

Google Play 서비스를 사용하는 경우 전체 얼룩 대신 필요한 라이브러리에 따라 작업 속도가 빨라질 수 있습니다.

지도 만 필요한 경우 다음을 사용하십시오.

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

대신에:

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

후자는 20k 개의 메소드 (블로그 참조) 를 클래스 경로로 가져 오며 총 메소드 수는 64k 이상입니다.

디버그 빌드에도 proguard 또는 multidex를 사용해야 합니다. 내 프로젝트 중 하나에 대해 다음 빌드 시간이있었습니다.

  • 멀티 덱스 빌드 (supportlibrary 포함) ~ 40sec
  • 빌드 방지 ~ 20sec
  • 메소드 제한 <64k ~ 5sec 인 경우 빌드

SDK 21 이상에서 개발하는 경우 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
        }
    }
    ...
}

2
대신 모든 컴파일하는 play-service라이브러리를, 나는 단지 컴파일 mapslocations 과를 사용할 수 없습니다 multidex. 나는 큰 차이를 느낀다. 감사합니다 +1
Sami Eltamawy

16

허용되는 답변은 이전 버전의 Android Studio에 대한 것이며 대부분은 여전히 ​​작동합니다. 안드로이드 스튜디오를 업데이트하면 조금 빨라졌습니다. Xms 및 Xmx가 증가함에 따라 힙 크기가 자동으로 증가하므로 힙 크기를 지정하지 않아도됩니다. 다음은 VM 옵션을 수정 한 것입니다.

  1. bin 폴더에는 환경 구성을 설정하는 studio.vmoptions 파일이 있습니다. 필자의 경우 이것은 studio64.vmoptions입니다. 다음 행을 아직 추가하지 않은 경우 추가하고 파일을 저장하십시오. 제 경우에는 8GB RAM이 있습니다.

    -Xms4096m
    -Xmx4096m
    -XX:MaxPermSize=2048m
    -XX:+CMSClassUnloadingEnabled
    -XX:+CMSPermGenSweepingEnabled 
    -XX:+HeapDumpOnOutOfMemoryError
    -Dfile.encoding=utf-8`
  2. 안드로이드 스튜디오를 시작하십시오. 파일-> 설정-> 빌드, 실행, 배포-> 컴파일러로 이동하십시오.

    • 독립적 인 모듈을 병렬로 컴파일 확인
    • 명령 행 옵션에서 다음을 작성하십시오. --offline
    • 프로젝트 자동 확인을 선택하십시오.
    • 주문형 구성 확인

mac을 사용하는 경우 처음에는 vmoptions를 찾을 수 없었습니다. 어쨌든, MAC OSX에서 vmoptions를 변경하는 방법에 대한 좋은 기사가 있습니다 . 이 기사에서 인용하십시오.

터미널을 열고 다음 명령을 입력하여 MAC OSX에서 vmoptions를 엽니 다.

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

1
AS 2.3.2부터 도움말-> 사용자 정의 Vm 옵션 편집
Sam

15

다음 디렉토리에 gradle.properties라는 파일을 작성하십시오.

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

이 줄을 파일에 추가하십시오.

org.gradle.daemon=true

나를 위해 속도는 이제 이클립스와 같습니다.

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


Mac에서 .gradle 폴더를 볼 수 없습니다. 그것을 여는 방법?
Dharmik

@Dharmik : 다른 사용자 이름으로 Android Studio를 설치했을 수 있습니다. 그렇지 않으면 올바르게 설치되지 않은 것 같습니다.
Yster

1
아니요. 다른 문제였습니다. ".gradle"시스템 폴더가 숨겨져 있습니다. 그래서 Go => Go To Folder로 이동하여 .gradle 폴더를 찾았습니다 .. 빠른 답변 감사합니다 ..
Dharmik

14

커맨드 라인에서 gradle을 사용하면 프로세스를 더 빠르게 만들 수 있습니다. IDE 개발자를위한 많은 최적화가 있습니다. 그러나 이것은 초기 버전 일뿐입니다.

자세한 내용 은 일부 개발자와 함께 g +에 대한 토론 을 읽으십시오 .


3
이것은 2016 년 지금도 사실로 보인다
레오 모니카 Cellio 지원

11

누구든지 Subversion을 통해 동기화 된 프로젝트를 진행하고 있는데도 여전히 발생하는 경우 Android Studio의 워크 플로 프로세스가 느려질 수 있다고 생각합니다. 예를 들어 클래스, xml 등에서 스크롤하는 동안 앱이 여전히 내 장치에서 실행되는 동안 매우 느리게 작동하는 경우를 예로들 수 있습니다.

  • 환경 설정에서 버전 관리로 이동하여 Subversion에서 None으로 설정하십시오.여기에 이미지 설명을 입력하십시오

1
하루를 저장하십시오 : 2/4 min-> 15sec (프로젝트에 Tortoise HG를 비활성화했습니다).
kaftanati

3
사람이 여전히 서브 버전을 사용하는 경우, 그들은 힘내이나 의욕로 전환해야
레오 모니카 Cellio 지원

8

Android Studio 2.3 이후 업데이트

모든 답변이 훌륭하므로 빌드 속도를 향상시키기 위해이 방법을 사용하는 것이 좋습니다.

2016 년 9 월 Android 2.2가 출시 된 후 Android는 빌드 성능 을 높이기 위해 실험용 빌드 캐시 기능을 출시 했으며 gradle, 이제 Android Studio 2.3 Canary의 공식 기능입니다. (공식 릴리스 노트)

기본적으로 사용 가능한 새로운 빌드 캐시 기능을 도입하여 동일하거나 다른 Android의 이전 빌드에서 작성된 파일 / 디렉토리를 저장하고 재사용하여 빌드 시간 (전체 빌드, 증분 빌드 및 즉시 실행 포함)을 가속화 할 수 있습니다. 계획.

사용하는 방법:

gradle.properties파일에 다음 줄 추가

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.

캐시를 청소하십시오.

  • cleanBuildCache빌드 캐시를보다 쉽게 ​​정리할 수 있도록 하는 새로운 Gradle 작업이 있습니다. 터미널에 다음을 입력하여 사용할 수 있습니다.

    ./gradlew cleanBuildCache

  • 또는 위치에 저장된 모든 파일을 삭제하여 Android Studio 2.2의 캐시를 정리할 수 있습니다

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


7

이 설정을 변경 한 후 컴파일 시간 10 분이 ~ 10 초로 변경되었습니다.

1 단계:

설정 (ctrl + Alt + S)->

빌드, 실행, 배포->

컴파일러->

--offline명령 행 옵션 상자에 " "를 입력하십시오 .

2 단계:

"독립 모듈을 병렬로 컴파일"체크 상자를 체크하십시오.

적용-> 확인을 클릭하십시오.

여기에 이미지 설명을 입력하십시오

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

불리:

build.gradle 파일에서 식별 된 최신 버전의 종속성을 풀다운 할 수 없습니다. 가져온 라이브러리의 캐시 된 스냅 샷을 사용하기 때문에 더 빠르게 실행됩니다.

중요 참고 : 응용 프로그램을 배포 할 때이 설정을 제거하고 최신 버전의 종속성으로 빌드하십시오.


6

와 함께 해결

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

Gradle 빌드는 8 분에서 3 초로 증가했습니다.


4

다음은 Android Studio 2.2 속도를 높이기 위해 Android 프로그래머 (이전의 전문 프로그래머)를 시작하는 데 도움이 된 내용입니다. 나는 이것이 다시 해쉬라는 것을 알고 있지만 한곳에서 요약하면 됩니다.

초기 빌드는 여전히 느리게 진행될 수 있지만 실행중인 앱을 다시 시작하면 일반적으로 매우 견딜 수 있습니다. 나는 최적의 PC를 사용하고 있습니다 : AMD Quad-Core A8-7410 CPU, 8MB RAM, 비 SSD HD, Win 10. (그리고 이것이 나의 첫 번째 스택 오버플로 게시입니다 ....;)

설정에서-> 그레들 :

"오프라인 작업"의 경우 예 (아마도 가장 중요한 설정 임).

설정에서-> 컴파일러 :

"병렬 독립 모듈 컴파일"의 경우 예 (실제로 멀티 코어 CPU 활용에 도움이되는지 확실하지 않음).

GRADLE SCRIPTS 에서 "build.gradle (모듈 : 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

GRADLE SCRIPTS 에도 "gradle.properties (프로젝트 속성)":

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

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

또한 에뮬레이터 대신 실제 장치에서 테스트하는 것이 잘 작동합니다. 작은 태블릿이 편리합니다.


4

또 다른 성능 향상 팁 :

안드로이드 스튜디오 3.0 에는 D8이라는 새로운 DEX 컴파일러가 포함되어 있습니다.

"덱스 컴파일러는 대부분 일상적인 앱 개발에서 중요한 역할을하지만 앱의 빌드 시간, .dex 파일 크기 및 런타임 성능에 직접적인 영향을줍니다."

"새로운 D8 컴파일러를 현재 DX 컴파일러와 비교할 때, D8은 더 빠르며 더 작은 .dex 파일을 출력하는 동시에 동일하거나 더 나은 앱 런타임 성능을 갖습니다."

D8은 선택 사항입니다-프로젝트의 gradle에 넣어야합니다.

android.enableD8=true

자세한 정보 : https://android-developers.googleblog.com/2017/08/next-generation-dex-compiler-now-in.html

추신. 빌드 시간이 약 30 % 단축되었습니다.


1

이 설정은 정말 빠릅니다 (빌드 2 초 정도)

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

내 PC :

  • CPU Intel (R) Pentium (R) CPU G2030 @ 3.00GHz, 3000Mhz, 2 명의 프로세서 교장, 2 개의 프로세서
  • x64
  • Microsoft Windows 7 Professional
  • (RAM) 16,0GB

프로젝트 파일
-모두 로컬 HD에 위치



1

스튜디오 오른쪽에서 gradle 메뉴를 열어 변경 한 모듈 만 조립 한 다음 install 명령을 실행할 수 있습니다. run을 누르면 코드를 변경했을 때의 모든 변경 사항에 관계없이 모든 것이 조립됩니다.


0

나는 Gradle의 전문가가 아니었지만 내 환경에는 .gradle / init.gradle에 다음 줄이 있습니다.

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

그러나 나는 그 라인이 왜 존재했는지 전혀 모른다.

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

이제 Android Studio & Gradle buildind 구성표를 맹세하지 않고 마침내 작업 할 수 있습니다.


귀하의 경우 유물은 아마도 라이브러리 캐시로 사용되었을 것입니다. 라이브러리가 있는지 아티팩트 서버에 접속합니다. 그렇다면 그것이 당신에게 그것을 돌려주지 않으면 그렇지 않으면 그것은 mavencentral에서 그것을 가져온 다음 당신에게 돌아갑니다.
Fabio Marcolini 2016 년

0

우리의 특정한 경우에, 문제는 retrolambda를 가졌기 때문에 발생했습니다 플러그인 핵심 모듈에서 코드가 변경되지 않은 경우에도 응용 프로그램을 시작할 때마다 모든 프로젝트와 하위 프로젝트를 다시 컴파일해야했습니다.

retrolamba를 제거하면 해결 되었습니다. 그것이 누군가를 돕기를 바랍니다.


0

이것을 먼저 시도하십시오. 내 개인적인 경험이다.

나는 같은 문제가 있었다. 내가 한 것은 바이러스 백신을 영구적으로 비활성화하는 것입니다 (Mine was Avast Security 2015). 바이러스 백신을 비활성화 한 직후에 문제가 해결되었습니다. gradle이 성공적으로 완료되었습니다. 이제 몇 초 안에 gradle이 완료됩니다 (5-10 초만 소요).


0

안녕 나는 이것이 아주 아주 늦게 대답하지만 어쩌면 도움이 사람을 알고
내 경우에는 내가 사용하고 있었다

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

내 응용 프로그램 Gradle 종속성
에서 내 라이브러리 중 하나에서

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

모든 최신 버전으로 변경 한 후 내 문제가 해결되었습니다.


0

단계를 수행하면 10 배 빨라지고 빌드 시간이 90 % 단축됩니다.

먼저 다음 디렉토리에 gradle.properties라는 파일을 작성하십시오.

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

이 줄을 파일에 추가하십시오.

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

Android Studio 에서이 옵션을 확인하십시오.

여기에 이미지 설명을 입력하십시오



0

resoruce xml에 대한 사소한 변경은 여전히 10 분이 걸렸습니다 . 으로 @rivare는 그의 대답에 말한다, 명령 줄 빌드가 모자의 일종 빠른 (이 아래로했다 (15) ).
다음은 Windows 명령 행에서 최소한의 빌드를 빠르게하기위한 몇 가지 단계입니다.

  1. 가다프로젝트 루트 (gradlew.bat가있는 위치)로 하십시오.

    cd c : \ android \ MaskActivity

  2. 실행 빌드를 .

    gradlew assembleDebug

  3. 제거전화에서 APK를 직접 하십시오 ( 하려면 드래그하십시오).

  4. 빌드가 완료되면 죽일 Windows 작업 관리자를 사용하여 BIG 자바 프로세스를.

또는 Windows 시스템에 유닉스 도구가있는 경우 :

ps

"pid"가 표시됩니다 :

kill -9 <pid>
  1. 지금 설치 APK를 하십시오 :

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


0

android documentation 에 따르면 app 모듈의 gradle 파일에 이것을 추가하십시오.

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

0

낮은 구성 시스템에서 Android 환경을 실행합니다.

  1. 브라우저에서 불필요한 웹 탭을 닫습니다.
  2. 안티 바이러스 사용자의 경우 자동 생성 된 빌드 폴더를 제외하십시오.
  3. Android 스튜디오에 1.2Gb 기본 힙이 512MB로 감소 할 수 있음 도움말> 사용자 정의 VM 옵션 편집 studio.vmoptions -Xmx512m 레이아웃 성능이 향상됩니다

  4. Android Studio Mkae의 핵심 구성 요소 중 하나 인 Gradle의 경우 3.0beta가 최신 버전입니다.

아래 팁은 코드 품질에 영향을 줄 수 있으므로주의해서 사용하십시오.

  1. Studio의 전원 안전 모드는 켜져있을 때 보푸라기, 코드 완성 등의 백그라운드 작업을 종료합니다.

  2. 필요할 때 수동으로 lintcheck를 실행할 수 있습니다 ./gradlew lint

  3. 대부분 안드로이드 에뮬레이터를 평균적으로 사용하는 데 2GB RAM이 사용되므로 가능한 경우 실제 안드로이드 장치를 사용하면 컴퓨터의 리소스 부하가 줄어 듭니다. 또는 에뮬레이터의 RAM을 줄이고 컴퓨터의 가상 메모리 소비를 자동으로 줄입니다. 가상 장치 구성 및 고급 설정에서 찾을 수 있습니다.

  4. Gradle 오프라인 모드는 대역폭 제한 사용자가 빌드 종속성 다운로드를 비활성화하는 기능입니다. 백그라운드 작업이 줄어들어 Android 스튜디오의 성능을 향상시키는 데 도움이됩니다.

  5. Android 스튜디오는 여러 모듈을 병렬로 컴파일하기위한 최적화 기능을 제공합니다. RAM이 적은 시스템에서는이 기능이 성능에 부정적인 영향을 줄 수 있습니다. 컴파일러 설정 대화 상자에서 비활성화 할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.