升级到android gradle插件3.0.0+后,项目不会构建

时间:2017-11-24 09:31:29

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

迁移到Android 3.0后,我已经更改了项目中的gradle配置。 在其中一个中,我在尝试构建时遇到错误:

Execution failed for task ':app:compileDebugKotlin'.

e: C:\dev\myapp\app\src\main\kotlin\com\xxxxx\dialog\DeleteConfirmDialog.kt: (35, 46): Too many arguments for public constructor Builder(p0: Context!) defined in android.app.AlertDialog.Builder
e: C:\dev\myapp\app\src\main\kotlin\com\xxxxx\dialog\HumidityThresholdDialog.kt: (46, 74): Too many arguments for public open fun getString(p0: String!): String! defined in android.os.Bundle
e: C:\dev\myapp\app\src\main\kotlin\com\xxxxx\dialog\PermissionDialog.kt: (45, 50): Unresolved reference: ACTION_APcomICATION_DETAILS_SETTINGS
e: C:\dev\myapp\app\src\main\kotlin\com\xxxxx\dialog\PermissionDialog.kt: (53, 22): Unresolved reference: finishAffinity
e: C:\dev\myapp\app\src\main\kotlin\com\xxxxx\dialog\TemperatureThresholdDialog.kt: (74, 73): Unresolved reference: holo_red_dark
e: C:\dev\myapp\app\src\main\kotlin\com\xxxxx\dialog\TemperatureThresholdDialog.kt: (81, 88): Unresolved reference: holo_red_dark
e: C:\dev\myapp\app\src\main\kotlin\com\xxxxx\fragment\Thresholds.kt: (128, 41): Unresolved reference: fragmentManager
e: C:\dev\myapp\app\src\main\kotlin\com\xxxxx\fragment\Thresholds.kt: (153, 38): Unresolved reference: fragmentManager
...

有趣的是,当我导航到错误行时,例如:

val color = if (it) android.R.color.black else android.R.color.holo_red_dark    //Unresolved reference: holo_red_dark
dialog.show(activity.fragmentManager, ThresholdDialog::class.java.simpleName)   //Unresolved reference: fragmentManager

编译器没有显示错误,我可以导航到那些类。

项目:

buildscript {
    repositories {
        google()
        jcenter()
        maven { url 'https://raw.github.com/vRallev/mvn-repo/master/' }
        maven { url 'https://maven.fabric.io/public' }
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.0.1' //<--- when reverting back to 2.3.3, the project is built without problems
        classpath 'io.fabric.tools:gradle:1.23.0'
    }
}

allprojects {
    repositories {
        google()
        jcenter()
        mavenCentral()
        maven { url 'https://oss.sonatype.org/content/repositories/snapshots/' }
    }
}

应用:

buildscript {
    ext.versions = [
            kotlin     : '1.1.60',
            crashlytics: '1.16.0'
    ]

    repositories {
        mavenCentral()
        maven { url 'http://download.crashlytics.com/maven' }
        maven { url "https://plugins.gradle.org/m2/" }
        maven { url 'https://maven.fabric.io/public' }
    }

    dependencies {
        classpath "com.crashlytics.tools.gradle:crashlytics-gradle:$versions.crashlytics"
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$versions.kotlin"
        classpath "org.jetbrains.kotlin:kotlin-android-extensions:$versions.kotlin"
        classpath "org.kordamp:markdown-gradle-plugin:1.1.0"
        classpath 'io.fabric.tools:gradle:1.23.0'
    }
}

repositories {
    maven { url 'https://maven.fabric.io/public' }
    maven { url 'https://jitpack.io' }
    mavenLocal()
    mavenCentral()
}

apply plugin: 'com.android.application'
apply plugin: 'io.fabric'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-kapt'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'org.kordamp.markdown.convert'

apply from: 'signing.gradle'

def version = ["major": 3, "minor": 6, "patch": 1, "build": 0]

android {
    compileSdkVersion 26
    buildToolsVersion '26.0.2'

    defaultConfig {
        applicationId "com.xxxxx"
        minSdkVersion 19
        targetSdkVersion 26
        versionCode 10000000 * version["major"] + 100000 * version["minor"] + 1000 * version["patch"] + version["build"]
        versionName "${version["major"]}.${version["minor"]}.${version["patch"]}"
    }

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_7  //<- tried to changed to 1_8 with android studio 3, doesn't help
        targetCompatibility JavaVersion.VERSION_1_7
    }

    signingConfigs {
        release
    }

    buildTypes {
        release {
//            runProguard false
//            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            zipAlignEnabled true
            signingConfig signingConfigs.release

        }
        debug {
            ext.enableCrashlytics = false
        }
    }

    sourceSets {
        main.java.srcDirs += 'src/main/kotlin'
        main.assets.srcDirs += 'build/gen-html'
        androidTest.java.srcDirs += 'src/androidTest/kotlin'
    }

    lintOptions {
        checkReleaseBuilds false
        disable 'InvalidPackage'
    }

    packagingOptions {
        exclude 'META-INF/services/javax.annotation.processing.Processor'
        exclude 'META-INF/LICENSE.txt'
    }
}

ext.versions += [
        supportLib : "26.1.0",
        logback    : '1.1.1-2',
        dagger     : '1.2.5',
        butterknife: '7.0.1'
]

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar']) //changed all 'compile' to 'implementation', doesn't help

    compile 'com.xxxxx.lib:1.0.1-SNAPSHOT@aar'

    compile "com.android.support:support-v4:$versions.supportLib"
    compile "com.android.support:support-v13:$versions.supportLib"
    compile "com.squareup.dagger:dagger:$versions.dagger"
    compile 'com.squareup.retrofit2:retrofit:2.0.0-beta3'
    compile 'com.squareup.retrofit2:converter-gson:2.0.0-beta3'
    compile 'com.google.guava:guava:20.0'
    compile 'de.greenrobot:eventbus:2.2.1'
    compile 'org.slf4j:slf4j-api:1.7.6'
    compile "com.github.tony19:logback-android-core:$versions.logback"
    compile "com.github.tony19:logback-android-classic:$versions.logback"
    compile "org.jetbrains.kotlin:kotlin-stdlib:$versions.kotlin"
    compile 'io.reactivex:rxjava:1.0.16'
    compile 'io.reactivex:rxkotlin:0.40.1'
    compile "com.jakewharton.rxbinding:rxbinding:0.4.0"
    compile "com.jakewharton.rxbinding:rxbinding-kotlin:0.4.0"
    compile "com.jakewharton:butterknife:$versions.butterknife"
    compile 'com.jakewharton.threetenabp:threetenabp:1.0.3'

    compile('com.crashlytics.sdk.android:crashlytics:2.6.8@aar') { transitive = true }
    compile 'com.github.PhilJay:MPAndroidChart:v2.0.7'

    kapt "com.jakewharton:butterknife:$versions.butterknife"
    kapt "com.squareup.dagger:dagger-compiler:$versions.dagger"

    testCompile 'junit:junit:4.12'
    testCompile 'org.mockito:mockito-core:2.9.0'
    testCompile 'org.assertj:assertj-core:3.8.0'
}

markdownToHtml {
    sourceDir = file('src/main/markdown')
    fencedCodeBlocks = true
    hardwraps = true
    autoLinks = true
}

project.afterEvaluate {
    tasks.findByName('mergeDebugAssets')?.dependsOn tasks['markdownToHtml']
    tasks.findByName('mergeReleaseAssets')?.dependsOn tasks['markdownToHtml']
}

可能是什么问题?

1 个答案:

答案 0 :(得分:2)

我看了一下依赖树,注意到logback库使用的是一个旧的android库,它是由gradle表单库提取的,奇怪地用于编译项目。

+--- com.github.tony19:logback-android-classic:1.1.1-2
|    +--- com.github.tony19:apktool-lib:1.4.4-3
|    |    \--- com.google.android:android:2.1_r1

将其从gradle依赖项中排除后,项目开始正确构建。

implementation('com.github.tony19:logback-android-classic:1.1.1-6') {
    exclude group: 'com.google.android', module: 'android'
}
相关问题