即使将子模块中的插件应用到当前项目后也无法访问它们

问题描述 投票:0回答:1

根build.gradle文件

plugins {
    alias(libs.plugins.android.application) apply false
    alias(libs.plugins.jetbrains.kotlin.android) apply true
    alias(libs.plugins.android.library) apply true
}

module2的build.gradle文件

android {
    namespace = "com.example.module2"
    compileSdk = 34

    defaultConfig {
        minSdk = 24

        testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
        consumerProguardFiles("consumer-rules.pro")
    }

    buildTypes {
        release {
            isMinifyEnabled = 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"
    }
}

dependencies {

    implementation(libs.androidx.core.ktx)
    implementation(libs.androidx.appcompat)
    implementation(libs.material)
    testImplementation(libs.junit)
    androidTestImplementation(libs.androidx.junit)
    androidTestImplementation(libs.androidx.espresso.core)
}

显示错误 未解决的参考:android 据我所知,如果您在根项目中应用插件,您会将其应用到整个项目,并且不需要再次应用它。

gradle android-gradle-plugin build.gradle gradle-plugin gradle-kotlin-dsl
1个回答
0
投票

不幸的是,你学错了。您需要在您想要的每个子项目中应用每个插件。

plugins {
    alias(libs.plugins.android.application)
}

插件只不过是在构建开始时运行的程序,用于对给定的

Project
对象进行预设配置。 “应用”插件会启动该程序(默认在
plugins
块中执行)。因此,每个插件都需要应用于需要它的每个
Project
对象。

注意这条线

alias(libs.plugins.android.application) apply false

无论如何都没有应用该插件(

apply false
是赠品)。此行将插件代码添加到构建的类路径(在构建的子项目之间共享),以避免相同代码加载两次时可能发生的冲突。

© www.soinside.com 2019 - 2024. All rights reserved.