AndroidP 兼容适配重点
参见 csdn,
直接调用 dex2oat,或者使用不支持 / 不正确的方式编译 dex 文件
原因:
从一开始,dex2oat 就被设计为系统内部使用的编译部署工具,Android 从来都未支持过开发者直接调用 dex2oat 的场景。我们会持续而不定期地对这个工具进行优化,而很多时候其行为变更 (如: 生成的文件及其格式) 都是与之前不兼容的。在大多数情况下,标准的类加载器 (BaseDexClassLoader / DexClassLoader / PathClassLoader) 无法找到或使用由直接调用 dex2oat 生成的文件。
此外请注意,从 Android O 开始,BaseDexClassLoader 和 DexClassLoader 构造函数中的 “optimizedDirectory” 参数已废弃,并在加载 dex 文件时不起作用。
建议:
如果您需要从内存中加载 dex 文件,而不愿在存储中留下痕迹,请使用 Android O 中新增的加载器 InMemoryDexClassLoader。
突破Android P的非公开API限制
参见我的上两篇文章