11

用 Tasker 实现一键下载/更新小米应用商店安装包

 1 year ago
source link: https://sspai.com/prime/story/tasker-miui-store-download-update
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

欢迎来到我的 Tasker 任务分享第二期,还没有看过前一期的朋友可以点击上一期「用 Tasker 实现一键分享保存哔哩哔哩视频封面」阅读。

本期,我给大家分享一个我偶尔会用到,但是能够需要的时候让自己省心的任务,那就是一键下载小米 MIUI 应用商店安装包,或者选定应用之后通过 MIUI 应用商店检查更新。

一键下载应用商店安装包效果演示

一键下载应用商店安装包效果演示

自动检查用户选择的应用更新情况,并打开对应的下载页面

自动检查用户选择的应用更新情况,并打开对应的下载页面

这个任务是我计划的 Tasker 任务分享计划的其中一个任务,Tasker 任务分享计划将对标快捷指令分享网站,不定时分享我制作的一些实用高效的 Tasker 自动化任务,帮助大家提高工作生活的效率,感兴趣的朋友可以关注我获得最新动态。如果这个计划人气高的话,还有机会制作成像快捷指令分享网站一样的专题网站,让大家都可以分享自己制作的 Tasker 自动化任务。

它能解决什么需求?

虽然现在手机不像以前还需要下载豌豆荚应用宝之类的第三方应用商店,大部分手机品牌现在都有自带应用商店,而且随着相关政策的越来越严格,各家应用商店里面的应用质量和安全隐私要求也在不断提升,看起来好像似乎没有必要单独做一个通过应用商店下载安装包或者检查更新的 Tasker 任务?

下载与分享安装包需求

但其实不然,相信大家应该都会有偶尔需要发送应用安装包给朋友家人或者同事的场景吧。

虽然现在大部分手机都有自带应用商店,但是基本都下完安装就会把安装包删除,基本没有没有下载安装包的选项。同时提供网页版应用商店服务的手机品牌也越来越少,包括 Google Play 在内的应用商店也没有提供安装包下载选项。

Google Play 网页版需要选择机型后推送到手机上下载安装

虽然我们可以通过文件管理器里面分享应用安装包,但是现在随着根据不同架构语言等等分包越来越流行(Split APK/.aab),应用商店提供的应用都是根据手机情况自动合并不同模块,好处是安装包的体积减少了,但在文件管理器里面分享出来的就是不完整的 APK 文件,没有办法安装。

需要下载 64 位的安装包

现在绝大部分应用都提供 64 位的安装包,它的好处简单来讲就是更加适应现代的手机,更加流畅和省电,特别是对于 8 Gen1 及以后新手机,CPU 原生已经不支持 32 位,运行 32 位应用还需要转译一次白白浪费性能和发热。

可以使用 lib checker 这款应用来检查自己手机上还有没有 32 位应用

现在国内比较大的应用商店基本都强制上架 64 位的安装包,但某些商店还是没有这些规定,而且由于小商店没有话语权,很多开发者嫌麻烦,干脆就不在这些商店继续更新,导致原本就少的应用数量更加少。MIUI 商店已经完成了全部应用强制 64 位的更迭(没满足的全部下架了),如果你查看手机上还有 32 位应用需要升级,或者不小心把 64 位应用升级成了 32 位(说的就是你,酷安!),那么也可以用这个任务来一键下载对应的安装包。

除了上面提到的好处以外,这个任务还能方便更多朋友的特殊需求,比如小米作为比较老牌的手机厂商,用户面比较广,通常会比小品牌的应用商店能找到更多的应用更新,需要对安装包进行修改的时候可以比较方便地下载,对于读者朋友来讲也可以顺便学习一下 Tasker 的使用(本章会涉及到 for 循环的应用和结构化变量的介绍)。

但是大家现在尝试访问小米应用商店网页版的话,会发现不仅没有搜索功能,而且随便点进去一个应用,原本是下载按钮的地方都会显示维护中,也就是小米应用商店网页版目前半屏蔽了下载安装包的功能。但其实安装包还是可以下载的,只不过需要通过添加包名作为网址参数访问,这个任务主要也是利用了这个原理。

快速使用(看完前一章的朋友可跳过)

和前面的文章一样,我已经把任务文件分享到 Taskernet/Tasky,不过这次根据需求不同分成了两个任务,大家可以在安装 Tasker 后,访问:

就能看到对应的任务文件直接导入了。

注:记得保证 Tasker 是最新版,另外国内无法访问 Play 商店的用户现在也可以有单独的购买选项,不用去找麻烦又危险的破解版啦,捐赠开发者的 Patron 或者大量购买都可以,具体可以点击对应的 Tasker Q&A 了解

手动导入任务到自己的 Tasker

由于 Taskernet 需要额外的操作才能访问,这里更推荐小伙伴们直接访问我的 Github 项目(欢迎 Star)或者 少数派提供的任务下载地址把任务文件下回来,然后手动导入到自己的 Tasker 里。

导入步骤也很简单,以后再碰到新的 Tasker 任务都可以使用这种方式导入。

打开你的 Tasker 主界面,切换到任意项目的任务 Tab 并长按「任务」按钮:

长按图中框出来的部分哦

长按图中框出来的部分哦

选择「导入任务」并在弹出的文件选择器里选中你刚刚下载好的任务(底下可以手动指定路径,右下角手机图标可以快速返回内置储存根目录):

右上角的向上箭头可以返回上一层文件夹哦

右上角的向上箭头可以返回上一层文件夹哦

这样任务就成功导入到你的 Tasker 里面啦,打开就可以运行。

任务原理解释

只想要到手即用的朋友到这里可以打住了,接下来就给好奇或者想要学习制作自己自动化任务的朋友一些简单说明和教程,其实两个任务的基本原理都是类似,通过在电脑上模拟手机终端打开网页版 MIUI 应用商店,然后获取到对应的元素的 ClassName/Id,就能通过 Tasker 获取对应网页元素是否存在或者值。

获取网页元素 Class

首先用 Chrome 或者其他浏览器打开网页版 MIUI 应用商店微信的应用页面

注:如果你出现的是电脑页面,按 F12 快捷键打开开发者工具,在开发者工具顶部的操作栏元素选项左边有一个设备图标,点击它然后按 F5 刷新,我们就能进入手机版的 MIUI 应用商店。

进入手机版 MIUI 应用商店的步骤

进入手机版 MIUI 应用商店的步骤

然后随便在首页点开一个应用,进去你可能会看到下载按钮显示维护中,这个无所谓,我们只需要在底下应用详细信息里面的版本号位置右键 -> 检查,开发者选项就会自动跳转到版本号对应的 HTML 元素,这里的 class="detail-version" 就是等下我们要通过 Tasker 获取内容时要用到的标识,在高中或者大学简单学过计算机的同学对这个应该都不陌生。

获取对应的 HTML 元素标识

获取对应的 HTML 元素标识

使用 Tasker 结构性变量获取版本号

在以前我们还需要在 Tasker 里面使用正则表达式之类的比较复杂的方法把网页里面的元素提取出来,而现在用 Tasker 请求网页之后,应用会自动解析网页里面的元素,通过简单的结构性变量形式就能提取任何你想要的值。

比如在我们的简单任务里,先把用户选择的应用包名拼到域名前半部分后面,然后用 Http Request 操作尝试请求对应的应用页面。之后只需要类似 %http_data[div{class=detail-version}] 这样的形式就能获取到我们想要获取的版本号,这里我还用了个正则表达式来,把版本号数字提取出来,但其实这个任务用不上,用 if 检查上面的变量是否存在就可以了。

结构化变量的应用

结构化变量的应用

不仅是 HTML,JSON、XML、CSV 之类的有结构的数据,Tasker 获取到之后都会自动解析成结构化变量,通过和上面类似的形式直接获取里面的数据。详情可以参考官方帮助文档的对应页面,Tasker 特有的结构化变量极大减低了普通用户制作复杂任务的难度,大大提高了自动化任务制作和使用的效率。

注:由于有下载验证,所以没有办法通过 Tasker 内置操作实现直接开始下载功能,只能在浏览器中打开对应的网页。大家也可以自己动手尝试一下,有没有更加复杂的方法能实现自动下载。

添加检查更新功能

获得版本号数据之后,我们很轻松就能添加应用检查更新功能。打开复杂任务之后,虽然步骤多了很多看起来很复杂,但其实大家不要怕,基本操作和简单任务一样,只是为了处理多任务检查更新引入了 for 循环。

首先我们添加一个 Tasker 自带的应用程序选择器,这个选择器可以让用户自由选择一个或多个应用来进行处理。选择之后得到的结果是用 / 分割的文本,我们还需要用 Tasker 建立数组的功能把它弄成可以放进循环的数组。

接下来就是我们今天要学到的第 2 个 Tasker 功能 —— 循环。添加一个 For 循环步骤后,我们可以指定数组变量里面的每一项都过一遍循环里面的操作,要不用自己手动把这些操作都复制很多遍

for 循环参数详情

for 循环参数详情

第 1 项「变量」指的是数组在循环里如何获得数组当前项,设定一个你自己喜欢的名字,然后在循环里面用上就可以(建议 %item)。第 2 个参数「项」就是我们的数组变量。

比如数组变量有 1,2,3,4 四个项目,那么 %item 就会被依次设置为 1,2,3,4 并执行 4 次循环里面的操作。

通过动图我们可以看见任务是如何循环执行的

通过动图我们可以看见任务是如何循环执行的

Tasker 的 for 循环有两个算是比较坑的点:

一个是由于翻译问题,很多人包括我第1次用循环的时候,都会把两个参数弄反导致无法正常运行。大家直接参考我上面的说法就可以。

第二个是「项」里面的数组变量后面必须加上 () 英文括号,单纯的变量名会被认为是文本,导致无法正常循环。

注:用 Tasker 的 Goto 操作也可以实现类似循环的操作,感兴趣的朋友可以研究一下。

参数与调整

由于 MIUI 应用商店即使是网页版也有很多个地址(我任务用的是 m.app.mi.com),每个地址网址和网页内容还不太一样,所以大家如果跟着做的时候网址和内容不一样,或者以后这个网址失效了,都可以跟着上面的原理和步骤修改任务。

虽然任务成功导入并且运行良好,但每次都要打开 Tasker 进入对应任务手动执行还是略有繁琐,我们可以通过一些拓展方法来更方便地使用这个任务。

将任务快捷方式保存到手机桌面

在我们手机桌面长按添加小部件,选择 Tasker 的「任务快捷方式」,然后选择我们的任务,就可以把快捷方式添加到桌面。

请注意要先给任务添加一个图标(点击任务详情底下正中间),并且退出 Tasker,不然会添加失败。

嫌弃任务默认图标太丑的朋友也可以在添加快捷方式之前,在任务详情里更换一个你喜欢的图标,嫌弃任务名太长的朋友也可以先长按任务重命名之后再添加到桌面。

任务的桌面快捷方式

任务的桌面快捷方式

同理也可以将任务保存到 Tasker secondary,就可以在应用列表里当做普通应用来运行了。

通过 APP 名字打开对应应用详情页面

目前两个任务都是通过 Tasker 的应用选择框让用户选择应用,只能选择手机上已经安装的应用,而且得到的结果都是包名,那么如果能做到只通过 APP 的名字(比如微信,淘宝)或者已知的应用包名就能打开对应的页面那就更好了。

为了实现这个效果,我们可以把应用选择框换成普通的文本输入框,当用户输入文本后,如果是 APP 名称,就利用 Tasker 自带的获取应用信息功能把它转化为包名。如果不是 APP 名称而是包名,就直接跳转到对应的应用详情页面,而如果都不是就提示用户输入正确的内容,大家可以尝试自己能不能做出来,对应的步骤放在下面了。

任务详情截图

通过输入应用名称或者包名打开对应商店页面的任务详情截图

一键分享应用到任务打开对应下载页,效果演示

一键分享应用到任务打开对应下载页,效果演示

总结与小作业

和上一篇文章不同,这一篇文章除了分享任务以外还给大家详细讲解了原理,顺便让大家了解了 Tasker 两个好用的特色功能。

如果你也对自动化任务有兴趣的话,可以试试完成下面两个小作业:

  • 在 Tasker 任务内打开一个应用详情窗口,手动点击下载按钮后接收安装包到本地而不用跳转到浏览器(提示:可以使用场景 Web 视图功能实现)。
  • 用同样的原理试试实现 Github release 检查一些没有上应用商店的开源应用更新,如果你喜欢的其它应用商店有网页版,比如华为应用商店或者 OPPO 应用商店,也可以试试用相同的原理来制作一个任务。

希望大家用得开心,也学得开心(大家有什么需求也可以在评论区留言,我会挑选一些比较多的需求来制作分享)。

> 下载 少数派 2.0 客户端、关注 少数派公众号,解锁全新阅读体验 📰 

> 实用、好用的 正版软件,少数派为你呈现 🚀


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK