简体   繁体   中英

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

I created a project with Android Studio Preview 3.0 (Canary 2) to start Kotlin development. I used the Android Studio Fabric Plugin to setup Fabric for my project.

But when I want to upload a beta version of my app to Fabric Beta (Crashlytics) with the following command

./gradlew crashlyticsUploadDistributionDebug

I receive the following error:

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.

  • Try: Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

BUILD FAILED in 1s 1 actionable task: 1 executed, 0 avoided (0%)

I do not have any idea, what "Not valid" means.

This is my root 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
}

And this is the app 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'

}

The fabric.properties file with the apiSecret is also placed in the project.

Edit:

A manual upload of the APK to Fabric Beta works.

I just want to point to the comment from Mike Bonnell as it answers this question:

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.

Edit 2017/08/25 Tried with Android Studio 3.0 Beta 3 and the corresponding android gradle plugin. The gradle task crashlyticsUploadDistributionDebug seems to work again.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM