V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
gzxu
V2EX  ›  Android

是我看走眼了吗?最新 Android 11 依然不会强制 Scoped Storage

  •  
  •   gzxu · 2020-08-15 16:57:30 +08:00 · 13753 次点击
    这是一个创建于 1559 天前的主题,其中的信息可能已经有所发展或是发生改变。

    刚看到文档里面更新了这一节 Android 存储用例和最佳做法 - 暂时停用分区存储,里面说:

    在您的应用与分区存储完全兼容之前,您可以使用以下方法之一暂时停用分区存储:

    • 如果您以 Android 10 ( API 级别 29 )或更高版本为目标平台,请在应用的清单文件中将 requestLegacyExternalStorage 的值设置为 true

    注意:当您将应用更新为以 Android 11 ( API 级别 30 )为目标平台后,如果应用在搭载 Android 11 的设备上运行,系统会忽略 requestLegacyExternalStorage 属性

    意思是只要不更新到最新的 API 30,就可以继续在 /sdcard 下面随心所欲咯?

    我感觉最终 beta 版都出来了,现在这样的文档反映的就是最终发布版本的行为。说老实话真的还挺失望的,从 Android 10 开始期待到现在就得到个这。


    老了,折腾不动了。说点题外话,现在再也不是属于极客们的那个时代了。

    第 1 条附言  ·  2020-11-22 20:48:06 +08:00
    cf. /t/728030,用 appops 可以强制禁用对公用目录的访问。至少我的 Android 10 上是如此。相关代码可以在 cs.android.com 上搜索 READ_EXTERNAL_STORAGE 查阅
    26 条回复    2020-08-29 10:31:36 +08:00
    Numbcoder
        1
    Numbcoder  
       2020-08-15 17:18:35 +08:00   ❤️ 9
    别忘 Google 是一个广告公司,隐私都保护好了,怎么给你推广告,怎么提高广告的转化率
    terence4444
        2
    terence4444  
       2020-08-15 17:33:10 +08:00 via iPhone
    从 Android 4.4 开始就看出来了,用户隐私选项扭扭捏捏不给用,到 5.0 才慢慢开始启用。

    iOS 14 断了 Facebook 收集隐私的财路,所以它跟着 Epic 骂苹果呢。
    Jirajine
        3
    Jirajine  
       2020-08-15 17:33:53 +08:00 via Android   ❤️ 6
    @Numbcoder 你搞反了,越是广告公司越是重视(针对第三方的)隐私保护,信息只有他自己拿到,别人拿不到,利益才能最大化。
    hoyixi
        4
    hoyixi  
       2020-08-15 18:12:03 +08:00
    希望物联网在日常民用普及的时候,能有新一代操作系统诞生
    weilaix
        5
    weilaix  
       2020-08-15 18:12:38 +08:00 via Android
    甚至在 Android11 回收站功能还是隐藏的。不知道 google 怎么想的
    TVBG
        6
    TVBG  
       2020-08-15 18:19:29 +08:00   ❤️ 4
    Google Play 会有上架限制,只是我们这里就……
    azh7138m
        7
    azh7138m  
       2020-08-15 18:56:26 +08:00 via iPhone
    确实
    前阵子差点被睿智移动 App 气死,一定要读手机状态,AppOps 也不好使
    只能换 iPhone 了
    mxalbert1996
        8
    mxalbert1996  
       2020-08-15 20:08:08 +08:00 via Android
    毕竟要保证旧应用的兼容性,不可能这么快就一刀切的。
    12101111
        9
    12101111  
       2020-08-15 20:12:07 +08:00
    https://support.google.com/googleplay/android-developer/answer/113469#targetsdk
    Android 9 ( API 级别 28 )

    2019 年 8 月 1 日:新应用必须符合
    2019 年 11 月 1 日:应用更新必须符合

    Android 10 ( API 级别 29 )*

    2020 年 8 月 3 日:新应用必须符合
    2020 年 11 月 2 日:应用更新必须符合

    google (似乎)和国内的各大应用市场达成协议,要求国内的市场同样遵守该策略,每年提升一次 target sdk
    dinghmcn
        10
    dinghmcn  
       2020-08-15 20:30:32 +08:00 via Android
    那怎么办?毕竟要向后兼容,googleplay 上架新版本对 sdk 版本有限制的,国内无解
    janus77
        11
    janus77  
       2020-08-15 21:48:46 +08:00
    慢慢来的,直接砍掉是不可能的,历史包袱太多了,不说那么多旧设备,就算是应用本身也是一直在用老方法,如果你不给出兼容方案的话那些应用的正常功能可能也会受影响
    楼上那些可能不太注意,国内的应用市场现在也在限制最低 sdk 版本了。这点做过上架的应该知道
    WebKit
        12
    WebKit  
       2020-08-15 22:30:18 +08:00 via Android
    应用商店上架的应用有最低版本限制的,还记得去年的最低 SDK28 限制吗?
    WebKit
        13
    WebKit  
       2020-08-15 22:31:23 +08:00 via Android
    @dinghmcn 国内跟 Google 同步的。去年所有商店集体要求最低版本 28
    bclerdx
        14
    bclerdx  
       2020-08-16 00:15:01 +08:00
    @WebKit 请区分 targetSdkVersion 和 minSdkVersion 的区别。
    bclerdx
        15
    bclerdx  
       2020-08-16 00:16:13 +08:00
    @12101111 这个是目标 SDK 或目标 API 的。
    RikkaW
        16
    RikkaW  
       2020-08-16 03:39:27 +08:00   ❤️ 8
    真的强制了用户反而会不开心,因为「让存储分开但是应用的行为不受影响」几乎是一件不可能的事情(

    在 Android 10 DP2 的确「强制」了,但是旧应用怎么办呢,只能靠奇奇怪怪的让旧应用们「能用」(跟 Rikka 发明差不多,核心靠挂载,辅以各种特技)。DP2 的方案甚至还包括了「媒体存储返回假路径然后 hook IO 函数们在里面帮你用 content provider 」这样过于夸张的特技。但是,特技满天飞,还是有应用会坏掉。大部分的用户只会因为应用坏了而大叫,不会关心分什么区存储。

    所以,从 Android 10 DP3 开始,Google 的方案就从「尝试改变老应用行为」变为「行为跟没存储权限几乎一致,靠 Google Play 对 target API 限制来缓步强制应用们适配」。( Android 11 最新的 beta 又加入了又给 sdcard 来一层 fuse,在里面悄咪咪变成用媒体存储,为了让没有脑子的人开发人开心真的是操碎了心)

    觉得没什么好抱怨的,只在两个版本的系统就尝试了至少两种完全不同的方案并且真的确定已经是够快的了(
    philipjf
        17
    philipjf  
       2020-08-16 05:41:41 +08:00 via iPhone
    新版本不给偷隐私,第三方就不兼容,第三方不兼容,硬件厂就不更新系统,新系统没人用也就废了,反正安卓用户万年不更新系统也没啥意见
    Jerami
        18
    Jerami  
       2020-08-16 07:16:43 +08:00 via Android
    @Numbcoder 这跟推送广告没啥关系吧,要是真的想要广告利润最大化,谷歌首页都应该给你堆广告。
    evilic
        19
    evilic  
       2020-08-16 09:51:02 +08:00
    sdk 版本要求不得落后 1 年。所以没啥问题。
    mgrddsj
        20
    mgrddsj  
       2020-08-16 10:31:31 +08:00 via Android
    @bclerdx #14 #15 然而题主提到的 Android 11 的存储限制就是基于 Target SDK 来限制的啊。
    Numbcoder
        21
    Numbcoder  
       2020-08-16 14:47:42 +08:00
    @Jerami 不是每个公司都像小米这么 low 的。既要保证用户体验,又要在不知不觉中把钱给赚了
    wanglufei
        22
    wanglufei  
       2020-08-16 17:27:07 +08:00 via Android
    这个要考虑对旧应用的兼容,未来要在 google play 更新上架里面控制
    howellz
        23
    howellz  
       2020-08-18 10:02:18 +08:00
    主要是这个历史包袱太大了
    rangoBen
        24
    rangoBen  
       2020-08-21 18:32:00 +08:00
    关于广告这块,已经出了 MSA 了。替代 imei
    Maskeney
        25
    Maskeney  
       2020-08-29 10:28:31 +08:00
    @RikkaW #16 真要 Android 自己完全实现分区储存 rikka 就没钱钱赚了( x
    Maskeney
        26
    Maskeney  
       2020-08-29 10:31:36 +08:00
    @philipjf #17 你这个逻辑不成立,新设备必然要搭载新系统
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5418 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 03:31 · PVG 11:31 · LAX 19:31 · JFK 22:31
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.