首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当我使用时,如何重写build.gradle文件?

当我使用时,如何重写build.gradle文件?
EN

Stack Overflow用户
提问于 2022-09-15 00:53:53
回答 1查看 86关注 0票数 0

我创建了一个基于2021.2.1修补程序1的向导空组合活动的项目,该向导生成两个build.gradle文件,您可以看到代码A和代码B。

代码C和代码D是一个旧项目的两个build.gradle文件。

1:apply false在代码A的id 'com.android.library' version '7.2.0' apply false中意味着什么?

2:我发现插件部分同时存在代码A和代码B,它们的代码几乎相同,为什么?

他说:我发现代码C中有一个依赖项部分,它过时了吗?

代码C中的存储库部分是否过时?

代码A:示例build.gradle (项目)

代码语言:javascript
复制
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 (模块)

代码语言:javascript
复制
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 (项目)

代码语言:javascript
复制
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 (模块)

代码语言:javascript
复制
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'
    ...
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-09-15 04:55:44

Android为Gradle文件创建了一个不同的结构,存储库为settings.gradle,插件为build.gradle (项目级)。简而言之,这种新的结构只会使Gradle files变得更干净。

对于Gradle,常见的是看到2种(或更多)的方法来做同样的事情。比较code Acode C是最好的例子。这两种代码所做的事情是相同的,但代码和文件的结构不同。

现在谈到apply false,它基本上是字面上的。您可以声明一个带有版本的插件,并说不立即应用它(在整个项目中,因为它是来自项目的build.gradle )。但是您只在将要使用这个插件的模块中应用所需的内容,例如,在来自build.gradleapp module中。

您可以查看这里以获得完整的描述。

回到由带有插件的Android生成的“新结构”,有时需要在buildscript中创建一个buildscript块来使用“旧”classpath而不是plugin id,因为目前并不是所有的库都有要使用的插件。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73724526

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档