带有 Android Studio 的 Fabric

Posted

技术标签:

【中文标题】带有 Android Studio 的 Fabric【英文标题】:Fabric with Android Studio 【发布时间】:2015-05-28 13:16:20 【问题描述】:

我正在尝试通过 Fabric 将 Crashlytics 安装到我的 Android Studio 项目中,但遇到以下错误:

Gradle tasks [:App:generateDebugSources, :App:generateDebugandroidTestSources, :Customer:generateDebugSources, :Customer:generateDebugAndroidTestSources, :PDFViewCtrlTools:generateDebugSources, :PDFViewCtrlTools:generateDebugAndroidTestSources]
Crashlytics was applied to an android-library project. 
Android-library support is currently an incubating feature. 
Contact support@fabric.io with any issues.
Error:A problem occurred configuring project ':Customer'.
> Could not resolve all dependencies for configuration ':Customer:_debugCompile'.
  > Could not find com.crashlytics.sdk.android:crashlytics:2.2.1.
    Searched in the following locations:
       https://jcenter.bintray.com/com/crashlytics/sdk/android/crashlytics/2.2.1/crashlytics-2.2.1.pom
       https://jcenter.bintray.com/com/crashlytics/sdk/android/crashlytics/2.2.1/crashlytics-2.2.1.jar
       file:/Users/mes/Documents/Eclipse/sdk/extras/android/m2repository/com/crashlytics/sdk/android/crashlytics/2.2.1/crashlytics-2.2.1.pom
       file:/Users/mes/Documents/Eclipse/sdk/extras/android/m2repository/com/crashlytics/sdk/android/crashlytics/2.2.1/crashlytics-2.2.1.jar
       file:/Users/mes/Documents/Eclipse/sdk/extras/google/m2repository/com/crashlytics/sdk/android/crashlytics/2.2.1/crashlytics-2.2.1.pom
       file:/Users/mes/Documents/Eclipse/sdk/extras/google/m2repository/com/crashlytics/sdk/android/crashlytics/2.2.1/crashlytics-2.2.1.jar
       Required by:
       project:Customer:unspecified > project:App:unspecified
    Information:BUILD FAILED

这是我的 build.gradle

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

    dependencies 
        classpath 'io.fabric.tools:gradle:1.+'
    


apply plugin: 'com.android.library'
apply plugin: 'io.fabric'


repositories 
    mavenCentral()
    maven  url 'https://maven.fabric.io/public' 


dependencies 
    compile fileTree(dir: 'libs', include: '*.jar')
    compile 'com.google.android.gms:play-services:6.1.71'
    compile 'com.android.support:appcompat-v7:21.0.3'
    compile project(":PDFViewCtrlTools")
    compile('com.crashlytics.sdk.android:crashlytics:2.2.1') 
        transitive = true;
    


android 
    compileSdkVersion 21
    buildToolsVersion "21.1.2"


    lintOptions 
        // If true, stop the gradle build if errors are found
        abortOnError false
        //ignore 'ValidFragment'
    

这是我的 AndroidManifest.xml

        <activity
        android:name="com.ecrome.tabook.MainActivity"
        android:label="@string/app_name"
        android:launchMode="singleTop" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
        <meta-data
            android:name="io.fabric.ApiKey"
            android:value="xxxxxx" />
        </activity>

任何想法为什么我收到错误并且我无法编译应用程序?

【问题讨论】:

签出:***.com/questions/23991988/… 确保 build.gradle 属于您的 module 【参考方案1】:

有两个 build.gradle 在 project/build.gradle 的第一个添加:

buildscript 
    repositories 
      //ADD this Line
      maven  url 'https://maven.fabric.io/public' 
    
    dependencies 
        //ADD this Line
        classpath 'io.fabric.tools:gradle:1.22.2'
    
 

在第二个 app/build.gradle

buildscript 
    repositories 
      //ADD this Line
      maven  url 'https://maven.fabric.io/public' 
    
    dependencies 
        //ADD this Line
        classpath 'io.fabric.tools:gradle:1.22.2'
    
 

 apply plugin: 'io.fabric'

 repositories 
      maven  url 'https://maven.fabric.io/public' 
 
 dependencies 
    compile('com.crashlytics.sdk.android:crashlytics:2.6.8@aar')
         transitive = true;
    
 

AndroidManifest

<uses-permission android:name="android.permission.INTERNET" />

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

主活动

protected void onCreate(Bundle savedInstanceState) 
    super.onCreate(savedInstanceState);
    Fabric.with(this, new Crashlytics());
    setContentView(R.layout.activity_main);

【讨论】:

【参考方案2】:

更改这部分,添加@aar 符号

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

通过这种方式,您将从 repo 下载 aar 工件。

【讨论】:

我正在尝试将 Crashlytics 集成到我的库项目中,这是一个单独的项目,但将其引用到我的主项目中。面临同样的问题!如果您已成功将 Crashlytics 集成到库项目中,请分享! 我也确认了它是否正在将AAR文件下载到库项目的explored-aar文件夹中,所以它有AAR文件,但不知道为什么它显示找不到AAR文件的错误进入主项目! 嗨@PareshMayani!。图书馆有aar。但是您如何管理主要项目?它是本地依赖还是与库的 Maven 依赖? 主项目有本地依赖。 我有他们关于设置 Crashlytics into the library subprojects 的文档,因此似乎可以将 Crashlytics 集成到库项目中。而且我也遵循了这个文档中提到的步骤,但又出现了同样的错误!【参考方案3】:

您犯的一个错误是您在活动中添加了元数据

它应该在&lt;activity标签之外和&lt;application标签之内

并确保您在 Application 或 Activity 启动中初始化了一次结构。

Fabric.with(mContext, new Crashlytics());

【讨论】:

以上是关于带有 Android Studio 的 Fabric的主要内容,如果未能解决你的问题,请参考以下文章

带有 Google Play 服务的 Android Studio

尝试在 Android Studio 中创建带有文本的 listView 图像

带有 Android Studio 的房间数据库

带有 Flutter 更新的 Android Studio 导致了索引循环

Android Studio 和带有插件的 IntelliJ IDEA 之间的区别?

带有公司名称的Android Studio重命名包[重复]