Ale*_*xey 29 android google-play
应用程序每月活跃用户超过20000.几个月来它一直在Google Play上播放.在我最近从使用.apk的分发切换到使用.aab进行分发之后,我开始接收崩溃和谷歌游戏商店的随机崩溃.在引入崩溃的构建中没有进行任何其他重大更改.
崩溃发生在应用程序的第一个屏幕上,同时膨胀xml布局.有问题的xml布局是一个简单的初始屏幕,只包含一个图像视图和一个textview.imageview是android.widget.ImageView,不是compat版本,它显示png图像,而不是矢量图像.图像存在于所有可绘制的文件夹变体中:drawable,drawable-mdpi,...,drawable-xxxhdpi.
Fatal Exception: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.company/com.company.ui.splash.SplashActivity}: android.view.InflateException: Binary XML file line #14: Binary XML file line #14: Error inflating class ImageView
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2913)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3048)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6669)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:495)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
Caused by android.view.InflateException: Binary XML file line #14: Binary XML file line #14: Error inflating class ImageView
Caused by android.view.InflateException: Binary XML file line #14: Error inflating class ImageView
Caused by android.content.res.Resources$NotFoundException: Drawable (missing name) with resource ID #0x7f0800b2
Caused by android.content.res.Resources$NotFoundException: Unable to find resource ID #0x7f0800b2
at android.content.res.ResourcesImpl.getResourceName(ResourcesImpl.java:255)
at android.content.res.ResourcesImpl.loadDrawableForCookie(ResourcesImpl.java:785)
at android.content.res.ResourcesImpl.loadDrawable(ResourcesImpl.java:631)
at android.content.res.Resources.loadDrawable(Resources.java:897)
at android.content.res.TypedArray.getDrawableForDensity(TypedArray.java:955)
at android.content.res.TypedArray.getDrawable(TypedArray.java:930)
at android.widget.ImageView.<init>(ImageView.java:189)
at android.widget.ImageView.<init>(ImageView.java:172)
at android.support.v7.widget.AppCompatImageView.<init>(AppCompatImageView.java:71)
at android.support.v7.widget.AppCompatImageView.<init>(AppCompatImageView.java:67)
at android.support.v7.app.AppCompatViewInflater.createImageView(AppCompatViewInflater.java:181)
at android.support.v7.app.AppCompatViewInflater.createView(AppCompatViewInflater.java:105)
at android.support.v7.app.AppCompatDelegateImplV9.createView(AppCompatDelegateImplV9.java:1035)
at android.support.v7.app.AppCompatDelegateImplV9.onCreateView(AppCompatDelegateImplV9.java:1092)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:772)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:863)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824)
at android.view.LayoutInflater.inflate(LayoutInflater.java:515)
at android.view.LayoutInflater.inflate(LayoutInflater.java:423)
at android.view.LayoutInflater.inflate(LayoutInflater.java:374)
at android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:287)
at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:139)
at com.company.ui.splash.SplashActivity.onCreate(SplashActivity.java:58)
at android.app.Activity.performCreate(Activity.java:7136)
at android.app.Activity.performCreate(Activity.java:7127)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2893)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3048)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6669)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:495)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
Run Code Online (Sandbox Code Playgroud)
导致崩溃的xml文件的一部分:
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@id/center"
android:layout_centerHorizontal="true"
android:src="@drawable/logo" />
Run Code Online (Sandbox Code Playgroud)
崩溃发生在所有Android版本上,从4.1.2到9.0.
除了其他设备,我还收到了谷歌Pixel和Nexus 5X的崩溃,两者都没有根源.我碰巧拥有这两种设备.我已经尝试从Google Play和侧载服务(如pureapk)安装我的应用程序,但我无法重现崩溃.
问题类似于Android应用程序包在Android应用程序中引入资源未发现崩溃,但在该问题中,作者能够通过使用矢量drawable compat解决他的问题.这不是我的情况.
虽然测试这个假设很难,但似乎不知何故从apk中缺少整个资源文件夹.我无法重现这个问题,所以我将重新分发应用程序并等待几天,看看崩溃是如何变化的,我宁愿不对实时用户进行测试.
当这个错误发生时,它通常会在同一设备的行中多次发生,这让我相信得到此错误的用户无法启动应用程序.此外,我知道以前使用该应用程序的一些用户不能再使用它了.
总而言之:
1.在谷歌播放
2 切换到Android应用程序包分发后崩溃开始出现.应用程序崩溃它第一次尝试恢复可绘制资源 - 一个简单的png图像
3.崩溃不是android-version具体; 它发生在root和非root设备上
4.如果用户遇到这个bug,他可能会永远陷入困境
是什么导致这次崩溃?有解决方法吗?
Nic*_*cue 25
这几乎可以肯定是用户通过P2P共享程序共享应用程序,或者将APK上传到网络,然后是其他用户从网上下载和安装.
过去常常处理非Android App Bundle应用的用户只需转移并共享主APK.但是你的应用程序包应用程序有很多"拆分APK"用于资源等事情,这就是节省大小的方式.您可以在帮助页面上阅读有关此过程的所有信息.如果用户在未安装正确拆分APK的情况下安装主APK,则在应用首次尝试加载资源时将发生"未找到资源"崩溃.
如果您想支持用户侧载您的应用程序而只支持主APK,您可以尝试检测此情况并向用户显示消息(不使用任何资源),并显示"请从Google Play安装".或者您可能只是决定不支持以这种方式共享APK的用户.
我怀疑从长远来看,网站和P2P共享程序将更好地分享这些APK,所以我不会花太多时间担心它.
| 归档时间: |
|
| 查看次数: |
2256 次 |
| 最近记录: |