无法使用 gradle 将 Android Kotlin 项目上传到 Fabric Beta

Can't upload Android Kotlin Project to Fabric Beta with gradle

我使用 Android Studio Preview 3.0 (Canary 2) 创建了一个项目来开始 Kotlin 开发。我使用 Android Studio Fabric 插件为我的项目设置 Fabric。

但是当我想使用以下命令将我的应用程序的测试版上传到 Fabric Beta (Crashlytics) 时

./gradlew crashlyticsUploadDistributionDebug

我收到以下错误:

Configuration 'compile' in project ':app' is deprecated. Use 'implementation' instead. Configuration 'testCompile' in project ':app' is deprecated. Use 'testImplementation' instead. The Task.leftShift(Closure) method has been deprecated and is scheduled to be removed in Gradle 5.0. Please use Task.doLast(Action) instead. registerResGeneratingTask is deprecated, use registerGeneratedFolders(FileCollection) registerResGeneratingTask is deprecated, use registerGeneratedFolders(FileCollection) :app:crashlyticsUploadDistributionDebug FAILED

FAILURE: Build failed with an exception.

  • What went wrong: Execution failed for task ':app:crashlyticsUploadDistributionDebug'.

    Not valid.

  • 尝试:运行 使用 --stacktrace 选项获取堆栈跟踪。 运行 使用 --info 或 --debug 选项以获得更多日志输出。

1 秒内构建失败 1 个可操作任务:1 个已执行,0 个已避免 (0%)

我不知道 "Not valid" 是什么意思。

这是我的根 build.gradle:

buildscript {

    ext.kotlin_version = '1.1.2-4'

    repositories {
        maven { url 'https://maven.google.com' }
        maven { url 'https://maven.fabric.io/public' }
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.0.0-alpha2'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
        classpath 'org.ajoberstar:grgit:1.9.0'
        classpath 'io.fabric.tools:gradle:1.22.1'
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

ext {
    supportLibVersion = "25.3.1"
    buildVersion = "25.0.3"
    daggerVersion = "2.9"
    rxJavaVersion = "2.1.0"
    rxAndroidVersion = "2.0.1"

    countGitCommits = { ->
        git = Grgit.open()
        def commitCount = git.log(includes: ['HEAD']).size()
        println("INFO: Number of commits $commitCount")
        return commitCount
    }
}

allprojects {
    repositories {
        jcenter()
        maven { url 'https://maven.google.com' }
        maven { url 'https://maven.fabric.io/public' }
        mavenCentral()
    }
}

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

这是应用 build.gradle

apply plugin: 'com.android.application'
apply plugin: 'io.fabric'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'

android {
    compileSdkVersion 25
    buildToolsVersion "$buildVersion"
    defaultConfig {
        applicationId "com.kotlin.sample"
        minSdkVersion 21
        targetSdkVersion 25
        def numberOfCommits = countGitCommits()
        versionCode 1000 + numberOfCommits
        versionName "0.1.$numberOfCommits"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }

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

}

dependencies {
    compile files('libs/API_ADK.jar')
    compile "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
    compile "com.android.support:appcompat-v7:$supportLibVersion"
    compile "com.android.support:support-v4:$supportLibVersion"
    compile "com.android.support:design:$supportLibVersion"
    compile 'com.android.support.constraint:constraint-layout:1.0.2'
    compile 'io.reactivex.rxjava2:rxkotlin:2.0.3'
    compile "io.reactivex.rxjava2:rxandroid:$rxAndroidVersion"
    compile "io.reactivex.rxjava2:rxjava:$rxJavaVersion"
    compile 'com.jakewharton.timber:timber:4.5.1'
    compile "com.google.dagger:dagger:$daggerVersion"
    // Needed for @Generated annotation (missing in Java <= 1.6; therefore, Android)
    compile 'javax.annotation:jsr250-api:1.0'
    compile('com.crashlytics.sdk.android:crashlytics:2.6.8@aar') {
        transitive = true;
    }
    kapt "com.google.dagger:dagger-compiler:$daggerVersion"
    testCompile 'junit:junit:4.12'

}

带有apiSecret的fabric.properties文件也放在项目中。

编辑:

将 APK 手动上传到 Fabric Beta 是可行的。

我只想指出 Mike Bonnell 回答这个问题的评论:

Our command line tools are not compatible with the Alpha version of Gradle 3. We're looking into the changes that have come with the alpha versions, but we test against betas and stable versions of the releases.

编辑 2017/08/25 尝试使用 Android Studio 3.0 Beta 3 和相应的 android gradle 插件。 gradle 任务 crashlyticsUploadDistributionDebug 似乎又工作了。