【问题标题】:No such property: betaDistributionApkFilePath for class: java.lang.String没有这样的属性:betaDistributionApkFilePath 类:java.lang.String
【发布时间】:2018-08-15 14:27:46
【问题描述】:

我在 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
}

现在在我们的根 gradle appname/build.gradle

buildscript {
    ext.fabric_gradle = '2.9.4@aar'

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

构建OK您可以继续工作。但是什么?应该是完全一样的……

第三次尝试

我不知道为什么,但是在我们的第一次尝试中,你只是 CANTappname/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
}

构建OK。魔法。

或者只是以正常的方式去做,不要试图做聪明的事情......作为这个长期调查中的第一块代码,它也完全可以正常工作:

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

【问题讨论】:

  • 来自 Fabric 的 Mike。感谢您分享这个,我以前没有看到这是一个问题,但我也感谢您分享您的答案。您可能希望将其发布为下面的答案。
  • 我究竟应该发布什么作为答案?
  • 第三次尝试?

标签: android crashlytics crashlytics-android crashlytics-beta


【解决方案1】:

您只需 CANTappname/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
}

构建OK

或者以正常方式进行:

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

【讨论】:

    猜你喜欢
    • 2019-12-08
    • 2018-07-31
    • 2011-11-11
    • 2018-01-20
    • 1970-01-01
    • 1970-01-01
    • 2016-08-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多