Android Studio Canary 3.4 Canary 4:错误:功能插件不支持variant.getApplicationId()

时间:2018-11-15 23:45:29

标签: android android-studio gradle android-gradle build.gradle

自从我在新的 Android Studio 3.4 Canary 4 上更新了项目以来,gradle同步失败是因为:

project_b

我以前在Canary 3上工作,效果很好。

该项目是一个多功能应用程序,其中包括即时应用程序。

Gradle版本为gradle-5.0-milestone-1-all

我的项目级别build.gradle

ERROR: variant.getApplicationId() is not supported by feature plugins as it cannot handle delayed setting of the application ID. Please use getApplicationIdTextResource() instead.
Affected Modules: base

基本build.gradle

buildscript {

    ext.kotlin_version = '1.3.10'

    repositories {
        google()
        jcenter()
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:3.4.0-alpha04'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
        classpath 'com.google.gms:google-services:4.2.0'
        classpath 'android.arch.navigation:navigation-safe-args-gradle-plugin:1.0.0-alpha07'
    }

}

allprojects {
    repositories {
        google()
        jcenter()
        maven { url 'https://jitpack.io' }
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

ext {

    compileSdkVersion = 28
    minSdkVersion = 16
    targetSdkVersion = 28

    appVersionCode = 5
    appVersion = "2.0.0-dev01"

}

app build.gradle

apply plugin: 'com.android.feature'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'
apply plugin: 'jacoco'
apply plugin: 'androidx.navigation.safeargs'

android {

    def yo = rootProject

    compileSdkVersion yo.compileSdkVersion

    baseFeature true

    defaultConfig {
        minSdkVersion yo.minSdkVersion
        targetSdkVersion yo.targetSdkVersion
        versionCode yo.appVersionCode
        versionName yo.appVersion
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
        vectorDrawables.useSupportLibrary true
        multiDexEnabled true
    }

    buildTypes {
        debug {
            testCoverageEnabled !project.hasProperty('android.injected.invoked.from.ide')
            multiDexKeepFile file('multidex-config.txt')
        }
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            multiDexKeepFile file('multidex-config.txt')
        }
    }

    dataBinding {
        enabled = true
    }

    lintOptions {
        disable "InvalidPackage"
    }

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

    packagingOptions {
        exclude 'META-INF/LICENSE.txt'
        exclude 'META-INF/NOTICE.txt'
    }

}

repositories {
    mavenCentral()
    google()
}

dependencies {

    application project(':app')
    feature project(':module1')

    [...]

}

我试图在没有依赖项的情况下同步我的项目,但是它也不起作用。

我还试图使缓存无效并重新启动,但没有效果。

根据错误日志,问题出在基本build.gradle文件中,但我不知道出了什么问题。

提前感谢您的帮助!

2 个答案:

答案 0 :(得分:3)

好的,我找到了问题。

这是安全参数导航插件,但是失败了。

apply plugin: 'androidx.navigation.safeargs'

如果我删除此行,则该项目能够同步但无法为导航safeargs中缺少的类建立原因。

在baseFeature build.gradle文件中应用的Android Studio 3.4 Canary 4导航插件中存在错误。

我将为此发布一个新问题。

答案 1 :(得分:1)

对于遇到类似问题的任何人,请确保您的project-level build.gradle中的所有依赖关系都是最新的。

例如,当我的google-services插件版本过时时,我遇到了这个问题:

buildscript {
    repositories {
        ...
    }
    dependencies {
        ...
        classpath 'com.google.gms:google-services:4.0.1'
    }
}

更新到最新版本后,问题已解决:

buildscript {
    repositories {
        ...
    }
    dependencies {
        ...
        classpath 'com.google.gms:google-services:4.2.0'
    }
}