前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android P Preview1 兼容要点[通俗易懂]

Android P Preview1 兼容要点[通俗易懂]

作者头像
全栈程序员站长
发布2022-07-31 12:39:47
4320
发布2022-07-31 12:39:47
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

Android P Preview1,昨天3.8发布,

兼容Preview1 主要改下targetSdkVersion = 28 compileSdkVersion为前一个版本(比如27)

在AndroidStudio3.2下能完整支持Android P Preview1

AndroidP Preview1 要点

1.1 约束调用非API接口:比如用JNI、反射来调用一下系统类、方法

Android P Preview1建立了白色灰名单和黑色灰名单来区别非API接口调用的结果,白色灰名单是不建议使用并有可能在后续版本报错,黑色灰名单属于不可访问的非API接口,调用会报错。一共有8种错误类型。

Means of access

Result

Dalvik instruction referencing a field

NoSuchFieldError thrown

Dalvik instruction referencing a method

NoSuchMethodError thrown

Reflection via Class.getDeclaredField() or Class.getField()

NoSuchFieldException thrown

Reflection via Class.getDeclaredMethod(), Class.getMethod()

NoSuchMethodException thrown

Reflection via Class.getDeclaredFields(), Class.getFields()

Non-SDK members not in results

Reflection via Class.getDeclaredMethods(), Class.getMethods()

Non-SDK members not in results

JNI via env->GetFieldID()

NULL returned, NoSuchFieldError thrown

JNI via env->GetMethodID()

NULL returned, NoSuchMethodError thrown

1.2 移除Crypto provider
1.3 严格的UTF-8 decoder
1.4 访问相机、麦克风和传感器将会挂起app

访问的同时app将不能进行其他操作。需要使用foreground service来监听传感器事件。

2.1 创建前台Sevice,需要声明权限FOREGROUND_SERVICE
2.2 弃用Bouncy Castle ciphers

Bouncy Castle提供了一些JDK系统外的加密算法,见http://blog.csdn.net/qq_29583513/article/details/78866461

在targetSdk低于28(android9.0)时使用会收到Warning,targetSdk为28时仍然使用会报 NoSuchAlgorithmException

2.3 Build.SERIAL需要改为 Build.getSerial(),并声明权限READ_PHONE_STATE

Build.SERIAL 是设备序列号,直接调用将返回”UNKNOWN”,用Build.getSerial()才能正常返回。

2.4 Webview的数据目录不再可共享

如果有多个进程同时访问一个Webview、CookieManager或其他在android.webkit下的API,应用会崩溃(Crash)。

2.5 访问app数据目录将由SELinux来阻塞

不允许直接访问其他app数据目录,App间仍可用IPC来分享数据,共享文件可使用ContentProvider或在外部存储空间。

3.1 宽高位0的View不再能获取焦点

现在需要在初始化时,显式声明View的Foucus。

3.2 支持Apk签名 v3

详细变更:https://developer.android.google.cn/preview/behavior-changes.html

https://developer.android.google.cn/preview/features/security-behav.html

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/128483.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年4月1,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.1 约束调用非API接口:比如用JNI、反射来调用一下系统类、方法
  • 1.2 移除Crypto provider
  • 1.3 严格的UTF-8 decoder
  • 1.4 访问相机、麦克风和传感器将会挂起app
  • 2.1 创建前台Sevice,需要声明权限FOREGROUND_SERVICE
  • 2.2 弃用Bouncy Castle ciphers
  • 2.3 Build.SERIAL需要改为 Build.getSerial(),并声明权限READ_PHONE_STATE
  • 2.4 Webview的数据目录不再可共享
  • 2.5 访问app数据目录将由SELinux来阻塞
  • 3.1 宽高位0的View不再能获取焦点
  • 3.2 支持Apk签名 v3
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档