사용 코 틀린 DSL 빌드 안드로이드 프로젝트

머리말

안드로이드 지원 코 틀린 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 스크린 샷이 이전보다 훨씬 명확하지 않은 사용을 첨부?

그림 삽입 설명 여기

참고

게시 55 개 원래 기사 · 원 찬양 37 ·은 14 만 + 조회수

추천

출처blog.csdn.net/blue_zy/article/details/104765687