八卦阵 发表于 2024-6-14 21:42:45

是的,Android版Edge浏览器支持Extension(插件/扩展)了

本文同步发表于我的微信公众号,扫一扫文章底部的二维码或在微信搜索 郭霖 即可关注,每个工作日都有文章更新。
有些小同伴的消息渠道实在过于灵通,所以这件事我也不用藏着掖着了。
https://img-blog.csdnimg.cn/direct/8363d32244dd405cbea3928b01955e37.png#pic_center
(此处插件指的就是Extension,虽然Extension最标准的翻译应该是扩展)
其实Extension这个功能我们是想要先小范围机密推出,看看数据再说的。没想到一些外洋的极客博主,在我们发布带Extension功能版本的当天,就把隐藏的这个开关给找到了,并立刻引起了很多的消息报道,这个功能也就藏不住了。
https://img-blog.csdnimg.cn/direct/65cfcdbdc54d4736a47264bf54b3a53b.jpeg#pic_centerhttps://img-blog.csdnimg.cn/direct/ff347fc7366f40a0859d3bbb7af6c8d0.jpeg#pic_center
是的,这个功能就是我做的。关于这一点,连我本身都未曾想到过。
长期以来,支持Extension一直是Android版Edge浏览器最强烈的用户呼声,我们内部收到过很多类似的用户反馈。我本身的公众号上也曾有不少朋侪留过言,希望Android版Edge能支持Extension。
https://img-blog.csdnimg.cn/direct/1c6e94a5c8114c109fdc153b99edaa1d.jpeg#pic_center
那个时候,我还能很耐心地跟大家解释为什么Edge Android不支持Extension,反正这个功能和我没什么关系嘛。
风趣的是,你永远不知道来日诰日会发生什么。
2021年底,我们部门来了一位新同事,jiayi。jiayi最早在腾讯做QQ浏览器,之后又去了猎豹浏览器,再厥后又去过阿里和快手,现在来到了微软Edge浏览器。
jiayi担任的岗位是Android端架构师,所以他一开始做的也是一些偏基础架构之类的工作。厥后我听说他预备去搞Android端的Extension,这就太牛了,Extension可是自从我进入Edge项目组之后就时不时听说的超等难题,确实得是架构师级别的才气搞得定。
结果在2022年底,Edge项目组举行了一次组织架构调解,jiayi不再担任架构师了,而是成为了基础架构组的Manager,还把我划到了他的组里。
新组成立,Manager要和每个组员单独谈天沟通,俗称1:1。jiayi其时找到我,就跟我说:“郭神,Extension就交给你了啊。”
https://img-blog.csdnimg.cn/direct/53ac87bac461456ba35614bb17fed9b4.png#pic_center
澄清一下,这活确实不是我自动要求的,但却是我自动接下的。因为其时假如我拒绝的话,是可以安排我到其他组继续做传统Android开发的。
但是对于我来说,这是一个非常大的挑战。假如做乐成了,不仅能够产生巨大的影响力,同时还能让我跳出Android的技术栈,扩展本身的技术范畴(Extension重要都是用C++开发的)。
这活我接了。
思量到接手之前别人的研究成果总比本身从零开始强,于是我问jiayi之前研究到了那里,我可以继续接着搞。结果jiayi说,这不是近来太忙了么,还没开始研究呢。。。
https://img-blog.csdnimg.cn/direct/6fac51e838d64f17a5f4f464c2a4df67.png#pic_center
不过jiayi还是给我提供了一个重要信息,那就是Android上的Kiwi浏览器是支持Extension的,而且Kiwi还开源了本身的代码。
于是我去查看了一下Kiwi的源码,好消息是,它确实乐成支持了Extension。坏消息是,开源的代码已经是4年前的版本了,和现在Chromium的代码差距巨大。
因此,指望着靠照搬Kiwi的代码来让Edge支持Extension是不大概的事情了,但是我仍然从Kiwi的源码中受到了很大的启发。
因为本质上来说,我们并没有想要去发明Extension这个东西,Extension本来就在那里,只是Google不允许它在Android上运行而已。所以我们要做的事情,就是要把PC平台现有的Extension代码给带到Android平台上。
那么详细要怎么带呢?这时我去参考了一下Kiwi的思绪:
https://img-blog.csdnimg.cn/direct/bbae9edd34be47b58b25093c6bd5d204.png#pic_center
这是一段GN代码,在Chromium当中,GN可以用来举行编译配置,指定哪些文件到场编译,哪些文件不到场。
而上述的代码中,注释里很明确写了!is_android,也就是说这些代码是不给Android使用的。但是Extension却又依赖这些代码,所以Kiwi使用了if (true),来把这些代码强制带到Android平台上。
不得不说,Kiwi的这种做法虽然暴力,但确实管用。我在思绪上举行了部门借鉴,不过写法要远比Kiwi更加优雅,否则这种写法在微软的代码检察上也是过不去的。
当然,这只是一个非常简单的例子,毕竟上Extension的代码量极其庞大,依赖关系错综复杂。我在整个的实现过程中能深深感受到,Google是完全没打算让Extension能在Android上运行,才会把代码写成如许。所以有小同伴还等待着Chrome Android能支持Extension的,短期内就不要想了。
另外,只是把Extension相干的代码带到Android平台上并不算完。要知道,带进来的这些代码都不是为Android平台设计的,必然会出现海量的编译错误。
因此,接下来才是更加困难的部门,就是怎样让这些Extension关联的代码在Android上能够编译通过。
这个就没有什么特别好的办法了,只能一个一个错误地去办理。
Chromium项目在编译的时候可以通过一个-k number的指令,告诉编译器遇到多少个编译错误之后才停止编译。我把这个数字调到了1000都不能一次性编译完整个项目,可见引入了Extension之后会带来多少的编译问题。
这些所有的编译问题一共花两个多月时间才全部处理完。两个多月时间,只是为了让项目能够编译通过,大家可以想象一下这个过程有多艰辛。
当然,即使所有的代码都编译通过了,也仅仅意味着Extension相干的代码被带到了Android平台上,这和在Edge Android上可以正常使用Extension了仍然是两回事。
因此,接下来的一段时间,我还要对Extension的详细功能举行开发调试,验证团体的Extension框架能否在Android平台上正常运行。不过相比起来,这已经算是回归到比较正常的软件开发流程了,之前做的那些工作才真的是整天摸着石头过河。
最后闯过无数难关,我终于做出了一个能够在Edge Android上运行Extension的Demo,这个项目到这里才算是正式立项。
之后就是以正规的流程去开发这个项目了,但仍有非常非常多的事情要做,包括功能开发、代码质量检察,安全性隐私性检察,应用性能检测等等等等一系列的事情。另外,Extension改动的基本全是桌面端的代码,因此还须要Edge美国团队和印度团队的成员来查抄我这边的改动。总之没有一件事情是不花时间的。
最后从上线的日期来看,这距离我接手这个项目已经过去了一年左右的时间,这一年时间里我就只做了这一件事。
不过如此困难的一个项目,功劳也并不都是我一个人的。有很多同事在期间到场到了这个项目当中,并给我提供了资助。
这里首先我要特别感谢我们组的一位同事,wadai。
wadai差不多到场了半个Extension项目的开发过程,资助我办理了很多高难度的技术问题,而且还在这个过程中发明出了GN Overlay这种对Edge开发具有重大意义的技术。
我记得在办理编译问题的后期,有大约3000+ undefined symbol的报错。基本就是我们俩一人分一半,逐个办理的。光处理这些问题就得花上至少两周以上的时间,枯燥又乏味,但我们就是这么趟过来的。
另外要感谢的就是jiayi,虽说jiayi没有到场这个项目的研发,但是他作为Manager的一些决策直接决定了这个项目的成败。
开发进入中期的时候,我发现Chromium在Extension的设计上并没有做到很好的独立性,其实它是依赖于很多模块的。而Edge桌面端又会在这些被依赖的模块里做很多本身的功能,最后把Extension带到Android上的同时,我也险些把半个Edge桌面端的功能都给带到了Android上。
这个事情对我其时打击很大,因为代码写成这个样子,PR文件改动数甚至达到了1000多个,就算Extension在Android上真的能跑起来了,我们也绝无大概上线。那个时候我甚至觉得这是一个注定要失败的项目,想要中途放弃了。
jiayi在这个时候做出了非常重要的决策。他让我先不要管代码写的合不合理,优先就是去实现一个能在Android上运行Extension的Demo,代码后期都可以再举行优化。哪怕是后期真的没有优化空间,这东西就是做不了,我们出过一个可运行的Demo,也比现在什么都没有的情况下结束项目强。
毕竟上也正如jiayi所说,我们在后期做了很洪流平的代码优化工作,最低时PR的文件改动数仅剩200多个。扫清了这些障碍,Extension项目才得以顺利上线。
我还要感谢Edge美国团队的Kevin。Kevin是Edge桌面端的架构师,在我们开发Android端Extension的时候给了我们巨大的资助。
Kevin特别喜好中国的文化,他还关注了我的公众号,因此这篇文章他很有大概会看到。
Hey Kevin, I would like to give you a big thanks for everything. The Android Extension is here because of your help.
当然,还有很多同事我是想要感谢的,但是感觉不能再写下去了,再写这篇文章就要成感谢大会了。
回到正题,接下来得好好跟大家介绍下Edge Android上的Extension功能到底怎样使用。
这个功能还在慢慢灰度中,因此没有被灰度到的朋侪现在大概还看不到。
这里我教大家一个快速体验的办法。首先确保你的浏览器是最新的Edge 122版本,假如还没安装Edge的话可以通过下面的二维码快速安装:
https://img-blog.csdnimg.cn/direct/4b8084250e2a49d79442e17d96eaa064.png#pic_center
然后在Edge的地址栏输入edge://flags,你会看到如下界面:
https://img-blog.csdnimg.cn/direct/0aa02aa6bd7b4a4eb5c35c07021e1ae5.png#pic_center
这个界面是Edge用于配置一些实验性功能开关的界面,里面表现的都是目前Edge正处于测试阶段的一些功能。
接下来在这个界面的搜索框当中输入Android Extension,如下所示:
https://img-blog.csdnimg.cn/direct/df7651dc6805471db9ede457082d30b1.png#pic_center
然后将这个功能的开关打开,选择Enabled选项即可:
https://img-blog.csdnimg.cn/direct/24663856affb4fd7b221277a2ba72a9f.png#pic_center
当你选择了Enabled之后,底部会弹出一个提醒告诉你重启浏览器来使开关见效。
重启之后,依次访问:底部工具栏菜单键->右滑至菜单第二页->全部菜单,在这里你就能看到一个新的扩展入口了。
https://img-blog.csdnimg.cn/direct/9f50f52dcc2d48c692eb9badf51efd85.jpeg#pic_center
点击扩展可打开我们为Android平台专门设计的扩展商店页面,目前有3款扩展程序可供大家安装使用:
https://img-blog.csdnimg.cn/direct/88f8c1c305914fbb8a17e3e5b1c755a8.png#pic_center
这3款扩展程序都是非常热门且实用的,接下来我向大家分别演示一下它们的用法。
第1款,Dark Reader。它是用于将网页渲染成深色模式的。
作为Android开发者,我信任大家应该都知道怎样让本身的App适配深色模式。但是浏览器是一个很特别的App,虽然浏览器的外观可以用传统的方式去举行深色模式适配,但是浏览器表现的网页我们却是没有办法控制的。
因此,很多浏览器用户在夜间浏览网页时其实都是比较刺眼的,体验并不友好。
而Dark Reader则是专门用于办理这个问题的扩展程序,它有一套颜色算法可以对网页里的浅色元素举行反色,从而让任何网页内容都变得非常适合在夜间浏览。
安装Dark Reader后打开网页的结果如下图所示:
https://img-blog.csdnimg.cn/direct/2f05f43f27064ab286d2383177c394ef.png#pic_center
另外我们还可以通过如下路径来操作已安装的扩展程序:底部工具栏菜单键->右滑至菜单第二页->全部菜单->扩展,现在你会看到刚刚安装好的Dark Reader:
https://img-blog.csdnimg.cn/direct/ba1b91e80451415c8981f56ff095fbb9.png#pic_center
点击Dark Reader,将会打开扩展程序的弹窗界面,在这里可以对该扩展程序举行更多的功能控制,比如开启和关闭Dark Reader,或者针对某一个网站开启和关闭等等。
https://img-blog.csdnimg.cn/direct/de43b103d8d743859f01f7d4e2e1fd45.png#pic_center
我最喜好的一个功能就是,点击Auto,让它跟随体系的深色模式自动开启和关闭,如许就能做到体系全局的深色模式结果了。
第2款,uBlock Origin,广告屏蔽神器,用过的都说好。所以这里我重要给没用过的朋侪们做个简单的科普。
不知道大家玩不玩Steam游戏,玩的朋侪大概都听过这个梗,没有人能在百度下载到正版的Steam,因为搜出来的全是广告。
https://img-blog.csdnimg.cn/direct/85578d4b100f45f2928afbbac2b6d857.png#pic_center
当然现在百度已经良心很多了,至少在第二条结果给了个官网的链接,但其他结果仍然都是广告。
现在我们安装一下uBlock Origin这个扩展程序,然后再次实验在百度搜索Steam。
https://img-blog.csdnimg.cn/direct/68f186f33ab14408bbe2904397728b7d.png#pic_center
可以看到,现在搜索出来的结果变得非常清新,广告基本都被屏蔽掉了。
这里再告诉大家一个专门的网站可以用来测试广告屏蔽的结果,adblock-tester.com。
uBlock Origin在这个网站能够获得96分的高分,可见其广告屏蔽本领是非常强的。
https://img-blog.csdnimg.cn/direct/813b2bc0b92a433ab11318155a943785.png#pic_center
第3款,Global Speed,视频倍速控制器。任何在浏览器播放的视频都可以用它来控制播放速度。
B站的二次元用户们应该都很喜好倍速播放这个功能,二倍速播放就能打开一个全新世界的大门。
Global Speed这款扩展程序则将B站的这个鬼畜功能应用到所有的视频网站,可以说是相称哇塞了。
这里我以播放抖音视频为例(不知道吧?在浏览器里也是可以刷抖音的),安装好Global Speed,然后打开它的弹窗界面,就能对视频播放举行倍速控制了。
https://img-blog.csdnimg.cn/direct/413093c9540e4d57bd0b065a9806f448.gif#pic_center
怎么样,这3款扩展程序是不是既实用又好玩。
但是也肯定有朋侪会说,才支持3款扩展程序也太少了吧。
没错,少是少了些。但是,只支持3款扩展程序,和只能支持3款扩展程序是两回事。
因为从本领的角度上来说,我们是把桌面端Extension的本领近乎全部都搬到了Android平台上,也就是说桌面端能安装的扩展程序,讲道理在Android上都能安装。
但是要知道,这么多的扩展程序,它们大概之前并没有思量过还能在Android平台上运行,也没有对移动端举行过专门的适配。因此即使能安装这些扩展程序,在运行时也或多或少会出现一些问题。
也正是因为这个原因,我们接纳了精选计谋,先提供给大家经过我们严格测试的扩展程序,保证它们在Android上的用户体验是非常好的。
然后我们会一步步扩大支持范围,让更多的扩展程序能够登岸Android平台。
最后的长期目标是开放开发者生态,让广大的开发者们都能够在Edge Android上发布本身开发的优质扩展程序。
当然这个规划非常久远,目前我们还只是在第一步。至于后面每一步能不能走好,须要广大的用户和开发者们一同到场进来,多多给我们提出名贵的意见。
假如你对我本日介绍的这些内容感爱好,那么不妨扫描下方二维码下载最新版的Edge浏览器体验一下吧。
https://img-blog.csdnimg.cn/direct/4b8084250e2a49d79442e17d96eaa064.png#pic_center

假如想要学习Kotlin和最新的Android知识,可以参考我的新书 《第一行代码 第3版》,点击此处查看详情。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 是的,Android版Edge浏览器支持Extension(插件/扩展)了