为什么谷歌play商店比国内软件商店更好?

对有一定经验的 Android 玩家来说,在下载 App 这件事情上,Play 商店依然是那个值得排除万难、能上就上的选择,没有之一。坊间还流传着各种关于「Play 版」应用的传闻:Play 版应用有 FCM 推送、Play 版应用更省电、Play 版应用没广告、Play 版应用有更适合现代设备的 64 位版本……

这种「Play 版更好」的说法究竟是科技圈的都市传说还是确有其事?为什么国产应用在 Play 商店中正变得越来越少了?

今天这篇文章,我们从一个对普通用户而言可能会有点陌生的概念——目标 API 级别入手,希望能为你解答上面所提到的一部分问题。

Android 有几种写法?

对 Android 系统而言,同一个系统版本一般都对应了不止一种名称,比如对消费者而言 Android 12 是 Android 12,或者根据 Google 按照字母表顺序命名的习惯叫做 Android S;而如果 2019 年 Google 没有官宣取消甜品代号命名方式,Android 12 的甜品代号 Snow Cone 应该也会更加为大众所熟知。

针对开发者,每个 Android 版本还会被分配到一个唯一的整数标识符,这个整数标识符就是 API 级别。

针对这些不同的命名方式,GitHub 上也有人做了一个清晰明了的网站,有兴趣的朋友可以去看看。从网站提供的表格不难看出,和一个甜品代号可以对应多个 Android 版本不同——比如 Android 7.0 和 Android 7.1 都可以叫「牛轧糖」——API 级别和 Android 版本是严格对应的

API 级别 32 只可能对应 Android 12L,Android 12L 的 API 级别也只能是 32。对于市面上运行系统版本千差万别的 Android 设备而言(你同样可以在上面那个网站中看到不同 Android 版本的累计用户占比),API 级别也成为了开发者辨别用户系统版本和应用运行环境、保证应用兼容性的重要参考。

具体而言:

  • 最低 API 级别:代表了应用可以运行的最低系统版本。如果一款应用的最低 API 级别为 28,那么这款应用只能保证在 Android 9 及以上系统版本中的兼容性
  • 目标 API 级别:代表了应用被设计用于运行的系统版本。如果一款应用的目标 API 级别为 32,则代表这款应用被设计用于在 Android 12L 中运行,因此也理所当然地支持 Android 12L 引入的新特性

目标 API 级别与体验

聊完概念我们再来聊聊现象。

即便不谈应用商店本身的使用体验,在能不能下到好应用这一核心需求上,Google Play 和各种国内应用商店都有着天壤之别。

对国内应用商店而言,兼容各种鱼龙混杂、质量参差不齐的应用才是头等大事。毕竟为了赚钱,大部分 Android 设备默认的应用商店也都是自家的,如果用户发现某个应用无法正常运行,即便这个应用本身做得非常糟糕,他们往往也会将「锅」扔给手机厂商。一传十十传百,这家厂商的手机在这位朋友的圈子里就会被打上「不推荐」的评级。

Google Play 商店不一样。

在更广泛的 Android 生态里,大多数 Android 设备都会搭载 GMS 套件、不同厂商的 Android 设备也能从同一个 Google Play 商店中获取应用。因此 Play 商店作为由 Google 直接控制的应用商店,需要做好的就是平台本身:如何规范应用行为、如何保证设备安全、如何进行高效分发……

相对而言,Google 的地位也更加主动一点,如果某款 Play 商店的应用无法正常运行,用户只会将责任归咎于手机和手机系统本身,或是在商店里留个一星差评骂骂开发者。

解决方案藏在目标 API 级别这个概念里。

通过读取应用开发者为应用声明的 targetSdkVersion 清单属性,Android 系统得以判断这款应用的目标 API 级别是多少,进而确定哪些新特性可以在这款应用中启用、哪些特性则需要做适当的兼容处理。

以前几年大家热切期盼的「沙盒」机制分区存储为例,应用必须首先通过清单属性告诉 Android 系统「我的目标 API 级别是 30,是支持最新特性的好应用」,系统在读取到这一声明后才会为应用启用分区存储机制;而对当时需要时间过渡的应用而言,它们在告诉系统自己的目标 API 级别不够 30 之后,系统则不会为这些应用启用「沙盒」机制。

所以在 Android 开发者网站所列出的各种 API 接口、声明数值、字符串等信息旁,也都会有一行小字说明这个功能是在哪一个 API 级别中所加入的;在 Android 13 的介绍中,Google 也有一个专门的页面来说明目标 API 级别在 Android 13 及以上(另一种说法是「以 Android 13 或更高版本为目标平台」)的应用将受到哪些行为变更影响。

两年为期、相对严格

我们可以将 2017 年看作是 Google 开始着手治理 Android 系统「碎片化」问题的开始,这一年,Android 系统本身引入了著名的 Project Treble,让那些有开发实力的团队在系统大版本更新这件事情上直接转入了「快车道」。

但系统更新仅仅是一方面,系统更新带来的各种新功能,除了手机厂商的配合,还是需要应用开发者这边积极响应,才能将 Google 所预想的 Android 体验带到用户手中。

因此也是在 2017 年,Google 开始通过 Play 商店对 Android 应用的最终体验进行干预,首先在 64 位应用支持这件事情上开始了筹备。2021 年 8 月,经过四年多的筹备和过渡,Play 商店中的所有应用都具备了向 64 位设备提供对应支持的能力。

同时,近几年 Play 商店在 API 级别上的规范也逐渐成型。

总体而言,对于那些需要在 Play 商店中持续提供更新的大部分应用,Google Play 商店一般会提供一年左右的时间来让开发者针对最新的目标 API 级别进行适配。

这里 Play 商店将应用分成了三类:新应用、应用更新和现有应用,新应用指此前从未在 Play 商店发布过的应用,应用更新指已经在 Play 商店上架的应用所提供的更新版本,现有应用则对应那些已经发布在 Play 商店、但并不提供任何更新的应用。

举个例子,Android 11 正式版发布于 2020 年 9 月,目前 Google Play 管理中心的要求是:

  1. 2021 年 8 月 2 日之后,新应用必须将目标 API 级别设置为对应的 API 级别 30
  2. 2021 年 11 月 1 日之后,应用更新必须将 API 级别设置为对应的 API 级别 30
  3. 2022 年 11 月 1 日之后,现有应用必须将目标 API 级别设置为对应的 API 级别 30

如此一来,新应用开发和现有应用针对新版本系统特性跟进适配的窗口时间,便被控制在了系统更新后的一年左右时间内。

至于那些妄图通过不提供应用更新保留 Play 商店上架状态的应用,上述限制的存在也有一定的限制作用:2022 年 11 月 1 日之后,如果你的手机已经升级到了 Android 11 及以上系统版本,那些目标 API 级别低于 30 的应用就不会出现在 Play 商店的页面和搜索结果当中了。

我们姑且以「Play 商店中能否搜到」这个行为为前提,对应 Android 版本和 API 级别,梳理一下最近一段时间内 Play 版应用将会提供的一些体验。在 2022 年 11 月 1 日后:

所有能在 Play 商店中下载到的应用,都将提供分区存储(也就是「沙盒」)机制支持。关于分区存储的详细介绍,可以参见少数派此前的文章。

在数月未使用的情况下,已经授予的运行时敏感权限都会被系统自动重置;

权限自动重置与位置权限始终允许设置

申请位置信息访问权限时,最高都只能申请到「仅在使用中允许」,「总是允许」只能在系统设置中手动开启;查询设备上已安装应用的列表时,则只能获取到系统过滤后的已安装应用列表。

另外,2022 年 11 月 1 日后,此前已上架应用的新版本都将支持 Android 12 的新特性,比如自定义通知布局、应用休眠、传感器采样率限制、前台服务启动限制、更快的通知操作响应速度(trampoline 优化)……

国内还停留在三年前

如果用一句话从用户角度去概括本文第三部分的所有内容,那应该是:

在 Android 11 正式版发布两年后,所有 Play 商店中能够搜到的应用,无一例外都是支持 Android 11 新特性的。

所以我们说 Play 商店在目标 API 级别要求上的「严格」,其实也是一种相对而言的说法。因为国内主流应用商店在目标 API 级别的要求普遍还停留在 3 年前

2018 年 7 月,电信终端产业协会(TAF)发布了一份《移动应用软件高API等级预置与分发自律公约》,这份公约由 OPPO、华为、百度、360、阿里、小米、vivo、腾讯发起,要求自 2019 年 5 月 1 日起,新上架和预置应用的目标 API 级别为 26 及以上,自 2019 年 8 月 1 日起,现有应用的更新则必须以目标 API 级别 26 及以上进行开发。目标 API 级别 26 对应的版本是 Android 8.0,Android 8.0 的正式版发布时间是 2017 年 8 月。彼时的国内主流应用商店,还能给出一份与 Google Play 商店节奏一致的目标 API 级别要求。

不知道是电信终端产业协会后续在这方面没有持续跟进,还是 Google 在 2020 年的 Android 11 正式版中引入的分区存储机制过于激进,国内应用商店在目标 API 级别要求这件事情上自那之后便陷入了停滞。目前,我们在 OPPO、小米等厂商的相关开发者文档中,能够检索到的目标 API 级别相关要求大多数都与三年前那份《移动应用软件高API等级预置与分发自律公约》有关。

我所使用的设备上所安装应用的目标 API 级别统计

换句话说,以五年前 Android 8.0 系统体验为基础的应用,依然存在于 2022 年的国内应用商店中。至于数量有多少,你可以下载 AppChecker 这类应用自行检查。

与 Play 商店实际仍有些保守的做法相比,国内应用商店还有更长的路要走,甚至应该先从态度上重视起来——比起最近在 64 位应用这件事情上的被动应战,国内应用商店、尤其是已经有着相当大影响力和号召力的 O、V、华、米几家国内应用商店,应该主动拥抱的「优秀品质」还有不少,与时俱进的目标 API 级别要求可以是其中之一。

谷歌最新数据:Android 11仍然是最受欢迎和最常用的Android版本

IT之家 5 月 21 日消息,谷歌更新了它显示运行不同版本安卓系统的 Android 设备百分比的图表,Android 12 未曾出现,可能是因为它的使用率确实不高,而且目前仍是由 Android 11 在榜单上占据领先地位。

谷歌此前经常更新其饼状分布图来展示每个 Android 版本的份额,但其实这些数据并没有给谷歌带来多大帮助,因为人们发现苹果新版本 iOS 普及速度更快。所以谷歌去年已经停止更新这一图表,并将其删除。

9to5Google 发现,谷歌最近悄悄将 Android 分布图藏在了不重要的位置,但所有信息都可以在 Android Studio 中看到。我们可以更好地了解目前运行特定 Android 版本或更新版本的设备的百分比。

IT之家了解到,2022 年的最新分布数据显示,Android 11 及更高版本的设备以 28.3% 的份额占据了安卓市场的最大份额。考虑到目前大部分新机都开始预装最新的 Android 12 ,尤其是三星以及国产厂商的中端设备,这一数据似乎也没有太意外。

由图可知,目前 Android 10 以 23.9% 的份额落后于 Android11;旧版本 Android 系统份额也呈现出下降趋势。

外媒认为,这个图表缺乏 Android 12 数据可能与它对 Android 开发者的预期目的有关。

据介绍,Android Studio 图表不是作为你的应用程序应该针对哪些 Android API 的指南(Play Store 通过其最低 API 要求来处理这个问题),而是帮助开发者决定到底应该支持哪些版本的 Android。

通过这个图表,开发者可以进一步了解不支持旧版本 Android 可能会失去的潜在客户的占比。

俄罗斯的Android手机无法获得chrome更新,用户在商店中给出了很多负面评论

IT之家 5 月 18 日消息,据俄媒 kommersant 报道,Android 手机上的 Google Chrome 浏览器已在俄罗斯停止更新。

谷歌此前决定禁止俄罗斯用户从 Google Play 商店下载付费应用,然而 Chrome 浏览器是免费的。专家表示,缺乏更新会给用户带来漏洞威胁,并可能影响谷歌在其他国家 / 地区的声誉,并承认这是一个技术错误。

报道称,自 5 月 9 日以来,来自俄罗斯的 Android 设备用户便无法通过 Google Play 商店更新 Chrome 浏览器和 Android System WebView 系统组件。

俄罗斯用户尝试在受影响的设备上更新时,会出现一条消息:“无法下载应用程序”,就像下载其他付费应用一样。

根据 data.ai(原 App Annie)的数据,在新版本发布后,俄罗斯 Google Play 用户在 Google Chrome 商店页面留下了 37,000 条一星差评。相比之下,美国新版本的平均评分为 4.73(满分 5 分)。Android System WebView 也出现了类似的情况,俄罗斯新版本的平均评分为 1.17(7,000 条评论),美国版是 4 .35。

IT之家了解到,谷歌此前宣布从 5 月 5 日起阻止俄罗斯用户下载或更新付费应用,以遵守对俄罗斯实施的制裁。目前,电脑版和 iOS 版的 Chrome 可以正常更新。

俄罗斯的Android用户表示他们无法升级Chrome浏览器

越来越多的俄罗斯 Android 用户报告称,在尝试升级 Chrome 浏览器时候遭遇错误。投诉的数量每天都在增加,但到目前为止,问题的原因仍然不明,仍未解决。根据俄罗斯新闻机构和 Play Store 上的众多用户评论,这些问题始于 2022 年 5 月 9 日,当时 Google 发布了 Android 版 Chrome 101。

那些试图安装最新版本的人得到一个错误,说“Fail to install Google Chrome”(无法安装Google浏览器)。该信息进一步建议用户再试一次,如果没有帮助,可按照故障排除提示进行操作。

Google曾宣布,从 2022 年 5 月 5 日开始,俄罗斯用户和开发者将被禁止从 Play Store 下载或更新付费应用程序。然而,Chrome 浏览器是免费的,所以它应该在这个新政策之外。

此外,错误信息并没有明确说明更新失败的原因,是由于制裁还是技术问题。同时,Google在Play Store上的支持代理建议俄罗斯用户在支持社区讨论中找到解决方案。

谷歌推出新的“Android保护”品牌

IT之家 5 月 18 日消息,据 9to5 Google 报道,谷歌一直在寻求改善其移动操作系统的安全和隐私的普遍看法。谷歌最新推出了“Protected by Android”(受安卓保护)品牌,并且该品牌看起来已准备好进行更广泛的推广。

Android YouTube 频道今天上传了一段 50 秒的视频,讲述了操作系统如何“确保你和你的信息安全,以便可以专注于最重要的事情”。人们使用智能手机的静止图像 —— 可能是安卓支持的,但确定在 0:05 有一部 iPhone 8 Plus—— 在整个过程中都使用了简短的字幕:

“从检测和击败不良应用程序到帮助你控制个人信息,你始终受到 Android 的保护。”

一个流畅的动画看到绿色的 Android 头部变成了选中标记的盾牌:“无论你在做什么,当你受到 Android 的保护时,你就会高枕无忧。”突出的平台和生态系统功能包括:

  • 已通过 Play Protect 验证:“你可以免受恶意软件和有害应用的侵害”

  • 每月安全更新:“不间断的安全保护”

  • 位置访问权限:“并控制你的个人信息”

结尾的标语是“Android 已经围绕你,所以你可以专注于重要的事情”,还有一个指向 protectedbyandroid.com 的链接,但它只是重定向到 android.com/ safety。

除了这则广告之外,谷歌还在 I / O 2022 上展示了 Android 13 即将推出的统一“安全和隐私”设置页面。在突出的“扫描设备”按钮下方有相同的“Protected by Android”品牌和盾牌。

“该页面将以新的操作卡片为基础,通知你为解决任何安全风险应采取的关键步骤。除了警告有关问题的通知外,我们还将及时提供有关如何增强隐私的建议。”

谷歌移动应用开发跨平台框架“fluent”

Flutter 背景

谷歌给Flutter的定义:Flutter是面向iOS和Android应用,提供一套基础代码的高性能高可靠软件开发工具包,使开发者能够在iOS和Android两个最主要的移动平台上,打造统一代码的高性能应用

概念

Flutter是谷歌的移动UI框架,可以在iOS和Android上构建高质量的原生用户界面,可以将其理解为是一款移动应用程序SDK,包含框架、控件和一些工具;它使用的是 Google 自己开发的网络编程语言——Dart 语言,因此,开发者只要使用过 Java 或 JavaScript 之类的语言,那么 Flutter 也极易上手

Flutter 目标

Flutter 是一个跨平台(Android 和 iOS)的移动开发框架,使用的是 Dart)语言。和 React Native 不同的是,Flutter 框架并不是一个严格意义上的原生应用开发框架

Flutter 的目标是用来创建高性能、高稳定性、高帧率、低延迟的 Android 和 iOS 应用,并且开发出来的应用在不同的平台用起来跟原生应用具有一样的体验;不同的平台的原生体验应该得到保留,让该应用看起来同整个系统更加协调;不同平台的滚动操作、字体、图标 等特殊的特性 应该和该平台上的其他应用保持一致,让用户感觉就像操作原生应用一样,比如,返回图标 Android 和 iOS 是不一样的;滚动内容滚动到底的反馈也是不一样的

Flutter 特征

Flutter是一个移动应用程序的软件开发工具包(SDK),具有以下特征:

● 跨平台应用的框架,没有使用WebView或者系统平台自带的控件,使用自身的高性能渲染引擎自绘

● 简化版的浏览器,最大限度在android和ios上统一UI,包括业务逻辑和用户体验

● 开发语言使用dart,结合C, C++, 和Skia(2D渲染引擎)构建

● 支持hot reload,包含着完整的控件和工具链

一切皆控件,控件是每个Flutter应用程序的基本构建块,与分离视图、控制器、布局和其他属性的框架不同,Flutter具有一致的统一对象模型:控件;一个控件可以定义:结构元素(比如按钮或菜单)、风格元素(比如字体或颜色方案)、布局的方面(比如填充)、一些业务逻辑等

● 组合大于继承,控件本身通常由许多小型、单用途的控件组成,结合起来产生强大的效果,类的层次结构是扁平的,以最大化可能的组合数量

● 强化版的WebView,框架仅提供一个View层,大部分功能要依赖原生

● 目前只能够运行大部分Dart代码(不能引入dart:mirrors或dart:html库)

Flutter体系架构

Flutter被设计成一个可扩展,分层的系统,它包含了一系列依赖其下层的独立库;其示意图见下图:

其中,framework层中的每一个组件均是可选的和可以代替的,从上图可知,Flutter系统总共可以分为三层;上层的框架(Framework),中层的引擎(Engine),以及底层的嵌入层(Embedder)

● 框架(Framework):框架层是纯dart语言实现的一个响应式框架,开发者平常需要通过该层和Flutter系统交互

● 引擎(Engine):引擎层绝大部分是用C++实现的,其为Flutter系统的核心。引擎提供了一系列Flutter核心API的底层实现,例如图形(通过Skia),文字布局,文件等,是连接框架和系统(Andoird/iOS)的桥梁

● 嵌入层(Embedder):嵌入层基本是由平台对应的语言实现的,例如:在Android上是由Java和C++实现;在iOS是由Objective-C/Objective-C++实现,嵌入层为Flutter系统提供了一个入口,Flutter系统通过该入口访问底层系统提供的服务,例如输入法,绘制surface等

其中,Framework是我们这一系列文章主要关注的部分,从下到上,其主要包括:

● 基础模块(foundational)及基础服务,例如animation,painting,以及gestures,这三种基础服务是为了方便上层调用对基础模块的抽象

● Rendering 层,为处理图层提供了抽象组件;’通过这一层,你能构建一棵可绘制对象的树;你可以动态操作这些对象,这棵树可以根据你的修改自动更新这棵树

● Widgets层,是组件的抽象,每个render对象都有对应的widget对象;除此之外,widgets层允许你定义你能重复使用的组合组件;同时,此层引入了响应式编程模型

● Material和Cupertino库提供了一系列Material和iOS设计风格的组件

整体架构

Flutter可以理解为开发SDK或者工具包,其通过Dart作为开发语言,并且提供Material和Cupertino两套视觉控件,视图或其他和视图相关的类,都以Widget的形式表现。Flutter有自己的渲染引擎,并不依赖原生平台的渲染;Flutter还包含一个用C++实现的Engine,渲染也是包含在其中的

Flutter 的核心原则

Flutter 包含了一个函数响应式框架( functional-reactive framework)、一个 2D 渲染引擎、直接可用的 Widget 库、和各种开发工具;这些组件在一起配合使用,来帮助你设计、开发、测试和调试 应用;这些功能都围绕几个核心的原则来实现的

跨平台方案对比

Widget

在Flutter中将显示以及和显示相关的部分,都统一定义为widget,下面列举一些widget包含的类型:

● 用于显示的视图,例如ListView、Text、Container等

● 用来操作视图,例如Transform等动画相关

● 视图布局相关,例如Center、Expanded、Column等

在Flutter中,所有的视图都是由Widget组成,Label、AppBar、ViewController等;在Flutter的设计中,组合的优先级要大于继承,整体视图类结构继承层级很浅但单层很多类;如果想定制或封装一些控件,也应该以组合为主,而不是继承

在iOS开发中,我也经常采用这种设计方案,组合大于继承。因为如果继承层级过多的话,一个是不便于阅读代码,还有就是不好维护代码。例如底层需要改一个通用的样式,但这个类的继承层级比较复杂,这样改动的话影响范围就比较大,会将一些不需要改的也改掉,这时候就会发现继承很鸡肋

但在iOS中有Category的概念,这也是一种组合的方式,可以通过将一些公共的东西放在Category中,使继承的方便性和组合的灵活性达到一个平衡

Flutter中并没有单独的布局文件,例如iOS的XIB这种,代码都在Widget中定义;和UIView的区别在于,Widget只是负责描述视图,并不参与视图的渲染;UIView也是负责描述视图,而UIView的layer则负责渲染操作,这是二者的区别

结语

技术是无止境的,你需要对自己提交的每一行代码、使用的每一个工具负责,不断挖掘其底层原理,才能使自己的技术升华到更高的层面

Android 架构师之路还很漫长,与君共勉

PS:有问题欢迎指正,可以在评论区留下你的建议和感受;

欢迎大家点赞评论,觉得内容可以的话,可以转发分享一下

Android 13 beta 1公测版,可安装像素型号

IT之家 4 月 27 日消息,谷歌今天宣布,Android 13 的第一个公开测试版现在已经推出。谷歌下个月将举行年度开发者大会,届时该公司预计将全面详述 Android 13 的更新内容,新系统的正式版将在今年晚些时候推出。

Android 13 Beta 1 公开测试版最主要的新功能是此前已经出现在 Android 13 最初的两个开发者预览版中的功能,包括支持蓝牙低能量(LE)音频,还有新的照片选择器 —— 可以限制应用能够访问哪些照片,新的应用程序图标主题选项,以及一个新的权限 —— 可以减少通知垃圾邮件。

相比之下,新的公开测试版添加的新功能更注重于开发者,比如访问本地存储中的共享媒体文件的应用权限的变化。谷歌工程副总裁戴夫-伯克(Dave Burke)在一篇博文中说,现在权限将具体到应用程序需要访问的媒体类型 —— 图像、视频或音频,而不是简单地要求访问所有文件的许可。

IT之家了解到,Android 13 Beta 1 可在 Pixel 4(XL)、Pixel 4a、Pixel 4a 5G、Pixel 5、Pixel 5a、Pixel 6 和 Pixel 6 Pro 上安装,具体可参考谷歌官网页面。

您还可以使用功能强大的xposed框架:不带根的虚拟xposed

如果你喜欢折腾 Android 设备,那么你应该对 Xposed 的大名有所耳闻。

这个第三方框架,让许多 Android 玩家都爱不释手。通过对系统框架的「偷天换日」,它可以修改系统与应用的各种数据,籍此实现无数种可能性,同时也大大地提升了 Android 系统的可玩性。

但由于涉及到对系统底层的一些改动,Xposed 的使用也有着各种限制;例如,必须要解锁手机的 Bootloader,以及获取 Android 的 Root 权限等。

然而,有些设备在执行这些操作时可能并不方便,甚至无法解锁或者 Root。

但俗话说得好,「办法总比困难多」。VirtualXposed的出现,为这些设备带来了一丝曙光;开发者称,借助它,即使在没有 Root 权限的情况下,也可以使用 Xposed 框架!

它是如何实现的?体验怎样?使用时又会遇到什么问题?接下来的文章中,这些问题将会一一得到解答。

原理是什么?

首先,VirtualXposed 并未对系统底层进行任何修改,也没有利用什么奇怪的漏洞。

它的工作原理,有点像那些双开软件。你可以这么理解:它在你的手机里生成了一个「虚拟环境」,再在这个环境中启用 Xposed。一切都是虚拟的,这也是它叫做 VirtualXposed 的原因。

正因为此,你需要使用的 Xposed 框架与框架所对应的应用,都需要安装在这个虚拟环境中,才能起作用。

举个例子,如果你要在钉钉上应用某个虚拟位置的框架,你必须同时把二者都安装到 VirtualXposed 中。

只在 VirtualXposed 中安装框架,是不会对系统中的钉钉起任何作用的。同理,直接将框架安装在系统上,或是将应用和框架都安装在系统上,也都不会起任何作用。

了解了它的运行原理之后,接下来要说的,就是如何使用这款「神奇」的应用了。

安装应用&框架

初次打开 VirtualXposed(下文中或简称 VX)后,呈现在眼前的,是这个类似于 Android 启动器的界面。

不要怀疑,你并没有装错软件;还记得上面介绍的原理吗?这是一个「虚拟空间」。而这个启动器,就相当于「虚拟空间」的入口。

和 Pixel Launcher 一样,向上滑动就可以打开应用抽屉,安装到 VirtualXposed 的应用都会在其中显示;但一开始只有预先装好的 Xposed Installer:

如果一切正常,「虚拟环境」中的 Xposed 应该是已经启用的,打开后会显示「Xposed 框架已激活」……即使我的手机并没有解锁,以及获取 Root 权限。

有三种方法可以将应用与模块安装到 VirtualXposed 中。第一种,是「克隆应用」,即将已经安装在系统中的应用添加到 VirtualXposed。

回到 VX 的桌面,点击那个看上去像是应用抽屉的按钮,可以打开 VX 的设置选项:

选择「添加应用」,在已经安装到系统中的应用中进行勾选,确认后即可将它们「克隆」到 VX 的「虚拟环境」里。

如果想要添加并未安装的应用或模块,可以选择第二种方式;即在各种文件管理器中打开.apk 安装包后,选择「安装到 VirtualXposed」:

另外,如果你已经将各种市场或是浏览器添加到了 VX 中,也可以直接通过这些渠道下载并安装应用。

当然,如果只是想安装模块,还可以直接通过内置的 Xposed Installer 搜索并安装:

添加到 VirtualXposed 中的应用,运行起来与安装到系统中的应用几乎无异;可以正常接收通知,以及浏览本机中的图片等文件。

除此之外,它还可以像「双开」软件一样,同时运行两个相同的应用,并在多任务中进行切换,甚至还可以分屏。从 VirtualXposed 中打开的应用,会加上 [Admin] 的前缀。

想要管理 VX 中的应用进程或是卸载应用,前往设置即可,直接在抽屉中长按图标也可以实现部分操作。

有趣的是,VX 中的启动器,本质上也的确是个 Pixel Launcher。如果愿意的话,你甚至还能在设置中更换图标包……

「万事俱备,只欠东风」。既然应用和模块都已经准备完毕,那么是时候试试看,它能不能正常使用那些框架了。

应用框架测试

接下来,就是「见证奇迹的时刻」。

从VirtualXposed官方网站上给出的支持模块列表中,我挑选了两款框架进行测试。其中一款名为MDWechat,是一个能让微信界面 Material Design 化的模块。

激活模块的方式,与实机里的 Xposed 大致无异。打开 VX 中的 Xposed Installer,然后前往「模块」,就能看到安装好的模块了。

按道理来说,接下来的步骤应该是「勾选模块,然后重启手机」;然而在 VX 中,启用模块并不需要真的重启手机。只要在勾选模块后,前往设置,点击最下方的「重启」即可。「重启」的速度极快,因此作者还设置了一个「温馨」的 Toast 提醒……

完成这些操作后,再打开微信;令人兴奋的是,MDWechat 的确被成功激活了。

我又测试了另一个模块:应用变量,通过它可以分应用修改机型,从而显示各种不同的来源「小尾巴」。

它也可以成功地被激活,并对 VX 中的应用进行修改。现在,我也是用 Mate 9 保时捷设计发微博的人了!(笑)

当然,这些模块只会对 VX 里的应用生效。但的确,VirtualXposed 在一台既没有解锁,也没有 Root 的设备上,成功应用了 Xposed 框架模块。

如果嫌每次都要在 VX 的启动器中打开应用麻烦,可以长按图标,选择「创建快捷方式」,这个应用就出现在你的系统桌面上了,应用名会加上(VXP)的后缀。

插件出问题了,怎么办?不用担心,VX 并不会影响手机系统,如果真的出现了严重到无法正常使用的情况,直接卸载 VX 即可。

总结

目前的 VirtualXposed 还不甚完善。它尚未支持需要使用资源 Hook 的模块,对一部分模块的兼容性也尚待增强。

同时,它的工作原理,也决定了任何修改系统的 Xposed 模块均无法使用;但瑕不掩瑜,VirtualXposed 的确是个很有前途的项目。它大大降低了 Xposed 框架的使用门槛,让更多人能体验到各种花样百出的模块。

对于已经在系统中启用了 Xposed 的用户,还可以借助 VirtualXposed 方便地测试模块;既不用频繁重启手机,又毋需担心「翻车」后影响正常使用。

希望作者能进一步地完善这个项目,提升兼容性与稳定性,造福更多 Android 玩家。

想要了解更多详情,可以访问 VirtualXposed 的GitHub 页面。

谷歌Android TV 13首次测试版预览版发布

IT之家 5 月 8 日消息,本周早些时候,谷歌开始对 Android TV 的 Android 13 进行 Beta 测试。与往年一样,拥有 ADT-3 开发套件的开发者可以下载系统镜像。

官方没有公布 Android TV 13 的更新内容,目前已知的改进有画中画模式支持更改纵横比、待机低功耗模式,但这两项改进在首个 Beta 版中都没有。

IT之家了解到,谷歌列出了 Android TV 13 首个 Beta 预览版的已知问题:

  • 连接蓝牙耳机时,某些应用上的回放不起作用。

  • 在某些情况下,按下 ADT-3 设备上的侧面按钮不会激活蓝牙设备搜索。如果远程配对丢失,可以通过使用 ADB 命令模拟远程输入来解决此问题。

  • 无法使用遥控器和附件菜单重新配置遥控器按钮。

  • 遥控器和附件菜单中目前缺少更改 HDMI-CEC 控制的选项。

  • 投屏到 4K 电视时,仅显示图像的左上角四分之一。

  • 在某些情况下,当 ADT-3 设备连接到 LG 电视时,遥控器不起作用。

  • 使用 Google Play 电影应用时,4K 播放会出现灰屏和噪音。

  • 对于 iOS 设备,Google Home 应用无法连接到 ADT-3 设备,需要使用 Android 设备上的 Google Home 应用或 ADT-3 遥控器。

Android TV 13 首个 Beta 预览版:点此下载镜像

谷歌正式发布了第一批自适应机型,如安卓13和小米

鞭牛士 5月12日消息,谷歌在刚刚举行的Google I/O 2022大会上正式公布了Android13系统,并且确定小米、OPPO、realme公布了首批适配Android13 开发者预览版的机型,其中包括小米 12/12 Pro、折叠屏OPPO Find N以及realme GT2 Pro。

5月11日起,全球开发者可以通过OPPO开发者平台,安装Android13开发者预览版操作系统,率先体验到大屏适配、多任务处理、安全隐私等Android 13 Beta1的全新特性。

除了自定义界面之外,Android13系统还将加入更多隐私安全保护功能。同时,谷歌钱包除了支付功能,还可以预定电影票、储存疫苗接种卡,未来还会支持数字身份证、数字驾照功能。

Android 13还将允许用户在每个应用程序的基础上设置系统语言,该功能对于在不同情况下依赖不同语言的多语言用户很有帮助。