我的应用程序在调试版本中运行良好,可以看到在我测试了应用程序功能的每台设备上都报告了Crashlytics异常。但是,当我通过Jenkins获得发布版本时:

一种。该应用卡在空白的启动屏幕中。

b。出现“应用程序已停止”对话框。

我在执行发行版构建时发现了一些logcat消息:

第一:转储以下异常

09-30 09:49:05.561: I/Crashlytics(5696): Initializing Crashlytics 1.0.4.15
09-30 09:49:05.591: E/Crashlytics(5696): .
09-30 09:49:05.591: E/Crashlytics(5696): .     |  |
09-30 09:49:05.591: E/Crashlytics(5696): .     |  |
09-30 09:49:05.591: E/Crashlytics(5696): .     |  |
09-30 09:49:05.591: E/Crashlytics(5696): .   \ |  | /
09-30 09:49:05.591: E/Crashlytics(5696): .    \    /
09-30 09:49:05.591: E/Crashlytics(5696): .     \  /
09-30 09:49:05.591: E/Crashlytics(5696): .      \/
09-30 09:49:05.591: E/Crashlytics(5696): .
09-30 09:49:05.591: E/Crashlytics(5696): Something is missing! Find it here:
09-30 09:49:05.591: E/Crashlytics(5696): http://www.crashlytics.com/api/v1/[API_KEY]/android/confirm/[PACKAGE_NAME]
09-30 09:49:05.591: E/Crashlytics(5696): .
09-30 09:49:05.591: E/Crashlytics(5696): .      /\
09-30 09:49:05.591: E/Crashlytics(5696): .     /  \
09-30 09:49:05.591: E/Crashlytics(5696): .    /    \
09-30 09:49:05.601: E/Crashlytics(5696): .   / |  | \
09-30 09:49:05.601: E/Crashlytics(5696): .     |  |
09-30 09:49:05.601: E/Crashlytics(5696): .     |  |
09-30 09:49:05.601: E/Crashlytics(5696): .     |  |
09-30 09:49:05.601: E/Crashlytics(5696): .
09-30 09:49:05.601: D/AndroidRuntime(5696): Shutting down VM
09-30 09:49:05.601: W/dalvikvm(5696): threadid=1: thread exiting with uncaught exception (group=0x40ad8228)
09-30 09:49:05.601: E/AndroidRuntime(5696): FATAL EXCEPTION: main
09-30 09:49:05.601: E/AndroidRuntime(5696): java.lang.RuntimeException: Unable to start activity ComponentInfo{[PACKAGE_NAME]/[ACTIVITY_NAME]}: com.crashlytics.android.CrashlyticsMissingDependencyException:

第二:无法从 https://settings.crashlytics.com/spi/v1/platforms/android/apps/[APP_PACKAGE_NAME]/settings检索设置; [类org.json.JSONException:类型为java.lang.String的值无效,无法转换为JSONObject]

第三:经常提示 list 中没有API_KEY。但是,它已经存在于 list 中,并且在调试版本中运行良好。

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

<application>标记内。

我还做了以下工作:
  • 遵循异常跟踪中提到的url,但是它将我重定向到crashlytics/downloads页面。可能我没有权限。
  • 在build.xml中添加了<import file="./ant_tasks/crashlytics_build.xml"/>,并包括以下源文件:
    crashlytics_build_base.xml,crashlytics_build.xml,crashlytics-devtools.jar和crashlytics.jar
  • 在Order&Export/.classpath中导出了crashlytics.jar文件。
  • <classpathentry exported="true" kind="lib" path="libs/crashlytics.jar"/>
    但仍然无济于事。

    当我取消注释Application.onCreate()中的Crashlytics.start(getApplicationContext());

    调试和发布版本都可以正常工作,当然我没有任何崩溃报告。
    @Override
    public void onCreate() {
        super.onCreate();
        Crashlytics.start(getApplicationContext());
    }
    

    如果有人遇到类似问题,请帮助我解决。提前谢谢了。

    就我的理解而言:
  • Crashlytics是否具有用于调试和发布版本的其他API_KEY?
  • 我什至需要使用crashlytics构建文件吗?
  • 发布版本缺少什么?
  • 最佳答案

    听起来您没有在正确的位置获得编译时的库和属性。我从“我的应用程序在调试版本中运行良好”猜测,您正在使用其他构建环境(可能是IDE),但是在Jenkins上,您正在使用Maven之类的东西。 IDE集成将在调试方面为您提供很多帮助,但是还有其他一些步骤来获取构建功能的命令行。

    当他们转到下载页面时,他们建议,其中应该包含有关如何将Crashlytics部署到任何构建系统的说明。您需要选择正确的文件,然后将其所拥有的内容完全复制/粘贴到您的构建文件中。我已经为Maven做到了这一点,只要您在POM中得到了正确的东西,就应该准备就绪。对于gradle,它甚至可能更容易。

    10-06 05:31
    查看更多