之前遇到过一种ResourceNotFoundException,是因为在WebView初始化的时候,AssetManager被重新创建了,所有被添加的插件APK路径都被清空了,所以导致资源找不到。
而这一次遇到了一个Crash却是资源路径还在,但是Context无法找到该资源的问题,日志如下:
11-30 13:11:31.701 1250-1338/? A/WindowManager: Unhandled exception while laying out windows
android.content.res.Resources$NotFoundException: Resource ID #0x7a04001d
at android.content.res.Resources.getValue(Resources.java:1375)
at android.content.res.Resources.loadXmlResourceParser(Resources.java:2894)
at android.content.res.Resources.getAnimation(Resources.java:1191)
at android.view.animation.AnimationUtils.loadAnimation(AnimationUtils.java:73)
at com.android.server.wm.OppoAppTransition.loadAnimation(OppoAppTransition.java:192)
at com.android.server.wm.OppoAppTransition.createOppoCustomAnimLocked(OppoAppTransition.java:376)
at com.android.server.wm.OppoAppTransition.loadAnimation(OppoAppTransition.java:242)
at com.android.server.wm.WindowManagerService.applyAnimationLocked(WindowManagerService.java:3804)
at com.android.server.wm.WindowManagerService.setTokenVisibilityLocked(WindowManagerService.java:4898)
at com.android.server.wm.WindowManagerService.handleAppTransitionReadyLocked(WindowManagerService.java:9902)
at com.android.server.wm.WindowManagerService.performLayoutAndPlaceSurfacesLockedInner(WindowManagerService.java:10669)
at com.android.server.wm.WindowManagerService.performLayoutAndPlaceSurfacesLockedLoop(WindowManagerService.java:9461)
at com.android.server.wm.WindowManagerService.performLayoutAndPlaceSurfacesLocked(WindowManagerService.java:9403)
at com.android.server.wm.WindowManagerService.access$400(WindowManagerService.java:203)
at com.android.server.wm.WindowManagerService$H.handleMessage(WindowManagerService.java:8282)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:179)
at android.os.HandlerThread.run(HandlerThread.java:61)
resources.arsc
中。activityOpenEnterAnimation
中使用了该动画overridePendingTransition
中使用该资源,导致的Crash
overridePendingTransition
因为在ActivityManagerService带过去的PackageName是主包的PackageName,而不是插件的,所以在主包的resource.arsc
中找不到对应的插件资源ID,所以导致的Crash。
将使用到的资源,放置到主包即可