簡體   English   中英

當我使用 Android Studio Chipmunk 時,如何重寫 build.gradle 文件?

[英]How can I rewrite build.gradle files when I use Android Studio Chipmunk?

我創建了一個基於 Android Studio Chipmunk 的向導Empty Compose Activity的項目 | 2021.2.1補丁1,向導生成兩個build.gradle文件,可以看到Code A和Code B。

代碼 C 和代碼 D 是來自舊項目的兩個 build.gradle 文件。

1:代碼A id 'com.android.library' version '7.2.0' apply false apply false的apply false是什么意思?

2:我發現插件部分同時存在代碼A和代碼B,它們的代碼幾乎相同,為什么?

3:我發現代碼C中有一個依賴部分,它已經過時了嗎?

4:代碼 C 中的存儲庫部分是否已過時?

代碼 A:樣品 build.gradle(項目)

buildscript {
    ext {
        compose_version = '1.1.0-beta01'
    }
}
plugins {
    id 'com.android.application' version '7.2.0' apply false
    id 'com.android.library' version '7.2.0' apply false
    id 'org.jetbrains.kotlin.android' version '1.5.31' apply false
}

代碼 B:樣品 build.gradle(模塊)

plugins {
    id 'com.android.application'
    id 'org.jetbrains.kotlin.android'
}

android {
    compileSdk 32

    defaultConfig {
        applicationId "info.dodata.myapplication"
        minSdk 21
        targetSdk 32
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
        vectorDrawables {
            useSupportLibrary true
        }
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    kotlinOptions {
        jvmTarget = '1.8'
    }
    buildFeatures {
        compose true
    }
    composeOptions {
        kotlinCompilerExtensionVersion compose_version
    }
    packagingOptions {
        resources {
            excludes += '/META-INF/{AL2.0,LGPL2.1}'
        }
    }
}

dependencies {

    implementation 'androidx.core:core-ktx:1.7.0'
    implementation "androidx.compose.ui:ui:$compose_version"
    ...
}

代碼 C:我的 build.gradle(項目)

buildscript {
    ext {
        compose_version = '1.2.0'
        hilt_version = '2.42'
    }
    repositories {
        google()
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:7.2.2'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.7.0"
        classpath "com.google.dagger:hilt-android-gradle-plugin:$hilt_version"
    }
}

代碼 D:build.gradle(模塊)

plugins {
    id 'com.android.application'
    id 'kotlin-android'
    id 'kotlin-kapt'
    id 'dagger.hilt.android.plugin'
    id 'kotlin-parcelize'
}

android {
    compileSdk 32
    flavorDimensions "default"
    namespace 'info.dodata.soundmeter'

    defaultConfig {
        applicationId "info.dodata.soundmeter"
        minSdk 23
        targetSdk 32
        versionCode 3
        versionName "1.03"

        vectorDrawables {
            useSupportLibrary true
        }
    }



    buildTypes {
        release {
            minifyEnabled true
            shrinkResources true
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }


    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    kotlinOptions {
        jvmTarget = '1.8'
        allWarningsAsErrors = false
    }
    buildFeatures {
        compose true
    }
    composeOptions {
        kotlinCompilerExtensionVersion compose_version
    }
    packagingOptions {
        resources {
            excludes += '/META-INF/{AL2.0,LGPL2.1}'
        }
    }
}


dependencies {
    implementation 'androidx.core:core-ktx:1.8.0'
    ...

Android Studio Chipmunk creates a different structure for Gradle files, with a settings.gradle for repositories and a build.gradle (project level) for plugins. 簡而言之,這種新結構只是讓Gradle files更干凈。
對於Gradle ,通常會看到 2 種(或更多)方法來做同樣的事情。 code Acode C進行比較就是一個很好的例子。 兩種代碼都做同樣的事情,但代碼和文件的結構不同。

現在談論apply false ,基本上是字面意思。 您聲明了一個帶有版本的插件,並說不要立即應用它(在整個項目中,因為它是來自項目的 build.gradle)。 但是你只在你將要使用這個插件的模塊中應用你需要的東西,例如,在app modulebuild.gradle中。
您可以在此處查看完整說明。

回到 Android Studio 使用插件生成的“新結構”,有時您需要在buildscript中創建一個dependencies項塊以使用“舊” classpath而不是plugin id ,因為目前並非所有庫都有要使用的插件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM