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

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

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

(0)
上一篇 2022年4月15日 下午9:20
下一篇 2022年4月15日 下午9:40


相关推荐

  • linux mysql mysql.sock(mysqldump命令详解)

    什么是socat?socat是一个实用的命令行工具。常用方法端口转发#端口转发#socat-d-d-lf/var/log/socat.logTCP4-LISTEN:6666,bind=127.0.0.1,reuseaddr,forkTCP:127.0.0.1:3306#mysql-uroot-h127.0.0.1-P6666-p文件写入#不使用group则默认当前用户soc…

    2022年4月10日
    139
  • xmind打不开xmind文件_鼠标双击无法打开文件

    xmind打不开xmind文件_鼠标双击无法打开文件声明:请大家支持正版!此文仅作个人交流学习!很多小伙伴安装完Xmind后会发现双击无法打开文件,只能在应用界面打开,我在网上也看了很多解决方案,但是很多都是没用的,比如这个:还有说把最大支持的文件大小改成128m,亲测没用。还有想着把pojie包配置给注释掉的,这种可能也是为了支持正版吧/手动狗头后来试了很多方法,发现更改一下pojie包的路径就好了,改成绝对路径就可以直接打开。我用的是xmind8update9版本,亲测可行,如果其他版本的小伙伴试了不行的话,可以评论区一起交流一下~..

    2025年8月8日
    8
  • PyCharm设置中文(无需汉化包)

    PyCharm设置中文(无需汉化包)搜索不到可升级一下版本插件官方地址:https://plugins.jetbrains.com/plugin/13710-chinese-simplified-language-pack—-/versionsIEDA汉化PyCharm汉化WebStorm汉化通用

    2022年5月9日
    77
  • SQL Server内存

    SQL Server内存

    2021年11月28日
    62
  • 免费使用谷歌云服务器一年多少钱_谷歌云服务器永久免费

    免费使用谷歌云服务器一年多少钱_谷歌云服务器永久免费上周自己撸了一年的谷歌云服务器,昨天也帮同事搞了一发。毕竟工作中还是少不了向西方取经。把自己的经验总结一下吧,方便后来之人。说一下前提条件:1.持有外币卡,例有VISA标识、万事达标识、JCB标识的信用卡2.可以上谷歌且有谷歌账号,没有的话自己注册一个。免费申请链接在这:https://cloud.google.com/free/进入申请界面后有一个国家/地区的选项,截止目前没有找到中国的,直接选择了美国即可账户类型选择个人,然后地址直接百度一下美国地址生成器然后找到对应的网站,复制粘贴

    2022年10月5日
    4
  • pytest的使用_java中方法的调用或使用的地方

    pytest的使用_java中方法的调用或使用的地方Pytest执行用例规则Pytest在命令行中支持多种方式来运行和选择测试用例1.对某个目录下所有的用例pytest2.对模块中进行测试pytesttest_mod.py3.对文件夹进行

    2022年7月29日
    8

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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