我最近注意到我的动态壁纸应用在用户尝试在Android 12上设置新引入的“主题图标”功能时会崩溃。这个新功能从用户当前的静态壁纸中计算出一个颜色板,并使用此板来为其他一些应用程序的图标着色(这是新“Material You”设计的一个特性)。但由于某种原因,当它在动态壁纸上运行时,会导致应用程序崩溃并显示以下日志:
Fatal Exception: java.lang.NullPointerException: Attempt to invoke virtual method 'android.graphics.Bitmap android.graphics.drawable.BitmapDrawable.getBitmap()' on a null object reference
at android.os.Parcel.createExceptionOrNull(Parcel.java:2443)
at android.os.Parcel.createException(Parcel.java:2421)
at android.os.Parcel.readException(Parcel.java:2404)
at android.os.Parcel.readException(Parcel.java:2346)
at android.service.wallpaper.IWallpaperConnection$Stub$Proxy.onWallpaperColorsChanged(IWallpaperConnection.java:298)
at android.service.wallpaper.WallpaperService$IWallpaperEngineWrapper.executeMessage(WallpaperService.java:2586)
at com.android.internal.os.HandlerCaller$MyHandler.handleMessage(HandlerCaller.java:44)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loopOnce(Looper.java:226)
at android.os.Looper.loop(Looper.java:313)
at android.app.ActivityThread.main(ActivityThread.java:8582)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:563)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1133)
Caused by android.os.RemoteException: Remote stack trace:
at com.samsung.server.wallpaper.LegibilityColor.convertColors(LegibilityColor.java:418)
at com.android.server.wallpaper.WallpaperManagerService$WallpaperConnection.onWallpaperColorsChanged(WallpaperManagerService.java:2169)
at android.service.wallpaper.IWallpaperConnection$Stub.onTransact(IWallpaperConnection.java:158)
at android.os.Binder.execTransactInternal(Binder.java:1215)
at android.os.Binder.execTransact(Binder.java:1179)
目前我只能在三星Galaxy S21 / S21 Ultra手机上观察到此崩溃问题,但随着用户将系统更新为Android 12,这个问题将出现在更多的手机上。
由于我没有拥有Galaxy S21,而且Android Studio模拟器仍然缺少“主题图标”选项(可能是因为这个功能目前仍处于beta版),所以我目前无法重现此崩溃。
有人有关于如何解决这个灾难性问题的线索吗?任何帮助都将不胜感激!
11月18日更新:我已经能够在Android Studio模拟器上测试新的“主题化图标”功能(在新推出的“SV2”版本上)。这个版本非常有问题,但我没有能够重现类似的崩溃。这让我认为这个崩溃问题是三星手机独有的。
我尝试从“Galaxy Mobile - Remote Test Lab”网站上公开提供的手机中测试一些Galaxy S21设备,但它们实现了一个没有“主题化图标”功能的Android 12 beta版。
我想生成完整的崩溃报告(日志+视频)并发送给三星,但我仍然找不到安装有Android 12的Galaxy S21手机(Android 12系统更新于11月15日开始适用于Galaxy S21手机)。与此同时,随着越来越多的用户将手机更新为Android 12,崩溃报告也在不断增加……这真是太遗憾了!