【发布时间】:2019-04-01 17:20:02
【问题描述】:
我只是在 Google Play 控制台中检查我的一个 Android 应用程序的 ANR 和崩溃。
我随机选择打开崩溃选项卡上的“显示隐藏”开关(不知道隐藏和不隐藏是什么意思,这是我第一次打开它),我在列表顶部看到一个崩溃每天发生数百次,影响数百名用户。
我从堆栈跟踪中收集到它与 Android 支持库有关,但我不知道原因是什么,到目前为止,谷歌搜索堆栈跟踪行并没有发现任何有用的信息。
当我在 3 月 22 日发布一个新的次要应用版本时才开始发生这种情况,但从我在 repo 历史中可以看到,我所做的更改非常小,所以不要解释这一点。
这是堆栈跟踪:
java.lang.NullPointerException in android.support.v4.content.FileProvider.parsePathStrategy
java.lang.RuntimeException:
at android.app.ActivityThread.installProvider (ActivityThread.java:6643)
at android.app.ActivityThread.installContentProviders (ActivityThread.java:6185)
at android.app.ActivityThread.handleInstallProvider (ActivityThread.java:3452)
at android.app.ActivityThread$H.handleMessage (ActivityThread.java:1939)
at android.os.Handler.dispatchMessage (Handler.java:106)
at android.os.Looper.loop (Looper.java:193)
at android.app.ActivityThread.main (ActivityThread.java:6923)
at java.lang.reflect.Method.invoke (Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:870)
Caused by: java.lang.NullPointerException:
at android.support.v4.content.FileProvider.parsePathStrategy (FileProvider.java:584)
at android.support.v4.content.FileProvider.getPathStrategy (FileProvider.java:558)
at android.support.v4.content.FileProvider.attachInfo (FileProvider.java:376)
at android.app.ActivityThread.installProvider (ActivityThread.java:6638)
我认为 this is the line 在 Android 支持库的堆栈跟踪中被引用。
任何想法可能是什么原因?
更新
更多挖掘,我在AndroidManifest.xml 内部<application> 中找到这3 个条目:
<provider android:authorities="${applicationId}.provider" android:exported="false" android:grantUriPermissions="true" android:name="android.support.v4.content.FileProvider">
<meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/provider_paths"/>
</provider>
<provider android:authorities="${applicationId}.provider" android:exported="false" android:grantUriPermissions="true" android:name="de.appplant.cordova.emailcomposer.Provider">
<meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/emailcomposer_provider_paths"/>
</provider>
<provider android:authorities="${applicationId}.provider" android:exported="false" android:grantUriPermissions="true" android:name="de.appplant.cordova.plugin.notification.util.AssetProvider">
<meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/localnotification_provider_paths"/>
res/xml/中有3个对应文件:
- provider_paths.xml
- localnotification_provider_paths.xml
- emailcomposer_provider_paths.xml
这是一个 Apache Cordova 项目,因此这些条目由以下人员生成:
每个 XML 文件都包含相同的内容:
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<external-path name="external_files" path="."/>
</paths>
【问题讨论】:
-
如果有帮助,请检查stackoverflow.com/questions/45973746/…它与您的问题相似。
-
谢谢,虽然这些帖子提到了类似的错误,但它们并不相同。我还应该强调,崩溃似乎是间歇性的或由边缘情况引起:我无法在测试设备上重现它们,大多数用户 (98%) 不受影响。
标签: android cordova crash cordova-plugins android-support-library