@
nothingistrue 本主题讨论的是跨应用文件保护问题,Android 难道保证不了应用数据安全的问题吗? Android 的其他权限,如录音、录像、录屏权限能绕过吗?
UWP 可以不适配移动端,但微软这种设计显然是想开发者自动适配移动端,因为 UWP 中桌面独有的 API 很少,很多界面元素也是为触屏设计的,开发者写一个桌面应用,很容易甚至无需改动就能在移动端上运行。
我说 Win32 API 被砍指的是 UWP 应用中被砍了,隔壁 macOS 应用仍然可以调用 POSIX API 去打开文件,去启动新进程,但 UWP 应用给吗?甚至反过来,一个非 UWP 的 Win32 应用想使用 UWP 的 XAML UI ,在很长一段时间都是不可行的,直到微软推出了 Xaml Island 。隔壁 macOS 新旧 API 都兼容,也不见怎么失败。所以我说 UWP 失败的原因是它一刀切,而一刀切的原因是要强迫开发者开发出来的应用能自动兼容移动端,因为如果不砍掉旧的 API ,开发者们就会像 macOS 那样新旧 API 混用,享受新 API 带来的爽的开发体验的同时不给移动端做半点贡献。
微软曾经也做过类似的事情,Windows Vista 时代,一些操作系统已经开始提供丰富好用的 API 了,比如 macOS 的 Cocoa ,
当时传言微软要把.NET 做成 Windows 的基础部分,结果 Vista
发布后大家发现.NET 仅仅是随系统附带了,没有与系统深度集成,Windows
中并没有多少应用是使用.NET 开发的。
微软甚至不给.NET 提供 Win32 API 的声明,
想用.NET 调用底层 API 的话还得自己参照文档写声明,
虽然.NET 加入了 WPF 这个全新的界面库,
但是整个.NET 整得像是个二等公民,像是独立的岛屿。微软自己在 Vista 中加入了一套私有的界面库,但是却不肯公开出来,
言下之意是你想开发得爽就去用我们的.NET 和 WPF 吧,
给我们的.NET 做贡献。这个操作可以说是进一步推动了 Windows 开发框架的碎片化。