머리말
안드로이드 지원 코 틀린 DSL의 Gradle을 사용하여 스크립트를 구축하고, 신속하게 파를 배울 수있는?
이 문서의 주제 :
1. 그루비 사용 코 틀린의 DSL를 교체하는 방법
2. 문제 발생 및 솔루션
이유는 코 틀린 DSL을 사용한다
사용 코 틀린의 DSL의 장점 :
- 안드로이드는 공식적 코 틀린 언어를 권장하고 있기 때문에, 그래서 프로젝트, 추가 학습 그루비 구문의 전체 개발 통합 코 틀린 Gradle을 빌드 스크립트 언어 도움말을 사용
- 소스에 코 틀린 DSL 지원 점프
- 컴파일시 오류 코 틀린의 DSL 확인
- 코 틀린 DSL은 자동 코드 완성 기능과 구문 강조를 지원한다
코 틀린의 DSL의 단점 :
- 그루비 컴파일러 속도보다 느린
그루비에서 코 틀린 DSL로 마이그레이션
Gradle을 버전 : 3.5.3
Gradle을-래퍼 버전 : 5.6.4
새로운 안드로이드 프로젝트를 만듭니다
우리는 예를 들어 새로운 안드로이드 프로젝트, 코 틀린 DSL에 그루비에서 단계 마이그레이션에 의해 단계를
첫 번째 단계 : 수정 setting.gradle 파일
하려면 setting.gradle
이름 변경setting.gradle.kts
모든 코 틀린 DSL 문서는 파일 이름 접미사 .kts을 기반으로
그런 다음 파일 내부의 내용을 수정합니다
include (":app")
rootProject.buildFileName = "build.gradle.kts"
":"이것이하는 일은 원래 즉, 매우 간단에 "()"이 차이의 DSL와 그루비 구문 코 틀린 하나입니다.
단계 : build.gradle의 프로젝트 파일을 수정
하려면 build.gradle
이름 변경build.gradle.kts
그런 다음 내용을 수정할 :
buildscript {
val kotlin_version = "1.3.61" // #1
repositories {
google()
jcenter()
}
dependencies {
classpath("com.android.tools.build:gradle:4.0.0-beta01") // #2
classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version")
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
google()
jcenter()
}
}
tasks.register("clean", Delete::class) { // #3
delete(rootProject.buildDir)
}
여기에 주요 변화는 내가 코드에서 발견 한 세 가지 점입니다 :
- 내선 변경 발은 발은 코 틀린 불변 변수 키워드입니다
- 큰 따옴표로 클래스 경로 작은 따옴표
- 작업은 또한 코 틀린의 구문을 변경해야
세 번째 단계 : 앱의 build.gradle 파일을 수정
마찬가지로, 제 build.gradle
바꾸기build.gardle.kts
변경 사항은 직접 코드 변경에, 더 및 자세한 내용은 여기를 수행해야합니다
plugins { // #1
id("com.android.application")
kotlin("android")
kotlin("android.extensions")
}
android {
compileSdkVersion(29) // #2
buildToolsVersion("29.0.3")
defaultConfig {
applicationId = "com.bluelzy.kotlindsldemo"
minSdkVersion(21)
targetSdkVersion(29)
versionCode = 1
versionName = "1.0"
}
buildTypes {
getByName("release") { // #3
isMinifyEnabled = false
proguardFiles (getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro")
}
}
}
dependencies {
implementation(
fileTree( // #4
mapOf(
"dir" to "libs", "include" to listOf("*.jar")
)
)
)
implementation (kotlin(
"stdlib-jdk7",
org.jetbrains.kotlin.config.KotlinCompilerVersion.VERSION
))
implementation("androidx.core:core-ktx:1.2.0")
implementation("androidx.appcompat:appcompat:1.1.0")
implementation("androidx.constraintlayout:constraintlayout:1.1.3")
testImplementation("junit:junit:4.12")
androidTestImplementation("androidx.test.ext:junit:1.1.1")
androidTestImplementation("androidx.test.espresso:espresso-core:3.2.0")
}
주석에 밖으로도주의가 필요한 영역을 확인 :
- 플러그인을 변경해야 적용
- 원본 : 변경 모든 문구 () 또는 = 세터 구문 코 틀린 인
- 변경 buildTypes 및 fileTree 참고
이러한 단계를 완료 한 후에, 우리는 예상치 못한 아무 일도 발생하지 않는 경우, 우리는 성공한다 사실, 지금까지 우리가 성공적으로 코 틀린 DSL에 그루비에서 마이그레이션 된 동기화 프로젝트를 클릭 할 수 있습니다. 하지만, 그것을 관리 이러한 변수를 한 곳에서 통합되어 넣을 수 build.gradle.kts 파일에 직접 기록하는 TargetSDK 등의 버전에 따라, 문제가 지금 모든 우리의 버전을 발견하지 않았습니다 ? 특히의 복수 모듈에서, 우리가 장소를 변경하려면, 모든 종속성 동기화 할 수 있습니다.
사실, 정부는 해결책을 우리에게 제공하고, 그것은 사용하는 것입니다 buildSrc을
네 단계 : 폴더 buildSrc 만들기
BuildSrc는 같은 수준 및 응용 프로그램 파일 폴더입니다 루트 디렉토리에 폴더를 만듭니다. 다음과 같아야 결과를 만들기 :
당신은 3 개 개의 파일 내부의 첫 번째 코 틀린 폴더를 무시할 수 있습니다. 긴으로 SRC / 메인 / 코 틀린와 build.gradle.kts 파일은에 생성한다.
다음 단계는 수정하는 build.gradle.kts
파일 :
plugins {
`kotlin-dsl`
}
repositories {
jcenter()
}
이 buildSrc 폴더의 역할이 무엇인가를 설명?
공식은 우리가 도로 왕의 클래스와 연관된 의존도보다 더 많은 정의 할 수있다,라고하는 것입니다 프로젝트의 종속성을 관리하기 위해이 폴더를 사용하는 것이 좋습니다.
파일 Dependencies.kt 만들기
object Apps {
const val compileSdk = 29
const val minSdk = 21
const val targetSdk = 29
const val versionCode = 1
const val versionName = "1.0.0"
}
object Versions {
const val gradle = "3.5.3"
const val kotlin = "1.3.61"
const val appcompat = "1.0.2"
/* test */
const val junit = "4.12"
}
object Libs {
const val kotlin = "org.jetbrains.kotlin:kotlin-stdlib-jdk7:${Versions.kotlin}"
const val appcompat = "androidx.appcompat:appcompat:${Versions.appcompat}"
}
object TestLibs {
const val junit = "junit:junit:${Versions.junit}"
}
예를 들어, 우리는이 문서에서 정의한는 앱 의존성 관련된 버전 번호 관련된 버전 번호를 저장하기 위해 각각 세 개의 싱글을 KT와 이름 종속성
그런 다음 우리는 응용 프로그램의 build.gradle.kts 내부에 보낼 수 이러한 상수를 정의
업데이트 build.gradle.kts :
// 省略代码
android {
compileSdkVersion(Apps.compileSdk)
defaultConfig {
applicationId = "com.bluelzy.kotlindsldemo"
minSdkVersion(Apps.minSdk)
targetSdkVersion(Apps.targetSdk)
versionCode = Apps.versionCode
versionName = Apps.versionName
}
// 省略代码
}
dependencies {
// android supports
implementation(Libs.appcompat)
// test
testImplementation(TestLibs.junit)
}
위의 문서는 Dependencies.kt 파일에 자신을 추가 할 수 있습니다, 완전하지 않고, 파일은 프로젝트 종속성에 따라 build.gradle.kts를 업데이트 할 수 있습니다.
이 프로젝트는 더 Modlue 이상 가지고 있지만, 또한 우리가 buildSrc에 따라 다른 관리 / SRC / 메인 / 코 틀린 디렉토리 몇 캐럿 멀티 파일을 정의 할 수 있도록 관계에 매우 복잡합니다. 다음은 수행되지.
개요
사실, 단계, 그것은 세 가지 Gradle을 관련 이름 바꾸기 .kts에 파일은 그루비가 비교적 간단 대신 코 틀린 DSL을 사용하고 구문 코 틀린를 수정하고, 마지막으로 buildSrc 디렉토리에 파일 종속성 관련 캐럿을 만들 수 있습니다.
그러나 당신은 또한 예를 들어 내 개인적인 경험에 의문을 제기하는 과정에서 몇 가지 문제가 발생합니다
1. 프로젝트를 성공적으로 구축 할 것 정상적으로 작동 할 수 있지만, 앱의 build.gradle.kts 파일 android
라벨 및 implementation
오류되었습니다이뿐만 아니라 문제를 해결할 수없는 캐시를 지우, AS, 깨끗한 프로젝트를 다시 시작합니다.
이 문제가 발생하면 다음 Gradle을 버전을 수정하려고 할 수 있습니다, 버전 Gradle을 나는 사용하여 만든 프로젝트를 시작 :
Gradle을 : 4.0.0-beta01의
Gradle을-래퍼 : https://services.gradle.org/distributions/gradle-6.1.1-all.zip
그것은 버그의 새로운 버전 일 수 있습니다, 찾을 수있는 방법을 android
내가 Gradle을 다운 그레이드됩니다 뒷면 :
Gradle을 버전 : 3.5.3
Gradle을-래퍼 버전 : 5.6.4
그런 다음 그것을
2. 수정 build.gradle.kts 파일은, 그 과정에서 발견 된이 Gradle을 패널을 열 수있는이 시간, 불평 build setup
실행에 옵션을init
마지막으로, build.gradle.kts 파일의 코 틀린 DSL 스크린 샷이 이전보다 훨씬 명확하지 않은 사용을 첨부?