【问题标题】:Can't upload Android Kotlin Project to Fabric Beta with gradle无法使用 gradle 将 Android Kotlin 项目上传到 Fabric Beta
【发布时间】:2017-05-30 12:58:52
【问题描述】:

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

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

./gradlew crashlyticsUploadDistributionDebug

我收到以下错误:

项目 ':app' 中的配置 'compile' 已弃用。采用 而是“实施”。项目中的配置“testCompile” ':app' 已弃用。请改用“testImplementation”。这 Task.leftShift(Closure) 方法已被弃用并计划 在 Gradle 5.0 中被删除。请改用 Task.doLast(Action)。 registerResGeneratingTask 已弃用,请使用 registerGeneratedFolders(FileCollection) registerResGeneratingTask 是 已弃用,使用 registerGeneratedFolders(FileCollection) :app:crashlyticsUploadDistributionDebug 失败

FAILURE:构建失败并出现异常。

  • 出了什么问题:任务 ':app:crashlyticsUploadDistributionDebug' 执行失败。

    无效。

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

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

我不知道“无效”是什么意思。

这是我的根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。

【问题讨论】:

  • 来自 Fabric 的 Mike。我们的命令行工具与 Gradle 3 的 Alpha 版本不兼容。我们正在研究 alpha 版本带来的变化,但我们会针对这些版本的 beta 和稳定版本进行测试。
  • 好的,谢谢您的回答。然后我知道,我不需要深入挖掘。 :)
  • 在这里遇到同样的问题;我们迁移到 gradle 3 alpha 以利用 Android Studio 3.0 的巨大改进。我很高兴看到他们正在修复这个问题,同时我们可以手动将构建上传到 Fabric。
  • 当它再次起作用时,我会非常兴奋!

标签: android kotlin crashlytics


【解决方案1】:

我只想指出 Mike Bonnell 的评论,因为它回答了这个问题:

我们的命令行工具与 Gradle 3 的 Alpha 版本不兼容。我们正在研究 alpha 版本带来的变化,但我们会针对这些版本的 beta 和稳定版本进行测试。

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

【讨论】:

  • 使用 alpha3 获取此信息 - 错误:任务 ':Eruditus:crashlyticsUploadDistributionDevDebug' 的执行失败。 > 不再支持 getMainOutputFile。如果需要确定输出的文件名,请使用 getOutputFileName。
  • 我们在哪里记录 Crashlytics 的问题?
猜你喜欢
  • 1970-01-01
  • 2016-04-22
  • 2019-03-24
  • 2019-11-08
  • 2016-05-29
  • 2016-10-05
  • 2020-12-18
  • 2017-05-26
相关资源
最近更新 更多