构建android -gradle项目时遇到崩溃的开发人员工具错误

时间:2014-07-31 13:22:51

标签: android gradle crashlytics

我正在尝试使用eclipse构建一个android gradle项目,但是在使用命令行构建项目时出现此错误:

 FAILURE: Build failed with an exception.

 * What went wrong:
 Execution failed for task ':app:crashlyticsCleanupResourcesRelease'.
 > Crashlytics Developer Tools error.

 * Try:
 Run with --stacktrace option to get the stack trace. Run with --info or --debug
 option to get more log output.

 BUILD FAILED

我使用gradle版本1.10也试过gradle版本1.12但是我得到了同样的错误

这是我的build.gradle文件:

        buildscript {
            repositories {
                mavenCentral()
                maven { url 'http://download.crashlytics.com/maven' }
            }
            dependencies {
                classpath 'com.android.tools.build:gradle:0.12.+'
                classpath 'com.crashlytics.tools.gradle:crashlytics-gradle:1.+'
                classpath 'com.jakewharton.sdkmanager:gradle-plugin:0.10.+'
            }
        }
        apply plugin: 'android-sdk-manager'
        apply plugin: 'android'
        apply plugin: 'crashlytics'

        repositories {
            mavenCentral()
            maven { url 'http://download.crashlytics.com/maven' }
        }

        android {
            compileSdkVersion 19
            buildToolsVersion "19.1.0"
            lintOptions.checkReleaseBuilds false

            defaultConfig {
                minSdkVersion 7
                targetSdkVersion 19
            }

            signingConfigs {
                release {
                    storeFile file(STORE_FILE)
                    storePassword STORE_PASSWORD
                    keyAlias KEY_ALIAS
                    keyPassword KEY_PASSWORD
                }
            }

            buildTypes {
              debug {

               ext.enableCrashlytics = false
               buildConfigField "boolean", "LOG_CRASHES", "false"
              }

              release {
                 buildConfigField "boolean", "LOG_CRASHES", "true"
                 runProguard true
                 proguardFile 'proguard.cfg'
                 signingConfig signingConfigs.release
              }
            }
        }

        dependencies {
            compile 'com.actionbarsherlock:actionbarsherlock:4.4.0@aar'
            compile 'com.android.support:support-v4:19.1.0'
            compile 'com.crashlytics.android:crashlytics:1.+'
        }

6 个答案:

答案 0 :(得分:36)

尝试使用Fabric的Twitter工具包时出现了类似的错误

Error:Execution failed for task ':app:fabricCleanupResourcesDevDebug'.
> Crashlytics Developer Tools error.

详细错误

  

错误 - Crashlytics Developer Tools错误。   java.lang.IllegalArgumentException:Crashlytics发现了一个无效的API密钥:XXXXXXXXX。   检查Crashlytics插件以确保已成功添加应用程序!   请联系support@fabric.io寻求帮助。

登录Fabric后,下载AndroidStudio插件,让它配置一切正常。

(顺便说一句,我真的不喜欢这个设置流程)

编辑:也可以在不安装AndroidStudio插件的情况下完成。请遵循Fabric网站https://fabric.io/downloads/gradle

中的这些说明

答案 1 :(得分:19)

这不是原始问题的解决方案,但您也可以通过其他方式遇到此错误。如果您正在关注Gradle Advanced Setup的文档,则可能包含以下代码

debug {
    ext.enableCrashlytics = false
}

现在,如果您正在测试应用程序,则可能尝试设置ext.enableCrashlytics = true。显然,这会导致Crashlytics出现错误,并且不是此变量的有效值。

因此,如果您希望为调试版本启用Crashlytics,则在测试或删除它时,您需要注释掉该行。

答案 2 :(得分:13)

将此行添加到应用程序内部标记

<?php


  if (isset($_POST['submit'])) {

    $data_missing = array();

    if(empty($_POST['airline'])) {
      $data_missing[] = 'Flygbolag';
    } else {
      $airline = $_POST['airline'];
    }

    if(empty($_POST['registration'])) {
      $data_missing[] = 'Registrering';
    } else {
      $registration = $_POST['registration'];
    }

    if(empty($_POST['msn'])) {
      $data_missing[] = 'MSN';
    } else {
      $msn = $_POST['msn'];
    }

    if(empty($_POST['aircrafttype'])) {
      $data_missing[] = 'Flygplanstyp';
    } else {
      $aircrafttype = $_POST['aircrafttype'];
    }

    if(empty($_POST['enginedata'])) {
      $data_missing[] = 'Motorer';
    } else {
      $enginedata = $_POST['enginedata'];
    }

    if(empty($_POST['loc'])) {
      $data_missing[] = 'Plats';
    } else {
      $loc = $_POST['loc'];
    }
  }

  if (empty($data_missing)) {
    require_once('../dbconnect.php');

    $query = "INSERT INTO Aircraft_spotted VALUES (?, ?, ?, ?, ?, ?)";

    $stmt = mysqli_prepare($conn, $query);
    mysqli_stmt_bind_param($stmt, "ssisss", $airline, $registration, $msn, $aircrafttype, $enginedata, $loc);

    mysqli_stmt_execute($stmt);

    $affected_rows = mysqli_stmt_affected_rows($stmt);

    if ($affected_rows == 1) {
      echo "Aircraft entered to database";
      mysqli_stmt_close($stmt);
      mysqli_close($conn);
    } else {
      echo "Error occured: " . mysqli_error();
    }

  } else {
    echo "You need to enter the following data: <br />";

    foreach ($data_missing as $missing) {
      echo "$missing<br />";

      echo "string";
    }
  }

?>

我解决了这个问题

答案 3 :(得分:9)

我通过在AndroidManifest.xml中用“com.crashlytics.ApiKey”替换“io.fabric.ApiKey”解决了这个问题(我不想改变Crashlytics lib)。所以最后一个是:

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

答案 4 :(得分:5)

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

我有类似问题。只需将这些行添加到您的Android清单文件中即可。

答案 5 :(得分:1)

所以我遇到了这个问题并解决了它。

基本上,我试图使用@ string / crashlytics_key_prod,而不是放入实际的密钥。

更换&#34; @ string / crashlytics_key_prod&#34;通过清单中的实际密钥为我解决了这个问题。