5

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

一个。该应用程序卡在空白的启动屏幕中。

湾。获取“应用程序已停止”对话框。

我在执行发布构建时发现了一些 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检索设置;[class org.json.JSONException: Value Invalid of type java.lang.String 无法转换为 JSONObject]

第三:经常抱怨manifest中没有API_KEY。但是它已经存在于清单中并且在调试版本中运行良好。

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

<application>标签内。

我还做了以下事情:

  1. 遵循异常跟踪中提到的 url,但它会将我重定向到 crashlytics/downloads 页面。可能我没有权限。

  2. 在 build.xml 中添加 <import file="./ant_tasks/crashlytics_build.xml"/>并包含以下源文件: crashlytics_build_base.xml、crashlytics_build.xml、crashlytics-devtools.jar 和 crashlytics.jar

  3. 在 Order & Export / .classpath 中导出 crashlytics.jar 文件。

<classpathentry exported="true" kind="lib" path="libs/crashlytics.jar"/>

但仍然没有帮助。

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

调试和发布版本都可以正常工作,当然我没有收到任何崩溃报告。

@Override
public void onCreate() {
    super.onCreate();
    Crashlytics.start(getApplicationContext());
}

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

只是为了我的理解:

  1. Crashlytics 是否有不同的 API_KEY 用于调试和发布版本?
  2. 我什至需要使用 crashlytics 构建文件吗?
  3. 发布版本我缺少什么?
4

1 回答 1

1

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

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

于 2013-12-03T19:59:47.513 回答