非 SDK 接口限制
官方明确指出:目标是在限制使用非 SDK 接口之前确保有可用的公开替代方案。
反射或JNI必须要有替代方案!
如果您不打算以 Android Q 为目标平台,那么其中一些变更可能不会立即对您产生影响。虽然您目前可以使用灰名单中的一些非 SDK 接口(取决于您应用的目标 API 级别),但如果您使用任何非 SDK 方法或字段,则应用无法运行的风险终归较高。
要了解详情,请参阅非 SDK 接口在 Android Q 中的受限情况出现变化以及针对非 SDK 接口的限制。
手势导航
从 Android Q 开始,增加 手势导航 功能。
若启用手势导航,则会影响设备上的所有应用,无论应用是否以 Android Q 为目标平台,都是如此。
例如,如果用户从屏幕边缘向内滑动,系统会将该手势解读为“返回”导航,除非应用针对屏幕的相应部分明确替换该手势。
导航栏区域,系统手势区域,可能需要将这些重叠区域排除出去。
为了确保App与手势导航兼容,您需要将应用内容扩展到屏幕边缘,并适当地处理存在冲突的手势。有关信息,请参阅手势导航文档。
NDK
从 Android Q 开始,共享对象不得包含文本重定位被强制执行
Bionic 库和动态链接器路径变更
从 Android Q 开始,多个路径不再采用常规文件形式,而是采用符号链接形式。如果应用一直以来依赖的都是采用常规文件形式的路径,则可能会出现故障:
- /system/lib/libc.so -> /apex/com.android.runtime/lib/bionic/libc.so
- /system/lib/libm.so -> /apex/com.android.runtime/lib/bionic/libm.so
- /system/lib/libdl.so -> /apex/com.android.runtime/lib/bionic/libdl.so
- /system/bin/linker -> /apex/com.android.runtime/bin/linker
这些变更也会影响文件的 64 位版本&#