适配android P

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xiatiandefeiyu/article/details/80782498

android的P到来,真是让我们这群开发android的程序员蛋疼了不少,因为它加入了不少限制,尤其是非SDK api使用的限制,妈的以后非sdk的api调用直接给你抛异常奥,听起来是不是很兴奋尴尬。很想说适配个屁啊,哈哈确实是适配个P

官方适配文档

下面来看一下保存非sdk有哪些后果吧,这里引用官方文档的图


我去这么多异常,在android p系统手机出来后,你什么都没改的话,你的app也有可能随时崩溃啊,这个用户怎么忍得了,反射调用只要不是sdk里的api全部给你抛异常,这是不是预示着热修复和插件化快走到尽头了?我们在用jni用的opencv库是不是直接抛异常?第三方分享库还能用吗?推送库还能用吗?都不能用了的话是相当糟糕的。

幸亏P有两种名单:

浅灰名单包含在 Android P 中继续工作,但我们不能保证在未来版本的平台中能够继续访问的函数和字段。 如由于某种原因,您不能实现替代列入浅灰名单的 API 的方案,则可以提交错误,以请求重新考虑此限制。

深灰名单包含计划在未来的 Developer Preview 版本中不可访问的函数。

也就是目前我们不确定哪些是浅灰名单,哪些是深灰名单,这个我们可以下载最新的android studio3.2预览版来下载P的模拟器映像,然后运行你的app看看哪些地方不能用了,如果实在有的地方原生sdk无法解决,那么你可以给谷歌提交错误,让他们把这个第三方也放入浅灰明单中。

测试你的应用是否适配android P

上面这些你不需要将targetSdkVersion设置为“P”,只要你的手机是P系统的就会给你整出这么多事。如果你将targetSdkVersion设置为P的时候


你搞个前台服务你都得动态请求权限,搞什么?你要用Build获取唯一序列号的时候你还得动态申请申请Read_PHONE_STATE权限;你以前用的BouncyCastle加密方式被移除了,所以你需要换到新的实现方式;每个进程的webView对缓存的数据是私有化的,如果你用多进程的webview在P中没有做处理的话,还是像以前一样调用CookieManager设置cookie或其他api的时候,系统会直接崩溃,但是原来采用多进程加载Webview是因为webview占用内存大、容易内存泄露才采用的这种方案,如果非得在P中使用多进程Webview的话,得为每个进程的WebView设置一个缓存目录,通过最新api(setDataDirectorySuffix())设置;最后android P已经完全禁止其他应用访问本应用数据内容,就算你通过目录文件访问都不行(以前是可以的,这是不是预示着360什么的清除别的程序垃圾、缓存的功能失效),如果要实现数据共享的话,只能用 content provider外部存储空间方式来实现共享。

猜你喜欢

转载自blog.csdn.net/xiatiandefeiyu/article/details/80782498