Crashlytics Answers 引发 Android 即时应用程序错误

Posted

技术标签:

【中文标题】Crashlytics Answers 引发 Android 即时应用程序错误【英文标题】:Crashlytics Answers throwing error with Android instant apps 【发布时间】:2017-08-05 14:38:53 【问题描述】:

我正在为我的 android 应用程序使用 Crashlytics 版本 2.6.8。我在回答 here 之后在基本功能中配置了 Crashlytics。使用以下代码 sn-p 使用 Fabric 初始化 Crashlytics

Fabric.with(context, crashlyticsKit);

Crashlytics Answers 在启动 Android 即时应用时引发此异常

E/Answers: Failed to enable events
java.io.IOException: ftruncate failed: EACCES (Permission denied)
    at java.io.RandomAccessFile.setLength(RandomAccessFile.java:630)
    at io.fabric.sdk.android.services.common.QueueFile.initialize(QueueFile.java:213)
    at io.fabric.sdk.android.services.common.QueueFile.<init>(QueueFile.java:130)
    at io.fabric.sdk.android.services.events.QueueFileEventStorage.<init>(QueueFileEventStorage.java:58)
    at io.fabric.sdk.android.services.events.GZIPQueueFileEventStorage.<init>(GZIPQueueFileEventStorage.java:32)
    at com.crashlytics.android.answers.AnswersFilesManagerProvider.getAnalyticsFilesManager(AnswersFilesManagerProvider.java:44)
    at com.crashlytics.android.answers.AnswersEventsHandler$4.run(AnswersEventsHandler.java:121)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:423)
    at java.util.concurrent.FutureTask.run(FutureTask.java:237)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:269)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
    at io.fabric.sdk.android.services.common.ExecutorUtils$1$1.onRun(ExecutorUtils.java:75)
    at io.fabric.sdk.android.services.common.BackgroundPriorityRunnable.run(BackgroundPriorityRunnable.java:30)
    at java.lang.Thread.run(Thread.java:818)
 Caused by: android.system.ErrnoException: ftruncate failed: EACCES (Permission denied)
    at libcore.io.Posix.ftruncate(Native Method)
    at libcore.io.BlockGuardOs.ftruncate(BlockGuardOs.java:148)
    at java.io.RandomAccessFile.setLength(RandomAccessFile.java:628)

是因为存储访问造成的吗?如果是这样,是否可以配置 Crashlytics 在即时应用的情况下访问存储?

【问题讨论】:

您是否设置了 Answers 的依赖关系? fabric.io/kits/android/answers/installcompile('com.crashlytics.sdk.android:answers:1.3.13@aar') transitive = true; 【参考方案1】:

您似乎没有在初始化 Answers 本身,而只是在初始化 Crashlytics?

如果您想从 Fabric 获取 Crashlytics 和答案,请尝试以下方法:

    final Fabric fabric = new Fabric.Builder(this)
            .kits(new Crashlytics(), new Answers())
            .debuggable(true)
            .build();
    Fabric.with(fabric);

【讨论】:

以上是关于Crashlytics Answers 引发 Android 即时应用程序错误的主要内容,如果未能解决你的问题,请参考以下文章

Fabric.io Crashlytics 和 Answers 初始化

iOS Fabric Crashlytics Answers Kit不收集数据

无法解决:com.crashlytics.sdk.android :answers-shim:0.0.3

如果我已经在使用 Crashlytics,是不是需要在 Android Studio 中为 Fabric Answers 添加 gradle 导入?

禁用“答案”但不禁用“Crashlytics”

OSX链接错误的Fabric Answers