Android 大版本适配

1 市场份额
Android 大版本适配

总结:
市场主要集中在6/7,厂商集中在对8/9的优化
B 所以熟悉android M/N的版本特性是基础,这块市场份额最大;
同时研究android O/P的新特性,来应对厂商最新手机版本
C 旧手机集中在4.4 以后,minSdkVersion设置为19,比较适用
然后我们将App targetSdkVersion改为对应的版本号6/7/8/9 (23M/24N/26O/28P),点击sync Now,开始版本的适配

适配前先了解各个Sdk 非常关键的差异性,如下分别说明:
2 Android 6 适配小结
完整变更介绍见这里,下面只列举个人非常典型的总结
https://developer.android.google.cn/about/versions/marshmallow/android-6.0-changes
A 【权限管理】首先最迫切的就是对动态权限的声明,仅仅manifest 是不够的,还需要requestPermissions动态权限
哪些需要申请,哪些不需要,比较多不容易记忆
没有权限就闪退,所以又不得不做
其实原则很简单:涉及用户隐私了就需要。比如拍照/相册/联系人/短信/定位/存储等
Android6.0动态权限列表、普通权限列表、特殊权限列表
B 【Doze模式】俗称打盹,为了更低的能耗逐渐限制后台的动作,Alarm开始延迟,之前与时间强相关的时钟或定时,就需要注意受Doze 模式的影响。
C 【弃用Apache HTTP 客户端】也就是HttpClient 向HttpURLConnection 转变,优化网络请求。影响App网络部分,包括使用的三方网络框架,需要考虑变更。或者 useLibrary 'org.apache.http.legcy'依旧使用遗产的方案
D 【APK 验证】Manifest中的文件如果没有,包被认为是损坏的。所以自己查一遍,养成好习惯
E 【强化硬件标识符访问权】之前通过wifi,蓝牙拿到mac地址,现在均拿不到,逐步强化对地址的管理

3 Android 7 适配小结
完整的变更见这里
https://developer.android.google.cn/about/versions/nougat/android-7.0-changes
A 【分屏模式】我们targetSDKVersion 切换到N, 则默认允许多窗口,可以关闭
android:resizeableActivity="true"
同一栈下,默认使用相同配置,A允许,B也会允许,除非显示设置
B 【应用间共享文件】通过URI 传递文件,将触发FileUriExposedException,需要使用FileProvider
【移除网络切换广播】移除隐私广播,非常重要
不再收到 Connectivity_action /Action_new_picture /Action_new_video
D 【sharePref 私有权限】shared_prefs 设置为外部可读写,将触发SecurityException

4 Android 8适配小结
完整的变更见这里
https://developer.android.google.cn/about/versions/oreo/android-8.0-changes
A 通知渠道,需要定义Notification Channel
B 前台服务,需要调用startForegroundService
C 未完待续

5 Android 9适配小结
https://developer.android.google.cn/about/versions/pie/android-9.0-changes-all
A 区分针对9.0的应用,与所有targetSdk 应用
B 未完待续