Fork me on GitHub

Android的适配之版本内容适配

版本内容适配

当前主要需要进行适配的版本有6.0、7.0、8.0、9.0、10.0、11.0、12.0、13.0

Android 14

  • 前台服务需要提供服务类型 <service android:foregroundServiceType="specialUse/systemExempted/remoteMessaging/shortService/health等"></service>
  • 对于需要动态加载的代码,需要指定为只读状态
  • 安装App的版本提高到6.0,,不在兼容安装6.0以下的App
  • 闹钟、字体缩放、通知权限调整、注册广播需要export等

Android 13

细化的媒体权限、内置图片选择器、隐藏剪贴板中的敏感内容、屏蔽不匹配的 Intent、针对 Wifi 设备的新运行时权限、广告 ID 权限。
Android13的适配内容

Android 12

重点需要适配的是:授予大致位置信息权限、剪贴板访问通知、更安全的组件导出。
参考

Android 11

重点是

  • 强制执行分区存储
  • 单次授权和自动重置权限
  • ACCESS_BACKGROUND_LOCATION权限申请的升级

其他升级的

  • 签名
  • 状态栏的高度需要使用WindowMetrics来获取
  • 软件包可见性

Android 10

重点适配内容

  • 分区存储:应用数据分区和多媒体存储
  • 设备跟踪的ID识别增加特许权限
  • 限制对剪贴板数据的访问权限
  • 位置权限增加:ACCESS_BACKGROUND_LOCATION

其他

  • 通知回复
  • 夜间模式(深夜主题)
  • 可折叠设备的支持
  • 快捷方式
由于系统的供应商不同,存储的路径可能不同,这里默认是以源码的路径进行展示
// /data/data/your.application.package/customDir
 File internal_m1 = getDir("customDir", 0); 
// /data/data/your.application.package/files
 File internal_m2 = getFilesDir();

// /storage/emulated/0
 File external_m1 = Environment.getExternalStorageDirectory();
 
// /storage/emulated/0/Android/data/your.application.package/files
 File external_m2 = getExternalFilesDir(null);

// /storage/emulated/0/Android/data/your.application.package/files/Pictures
 File external_m2_Args = getExternalFilesDir(Environment.DIRECTORY_PICTURES);

// /storage/emulated/0/Pictures
 File external_m3 = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
 
//如果有可移动的存储介质的话  file[]数组长度为两个
// /storage/emulated/0/Android/data/your.application.package/files;/storage/sdcard1/Android/data/your.application.package/files
 File[] external_AND_removable_storage_m1 = getExternalFilesDirs(null);

// /storage/emulated/0/Android/data/your.application.package/files/Pictures;/storage/sdcard1/Android/data/your.application.package/files/Pictures 
 File[] external_AND_removable_storage_m1_Args =getExternalFilesDirs(Environment.DIRECTORY_PICTURES);

Android 10的路径适配分类展示

Android 9

  • 非加密的网络请求
  • canvas的修改
if (Build.VERSION.SDK_INT >= 26) {
  canvas.clipPath(mPath);
} else {
  canvas.clipPath(mPath, Region.Op.REPLACE);
}

5-8的适配汇总

Android 8

  • 通知增加分组
  • 安装APK
  • SecurityException的闪退,配置ContentProvider
  • 静态广播无法正常接收
  • Android 8.0 非全屏透明页面不允许设置方向

Android 7

  • 应用间共享文件:FileProvider
  • V2签名
  • apache库
defaultConfig {
       useLibrary 'org.apache.http.legacy'
   }

Android 6

  • 运行时权限的支持和分级,这方面市场上已经有很多的成熟方案,在AndroidX之后的权限申请可以采用新的申请方式(使用ActivityResultContract),效果更好。
  • 取消Apache HTTP
  • 硬件标识符访问权的修改
    存储区别示意图

Android 5

  • ART取代Dalvik
  • 通知的修改
  • Material Design的引入

Android 4

  • 沉浸式全屏和透明系统状态栏
  • 属性动画
posted @ 2021-11-22 17:38  KevinAt2022  阅读(347)  评论(0)    收藏  举报