
手机
compileSDKversion 这个是编译期间你所使用的api版本,一般越高越好,越高表示开发时可以 使用的api越新,并且可以避免使用被抛弃的sdk。 minSdkVersion 这个是支持的最小SDK版本,很好理解,在小于minSdkVersion的
手机系统上无法安装 targetSdkVersion 为兼容而生,使开发的app在各个版本的
手机系统上表现一致,如果实际
手机系统低于开发时定义的targetAPI,那么会以系统api版本为准。而如果实际
手机系统的api版本高于开发时定义的targetApi,则会以targetSDK版本为准,缺点就是这样会放弃了新版本的一些特性 在
Android 10之前的版本上,我们在做文件的操作时都会申请存储空间的读写权限。但是这些权限完全被滥用,造成的问题就是
手机的存储空间中充斥着大量不明作用的文件,并且应用卸载后它也没有删除掉。 为了解决这个问题,
Android 10 中引入了Scoped Storage 的概念,通过添加外部存储访问限制来实现更好的文件管理。 首先明确一个概念,外部储存和内部储存。
Android/data/---存储各个App的外部私有目录 与内部存储类似,命名方式是:
Android/data/xx------xx指应用的包名。 如:/sdcard/
Android/data/com.fish.myapplication 读写App外部私有目录 只要拿到根目录,就可以遍历寻找其它子目录/文件。 比如各个App在/sdcard/目录下创建的目录,如
支付宝创建的目录:alipy/,
微博创建的目录: com.sina.weibo/,qq创建的目录:com.tencent.mobileqq/等。 剩下的都需要申请存储权限,
Android 10.0前后对于存储作用域访问的区别就体现在如何访问剩余这些目录内的文件。 因为不同厂商、系统版本的原因,所以上述的方法并没有一个固定的文件路径。了解了上面的概念,那我们所说的外部储存访问限制,可以认为是针对getExternalStorageDirectory()路径下的文件。 在
Android 10 之前 ,用户可以随意在SD 卡创建文件目录,比如我们能够直接在/sdcard/目录下创建目录/文件。事实上,很多App就是这么干的,目录结构很乱,而且App卸载后,对应的目录并没有删除,于是就是遗留了很多垃圾文件,久而久之不处理,用户的存储空间越来越小。 总结弊端如下: 1、在设置里Clear storage或者Clear cache并不能删除该目录下的文件 2、卸载App也不能删除该目录下的文件 3、App可以随意修改其它目录下的文件,如修改别的App创建的文件等,不安全 好处: 1、此处新建的目录不会被设置里的App存储用量统计,让用户看起来自己的App占用的存储空间很小 2、方便操作文件 面对众多App随意新建目录/文件的现象,
Google在
Android 10.0上重拳出击了引入Scoped Storage、分区存储,原理如下: 最简单粗暴的方法就是在
AndroidManifest.
XML 中添加
Android:requestLegacyExternalStorage=true 来请求使用旧的存储模式。但是我不推荐此方法。因为在下一个版本的
Android中,此条配置将会失效 参考文章