带有 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的主要内容,如果未能解决你的问题,请参考以下文章