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外部存储空间方式来实现共享。

更多相关文章

  1. Android(安卓)中的进程
  2. Android中的进程保活(不死进程)
  3. 第三章:Creating Applications and activities-(四)Android的应用
  4. Android的文字渲染
  5. Android(安卓)App Daemon
  6. Android的原理-不需要太多的剩余内存
  7. [置顶] Android进程管理(详解)
  8. 浅谈Android应用的退出
  9. Android中Binder学习

随机推荐

  1. 简单实现Android顶部工具栏和底部工具栏
  2. Android Jetpack应指南学习笔记8——Navi
  3. Android(安卓)activity 参数传递
  4. Android(安卓)自定义View实现波浪动画
  5. Android使用ViewPager实现左右滑动效果
  6. Android实现三级联动下拉框 下拉列表spin
  7. Android(安卓)-- NDK开发入门
  8. listview自定义背景以及item自定义背景
  9. Android 开发笔记 动画效果 --Animation
  10. Android Logcat 直接输出JSON格式的数据