Unity Landroid/arch/lifecycle NoClassDefFound报错

在 Unity 项目中集成 Android 插件时,某插件不能使用,查看 Logcat 处报错 NoClassDefFoundError:Failed resolution of:Landroid/arch/lifecycle$Event。
问题复现
在 Unity 中集成AndroidUtilCode
插件以便在 Unity 中控制安卓亮度、音量等功能,集成后调用相关方法后报错,报错内容为:
NoClassDefFoundError:Failed resolution of:Landroid/arch/lifecycle$Event
看起来应该是缺少 lifecycle 依赖。
解决问题
Unity 打 apk 包时不会主动包含 Plugins 文件夹没有的插件依赖。而 lifecycle 并不是原生包含的插件,其作为扩展集成在support library 26.1.0
及之后的库中。
安卓原生开发的小伙伴为啥不报错呢,因为他们使用的包管理工具(maven等)自动拉下来了这些依赖,而 Unity 并不会这样做。为了让 Unity 中的安卓插件用上 lifecycle,我们需要将 lifecycle 的 aar 或 jar 包放到 Unity 插件目录下。
Unity 涉及到的依赖文件有两个,分别是arch-lifecycle-common
与arch-lifecycle-runtime
(下载链接见文章末尾)。
下载后,将他们放到如下目录:
Assets/Plugins/Android
之后重新打包,问题解决。
文件下载
这里提供本博使用的 1.0.0 版本文件,其他版本请自行下载。
# 百度网盘秒传代码
a6624c325dd150cdd39dd94d5877723f#a6624c325dd150cdd39dd94d5877723f#12366#arch-lifecycle-common-[azimiao.com]-1.0.0.jar
266009cd71ff12d1370c3622c436789a#266009cd71ff12d1370c3622c436789a#6460#arch-lifecycle-runtime-[azimiao.com]-1.0.0.jar
百度网盘秒传原理及使用方法参见百度网盘秒传链接怎么用及实现原理。