2 장 : 안드로이드 실질적으로 사용자가 Gradle을 구축

면책 조항 :이 문서는 블로거 원본입니다, 추적 에 의해-SA의 CC 4.0 저작권 계약, 복제, 원본 소스 링크이 문을 첨부 해주세요.
이 링크 : https://blog.csdn.net/qq_33334951/article/details/102725908

2 장 : Gradle을 기본 맞춤형

2.1 Gradle을 파일 구조

안드로이드 스튜디오 초기화 파일 구조 Gradle을

  • settings.gradle 이 파일은, 초기화 단계에서 실행 모듈이 부재에 포함되어야 하는지를 정의한다. 안드로이드 응용 프로그램은 하나의 새로운 프로젝트가 포함 된 경우, 파일의 내용은 에는 '앱'을 . 단일 모듈 프로젝트 파일, 멀티 모듈 프로젝트 파일에 정의되어 있어야합니다 필요가 없습니다.

  • 최고 build.gradle :

    //实际构建代码块
    buildscript {
        repositories {
            jcenter()
        }
        dependencies {
            classpath 'com.android.tools.build:gradle:3.4.2'
        }
    }
    
    
    allprojects {
        repositories {
            jcenter()  
        }
    }
    
    • 저장소 코드 블록 : jcenter하도록 구성된 창고.
    • 종속 차단 구성 : 빌드 프로세스의 의존성 (원하는 응용 프로그램에 따라 또는 프로젝트 파일의 상단에 내장 포함 된 종속성을 이야기 할 수 없다). 기본 종속성의 정의 : Gradle을의 안드로이드 플러그 (안드로이드는 각각의 모듈은 안드로이드 플러그가 필요).
    • allprojects 블록 : 선언 된 속성은 모든 모듈에 사용되는. (당신은 모든 모듈에 적용되는 작업을 만들 수 있습니다 allprojects 모듈의 사용은 어떠한 경우 내부 분류 종속 라이브러리의 작동에 영향을 미칠 것입니다 강력한 경우가 아닌 독립적 인 빌딩 블록을 구축 할 수있는 주요 프로젝트의 결과로, 프로젝트에 연결되어 있는지 확인합니다.)
  • 모듈 층 build.gradle :

    //代码节选
    apply plugin: 'com.android.application'
    
    android {
        compileSdkVersion 28
        buildToolsVersion '28.0.3'
        
        defaultConfig {
            applicationId "com.virtual.learn191024"
            minSdkVersion 24
            targetSdkVersion 28
            versionCode 1
            versionName "1.0"
        }
    }
    
    dependencies {
        implementation fileTree(dir: 'libs', include: ['*.jar'])
        implementation 'androidx.appcompat:appcompat:1.1.0'
    }
    
    • Build.gradle 파일 속성 모듈 계층에만 모듈에 적용 할 수 있고, 특성 상위 build.gradle 문서 정의를 포함 할 수있다.

    • (가) 적용 플러그인 을 사용하여 안드로이드 응용 프로그램 플러그인 :. (플러그인 블록을 사용 후에 인조 독특한 구성을 사용할 수있다.)

    • 안드로이드 블록 : 안드로이드는 특정 구성을 포함하는 구성해야합니다 속성은 다음과 같습니다

      • compileSdkVersion : 안드로이드 API 버전 컴파일 된 응용 프로그램.
      • buildToolsVersion : 컴파일러에 의해 사용되는 도구 및 버전 빌드 번호.
    • defaultConfig 블록 : 애플리케이션의 핵심 구성 속성. 당신의 AndroidManifest.xml 파일에 해당하는 항목을 포함 할 수있다.

      • 애플리케이션 ID는 : 구글은 고유하게 식별 재생합니다.
      • 의 minSdkVersion은 : 응용 프로그램 API의 최소 레벨을 실행합니다.
      • targetSdkVersion을 : 알림 시스템은 앞으로 호환 동작을 시작하지 않고, 특정 안드로이드 버전에서 테스트되었습니다.
      • versionCode를 : 버전 번호
      • versionName을 : 이름의 쉬운 버전
    • 종속 차단 : 의존적 인 코드 블록을.

2.2 작업을 시작하기

  • 명령 $ Gradle을 작업은 : 가능한 모든 작업을 인쇄 할 수 있습니다.

  • 명령 $ Gradle을 작업은 --all : 가능한 모든 작업을 인쇄하고 그들 사이의 종속성 표시.

  • 보충 매개 변수 : -m 또는 ** - ** 시운전 드라이 실행됩니다.

  • Gradle을의 안드로이드는 자바 플러그인 플러그인 기반을 사용하며, 플러그인이 자바 기본 토대 플러그인을 사용합니다. 기초 플러그인은 표준 수명주기 작업과 어떤 상호 합의 속성을 추가합니다. 정의의 기초 연결 assemnle청소 작업을, 자바 플러그인 정의 검사buildtasks을 . 플러그인으로 작업이 구현 작업을 실행하지만, 플러그 사이의 계약을 정의하는 데 사용되지 않습니다.

    • 조립 : 항목의 출력 설정을.
    • 청소 : 프로젝트의 출력을 정리.
    • 검사는 모든 검사, 일반적으로 단위 테스트 및 통합 테스트를 실행합니다.
    • 빌드 : 조립 및 검사 실행.
  • 안드로이드 작업 : 안드로이드 플러그인은 기본 작업을 확장하고 그들의 행동을 얻을 수 있습니다.

    • 조립 : 각 APK 생성 버전을 구축 할 수 있습니다.
    • 청소 : 예 APK 파일로 모든 건물의 내용을 제거합니다.
    • 검사 : 린트 검사를 실행 한 후, 보풀이 문제를 종결 빌드를 식별합니다.
    • 빌드 : 조립 및 검사 실행.

    이 작업에 따라 달라 벌금 건설 작업의 종류에 따라 모든 구성 요소를 조립, assembleDebug assembleRelease을 (형의 멤버도 더 포함 할 수있다) 조립.

  • 새로운 작업을 연결 안드로이드 :

    • connectedCheck는 : 연결된 장치 또는 에뮬레이터에서 테스트를 실행합니다.
    • deviceCheck : 자리 표시 자 작업, 원격 장치에있는 다른 플러그인에 대한 테스트를 실행.
    • installDebuginstallRelease : 장치 또는 에뮬레이터의 특정 버전에.
    • 모든 installtasks는 관련있을 것이다 제거 작업을.
  • 작업을 구축하는 대신 connectedCheck 또는 deviceCheck의 확인에 따라 달라집니다.

  • 작업이 보고서 린트를 생성하는 검사를 실행 보풀이 보고서는 모든 경고 및 오류뿐만 아니라 상세한 설명 및 관련 문서와 관련이 포함됩니다. ** 미리 응용 프로그램 / 빌드 / 보고서 / ** 파일에 저장 폴더.

2.3 주문 제작

  • 건물에 의해 일부 구성 속성을 추가 :

    • testApplicationId 다음 악기 APK를 테스트하기위한 애플리케이션 ID.
    • testInstrumentationRunner : JUnit 테스트 러너의 이름은, 테스트를 실행하는 데 사용됩니다.
    • signingConfig
    • proguardFile / proguardFiles
  • BuildConfig 및 자원 :

    • Gradle을 수행 할 수 있습니다 buildConfigField는 확장 생성 BuildConfig 클래스 에 의해 resValue를 확장 리소스 파일을 . 당신은 디버그 및 릴리스에서 다른 값을 사용할 수 있습니다.

      //代码节选
      debug{
          buildConfigField("boolean","mBollean","true")
          resValue("string","mString","test1")
      }
      release {
          buildConfigField("boolean","mBollean","false")
          resValue("string","mString","test2")
      }
      
  • 프로젝트 전체의 설정 :

    • 모든 모듈은 모두 안드로이드 응용 프로그램 항목이있는 경우, 일반적인 구성은 상단 build.gradle allprojects 코드 블록에 적용 할 수 있습니다 :

      allprojects{
          apply plugin: 'com.android.application'
          android{
              compileSdkVersion 28
              buildToolsVersion '28.0.3'
          }
      }
      
    • Gradle을 허용 인텔리이 개체에 추가 속성을 추가 할 수 있습니다. 함으로써 EXT 블록 구현 :

      //顶层build.gradle 最下面添加(注意有个等号)
      ext {
          compileSdkVersion = 28
          buildToolsVersion =  '28.0.3'
      }
      

      당신은 빌드 파일 모듈 계층에 사용될 수있다 rootProject 인수 속성 :

      //代码节选 (注意没有等号)
      apply plugin: 'com.android.application'
      
      android {
          compileSdkVersion rootProject.ext.compileSdkVersion
          buildToolsVersion rootProject.ext.buildToolsVersion
          
          ···
      
  • 프로젝트 속성 :( 세 가지 일반적인 정의 방법)

    • 1.ext 코드 블록 :

      ext {
          info = "abc"
      }
      
    • 2.gradle.properties는 파일 :

      info = abc
      
    • 3-P 명령 줄 매개 변수 :

      • 첫 번째 작업을 만들 :

        //任务的名字叫printProperties。
        //project.hasProperty("info")会返回boolean值,代表是否有info属性。
        //如果有就打印出info属性的值。
        task printProperties {
            if(project.hasProperty("info")){
                println(info)
            }
        }
        
      • 명령을 실행 : (Gradle을 + 작업 이름 + 매개 변수)

        //-P为设置参数,后面紧随参数名,通过'='号赋参数值。
        $ gradle printProperties -Pinfo="Hello"
        

        결과 :
        명령 줄은도 속성 결과를 평가.

  • 기본 작업 :

    • 상단 build.gradle에 추가 :

      defaultTasks("clean","assembleDebug")
      
    • 보기 명령을 사용하여

      //Windows
      $ gradle task | findstr "Default tasks"
      
      //Mac or Linux
      $ gradlew task | grep "Default tasks"
      

2.4 컴파일 속도 Gradle을 속도를

  • Windos 시스템에서 JVM의 메모리 할당 Gradle을 증가. 에서 \ 사용자 \ 사용자 이름 \ .gradle \ : C 새로운 파일 디렉토리를 gradle.properties. 파일의 내용 :

    org.gradle.daemon=true
    org.gradle.jvmargs=-Xmx4096m -XX:MaxPermSize=1024m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
    org.gradle.parallel=true
    org.gradle.configureondemand=true
    

2.5 참조

  • Gradle을 위해 안드로이드

추천

출처blog.csdn.net/qq_33334951/article/details/102725908