2 장 : Gradle을 기본 맞춤형
2.1 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 : 자리 표시 자 작업, 원격 장치에있는 다른 플러그인에 대한 테스트를 실행.
- installDebug 및 installRelease : 장치 또는 에뮬레이터의 특정 버전에.
- 모든 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을 위해 안드로이드