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

AndroidPPreview1,昨天3.8发布,兼容Preview1主要改下targetSdkVersion=28compileSdkVersion为前一个版本(比如27)在AndroidStudio3.2下能完整支持AndroidPPreview1AndroidPPreview1要点1.1约束调用非API接口:比如用JNI、反射来调用一下系统类、方法    Android…

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • intellij idea2022 激活码【2022免费激活】2022.02.07

    (intellij idea2022 激活码)JetBrains旗下有多款编译器工具(如:IntelliJ、WebStorm、PyCharm等)在各编程领域几乎都占据了垄断地位。建立在开源IntelliJ平台之上,过去15年以来,JetBrains一直在不断发展和完善这个平台。这个平台可以针对您的开发工作流进行微调并且能够提供…

  • 标签的使用——html+css学习笔记(一)[通俗易懂]

    标签的使用——html+css学习笔记(一)

  • 如何解决vscode感叹号无法建立html文件的问题

    如何解决vscode感叹号无法建立html文件的问题今天是我使用vscode的第二天,没想到昨天还能用感叹号(!)建立文件模板的vscode今天却不行了,而且中途也重装过一次。虽然重装后能用感叹号(!)弄一个模板出来,但是在此新建文件的时候就没用了。所以我一直在思索为什么会这样,最终功夫不负有心人还是给我找到了。在此,谢谢那位给我指名方向的大佬。正确方法是输入html:5,然后回车就能出现模板了。因为vscode升级了,所以关于模板的设定可能出现了一些变化吧。在这里恳求大家了,如果各位读者觉得好用的话就动动小手点赞吧。拜托了。…

  • Okio的使用和源码解析「建议收藏」

    Okio的使用和源码解析「建议收藏」一.javaNIO和堵塞I/O的区别  1.阻塞I/O通信模型:    阻塞I/O在调用InputStream.read()方法时是阻塞的,它会一直等到数据到来时才会返回       2.javaNIO原理及通信模型    JavaNIO是在jdk1.4开始使用的,是一种非阻塞式的I/O    javaNIO的工作原理:      (1)Jav

  • dll文件注册器_怎么注册dll文件win10

    dll文件注册器_怎么注册dll文件win10点击  开始\所有程序\MicrosoftVisualStudio2008\VisualStudioTools 以管理员身份运行VisualStudio2008CommandPrompt。//注册Dll在VisualStudio2008CommandPrompt键入E:\>regasmmydll.dll.eg:E:\>regasmE:\Assig

  • Torando源码解析之XSRF防护的实现

    Torando源码解析之XSRF防护的实现Torando源码解析之XSRF防护的实现Torando源码解析之XSRF防护的实现Tornado开启XSRF防护的方法源码解析xsrf_form_html()是什么self.xsrf_token是什么Tornado开启XSRF防护的方法http://tornado-zh.readthedocs.io/zh/latest/guide/security.ht…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号