Crashlytics Android Studio Gradle构建失败

14
我已经安装了Crashlytics插件到Android Studio 0.9.3;在添加到我的项目后,它会自动添加一些Gradle配置和首个Activity等内容。Build时会出现以下错误:

Error:Execution failed for task ':app:fabricCleanupResourcesDebug'.

Crashlytics Developer Tools error.

enter image description here

这是我的Gradle文件,我应该如何更改? Crashlytics已经自动添加了它的行:

buildscript {
  repositories {
    maven {
      url 'https://maven.fabric.io/public'
    }
  }

  dependencies {
    classpath 'io.fabric.tools:gradle:1.+'
  }
}
apply plugin : 'com.android.application' apply plugin : 'io.fabric'

repositories {
  maven {
    url 'https://maven.fabric.io/public'
  }
}

android {
  compileSdkVersion 21
  buildToolsVersion "21.0.2"

  defaultConfig {
    applicationId "XXXXXXXXXXXXXXXXXXXXXXX"
    minSdkVersion 11
    targetSdkVersion 19
    versionCode 1
    versionName "1.0"
  }
  buildTypes {
    release {
      runProguard false
      proguardFiles getDefaultProguardFile('proguard-android.txt'),
      'proguard-rules.pro'
    }

  }
}

dependencies {
  compile fileTree(dir : 'libs', include : ['*.jar'])
  compile 'com.android.support:appcompat-v7:21.0.0'
  compile('com.crashlytics.sdk.android:crashlytics:2.1.0@aar') {
    transitive = true;
  }
}

.


这里也有同样的问题。不过,还有另一个仓库jcenter()(基于https://dev.twitter.com/twitter-kit/android/integrate下给出的代码)。希望能有所帮助,期待在这里得到任何答案。 - sitilge
同样在这里:https://dev59.com/dV4c5IYBdhLWcg3w1tSO如果你找到解决方案,请告诉我。 - bajicdusko
6个回答

11

在将AndroidManifest.xml文件中的API密钥替换为字符串引用而不是文字字符串后,我遇到了完全相同的问题。
使用文字字符串后,错误消失了。

使用

<meta-data
        android:name="com.crashlytics.ApiKey"
        android:value="mykey" />

不要使用

<meta-data
        android:name="com.crashlytics.ApiKey"
        android:value="@string/crashlytics_api_key" />

Florian在这里,android:value="我的Twitter API密钥"已经设置,但无法解决显示错误,例如:找不到ID为'io.fabric'的插件。 - Dhruv Raval
是的,我知道,它也无法解决空指针异常、np问题和所有其他我从未说过我的答案会解决的问题。我所提到的“完全相同的问题”是“错误:执行任务':app:fabricCleanupResourcesDebug'失败”。;-) - grandouassou
4
我不想在清单文件中硬编码我的密钥。我希望 Twitter 能够解决这个问题并支持字符串引用。 - Splaktar
1
我认为你可以通过在清单文件中使用占位符来解决这个问题。然后在你的build.gradle文件中,你可以从一个未跟踪(私有)的文件中加载属性(比如你的API密钥),并设置你的占位符值。 - grandouassou

10

我已经解决了这个问题。 我和Crashlytics团队进行了长时间的交谈,但是他们没有帮助我。

我的解决方案是创建一个单独的项目,并在该项目上安装Crashlytics。它将在该项目上生成API密钥。我只需将该密钥复制并粘贴到我的原始项目中,然后它就可以工作了。不知道为什么它没有在我的初始项目上生成密钥。


2
太好了!你节省了我的时间。 - Jiang YD
对我来说没有用。当事情按预期工作时,从我先前生成的一个项目中获取了密钥。 - vir us
创建一个独立的项目,不要使用旧项目。也许这会有所帮助。让我知道结果。祝你好运。 - Misha Akopov
哦,看到这个答案了,现在发现它:http://stackoverflow.com/a/29621524/3101777 - Misha Akopov

2

这个错误是由于Crashlytics AppKey设置不正确导致的。请检查您的清单文件以确认它是否正确。或者

这是因为在清单文件中使用了字符串资源而不是硬编码的AppKey。

请使用以下内容:

<meta-data
android:name="io.fabric.ApiKey"
android:value="FABRIC_KEY"/>

请勿使用此功能。
<meta-data
android:name="io.fabric.ApiKey"
android:value="@stringFABRIC_KEY"/>

祝一切顺利


2

是的,在 AndroidManifest.xml 中添加了这段代码,它有效了。

    <meta-data
        android:name="io.fabric.ApiKey"
        android:value="yourapikey" />

请问您能否提供更多关于您所提供解决方案的细节? - abarisone
@Yuhan,我可以使用不同项目的API密钥吗?还是需要生成新的? - Narendra Singh

2

在没有网络连接的情况下首次运行应用程序时,应用程序无法向服务器发送信息,因此请在服务器上注册您的应用程序。


0

打开 fabric.properties 文件并检查 apiKey 的值是否为 YOUR_API_KEY。 如果是,则从 AndroidManifest.xml 复制您的 API Key,并将其粘贴到 fabric.properties 中的 apiKey 中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接