没有这样的属性:类:java.lang.String的betaDistributionApkFilePath

时间:2018-08-15 14:27:46

标签: android crashlytics crashlytics-android crashlytics-beta

我在gradle的 crashlytics / fabric 设置中发现了一点小故障,这花了我2个小时的生命。

首先,我做了他们在本指南中所说的一切: https://fabric.io/kits/android/crashlytics/install

这是一切引起的代码:

第一次尝试

dependencies {
      ...

      compile('com.crashlytics.sdk.android:crashlytics:2.9.4@aar') {
        transitive = true;
      }
}

dependencies{}块中的每个库版本都使用ext{}中的appname/app/build.gradle块,因此在我们的情况下

ext {
    crashlytics = '2.9.4@aar'
}

所以最终,这将是唯一的更改implementation,我认为应该这样做,因为它将在2018年底过时。implementations确实会改变任何行为。

implementation("com.crashlytics.sdk.android:crashlytics:$crashlytics"){
    transitive = true
}

但是,如果您尝试构建它,您将得到:

No such property: betaDistributionApkFilePath for class: java.lang.String

哇。我不知道为什么..但让我们调查一下。我们将尝试其他设置,因此请忘记您在上面看到的所有内容。

第二次尝试

appname/app/build.gradle中的dependencies{}中将通道更改为此,因此我们没有ext{}的版本

implementation("com.crashlytics.sdk.android:crashlytics:$rootProject.ext.crashlytics") {
    transitive = true
}

,现在在根目录appname/build.gradle

buildscript {
    ext.fabric_gradle = '2.9.4@aar'

    repositories {
      ...
    }
    dependencies {
      ...
    }
}

构建确定,您可以继续工作。但是呢它应该完全相同...

第三次尝试

我不知道为什么,但是在我们的第一次尝试中,您只需在appname/app/build.gradle ext{}块名称​​ crashlytics 变量中 CANT 除了 crashlytics (例如 crashlytics_version )之外,因此让我们首先尝试进入工作状态。

ext {
    crashlytics_version = '2.9.4@aar'
}

implementation("com.crashlytics.sdk.android:crashlytics:$crashlytics_version"){
    transitive = true
}

生成是确定。魔术。

或者只是以常规方式进行操作,不要尝试制作聪明的东西...。作为这段漫长研究中的第一段代码,它也完全可以正常工作:

compile('com.crashlytics.sdk.android:crashlytics:2.9.4@aar') {
  transitive = true;
}

1 个答案:

答案 0 :(得分:3)

您只需在appname/app/build.gradle ext{}块中不能,将变量 crashlytics 命名为变量 crashlytics >例如 crashlytics_version 这样:

ext {
    crashlytics_version = '2.9.4@aar'
}

implementation("com.crashlytics.sdk.android:crashlytics:$crashlytics_version"){
    transitive = true
}

生成是确定

或以常规方式进行操作:

compile('com.crashlytics.sdk.android:crashlytics:2.9.4@aar') {
  transitive = true;
}