快讯
HOME
快讯
正文内容
nand mtd open pwrite 【基本功】Litho的使用及原理剖析
发布时间 : 2025-03-16
作者 : 小编
访问数量 : 23
扫码分享至微信

【基本功】Litho的使用及原理剖析

1. 什么是Litho?

Litho是Facebook推出的一套高效构建Android UI的声明式框架,主要目的是提升RecyclerView复杂列表的滑动性能和降低内存占用。下面是Litho官网的介绍:

Litho is a declarative framework for building efficient user interfaces (UI) on Android. It allows you to write highly-optimized Android views through a simple functional API based on Java annotations. It was primarily built to implement complex scrollable UIs based on RecyclerView.With Litho, you build your UI in terms of components instead of interacting directly with traditional Android views. A component is essentially a function that takes immutable inputs, called props, and returns a component hierarchy describing your user interface.Litho是高效构建Android UI的声明式框架,通过注解API创建高优的Android视图,非常适用于基于Recyclerview的复杂滚动列表。Litho使用一系列组件构建视图,代替了Android传统视图交互方式。组件本质上是一个函数,它接受名为Props的不可变输入,并返回描述用户界面的组件层次结构。

Litho是一套完全不同于传统Android的UI框架,它继承了Facebook一向大胆创新的风格,突破性地在Android上实现了React风格的UI框架。架构图如下:

应用层: 上层Android应用接入层。

规范层(API): 允许用户使用声明式的API(注解)来构建符合Flexbox规范的布局。

布局层: Litho使用可挂载组件、布局组件和Flexbox组件来构建布局,其中可挂载组件和布局组件允许用户使用规范来定义,各个组件的具体用法下面的组件规范中会详细介绍。在Litho中每一个组件都是一个独立的功能模块。Litho的组件和React的组件相类似,也具有属性和状态的概念,通过状态的变更来控制组件的展示样式。

布局测量: Litho使用Yoga来完成组件布局的异步或同步(可根据场景定制)测量和计算,实现了布局的扁平化。

布局渲染: Litho不仅支持使用View来渲染视图,还可以使用更轻量的Drawable来渲染视图。Litho实现了大量使用Drawable来渲染的基础组件,可以进一步拍平布局。

除了上面提到的扁平化布局,Litho还实现了布局的细粒度复用和异步计算布局的能力,对于这些功能的实现在Litho的特性及原理剖析中详细介绍。下面先介绍一下大家比较关心的Litho使用方法。

2. Litho的使用

Litho的使用方式相比于传统的Android来说有些另类,它抛弃了通过XML定义布局的方式,采用声明式的组件在Java中构建布局。

2.1 Litho和原生Android在使用上的区别

Android传统布局 :首先在资源文件res/layout目录下定义布局文件xx.xml,然后在Activity或Fragment中引用布局文件生成视图,示例如下:

2.2 Litho自定义视图

Litho中的视图单元叫做Component,可以直观的翻译为“组件”,它的设计理念来自于React组件化的思想。每个组件持有描述一个视图单元所必须的属性和状态,用于视图布局的计算工作。视图最终的绘制工作是由组件指定的绘制单元(View或者Drawable)来完成的。

Litho组件的创建方式也和原生View的创建方式有着很大的区别。Litho使用注解定义了一系列的规范,我们需要使用Litho的注解来定义自己的组件生成规则,最终由Litho在编译期自动编译生成真正的组件。

2.2.1 组件规范

Litho提供了两种类型的组件规范,分别是Layout Spec规范和Mount Spec规范。下面分别介绍两种规范的使用方式:

Layout Spec规范 :用于生成布局类型组件的规范,布局组件在逻辑上等同于Android中的ViewGroup,用于组织其他组件构成一个布局。它要求我们必须使用@LayoutSpec注解来注明,并实现一个标注了@OnCreateLayout注解的方法。示例如下:

最终Litho会在编译时生成一个名为HelloComponent的组件。

Mount Spec规范 :用来生成可挂载类型组件的规范,用来生成渲染具体View或者Drawable的组件。同样,它必须使用@MountSpec注解来标注,并至少实现一个标注了@onCreateMountContent的方法。Mount Spec相比于Layout Spec更复杂一些,它拥有自己的生命周期:

@OnPrepare,准备阶段,进行一些初始化操作。@OnMeasure,负责布局的计算。@OnBoundsDefined,在布局计算完成后挂载视图前做一些操作。@OnCreateMountContent,创建需要挂载的视图。@OnMount,挂载视图,完成布局相关的设置。@OnBind,绑定视图,完成数据和视图的绑定。@OnUnBind,解绑视图,主要用于重置视图的数据相关的属性,防止出现复用问题。@OnUnmount,卸载视图,主要用于重置视图的布局相关的属性,防止出现复用问题。

除了上述两种组件类型,Litho中还有一种特殊的组件——Layout,它不能使用规范来生成。Layout是Litho中的容器组件,类似于Android中的ViewGroup,但是只能使用Flexbox的规范。它可以包含子组件节点,是Litho各组件连接的纽带。Layout组件只是Yoga在Litho中的代理,组件的所有布局相关的属性都会直接设置给Yoga,并由Yoga完成布局的计算。Litho实现了两个Layout组件Row和Column,分别对应Flexbox中的行和列。

2.2.2 Litho的属性

在Litho中属性分为两种,不可变属性称为Props,可变属性称为State,下面分别介绍一下两种属性。

Props属性 :组件中使用@Prop注解标注的参数集合,具有单向性和不可变性。下面通过一个简单的例子了解一下如何在组件中定义和使用Props属性:

在上面的代码中,共使用了三次Prop注解,分别标注prop1和prop2两个变量,即定义了prop1和prop2两个属性。Litho会在自动编译生成的MyComponent类的Builder类中生成这两个属性的同名方法。按照如下代码,便可以去使用上面定义的属性:

State属性 :意为“状态”属性,State属性虽然可变,但是其变化由组件内部控制,例如:输入框、Checkbox等都是由组件内部去感知用户行为,并更新组件的State属性。所以一个组件一旦创建,我们便无法通过任何外部设置去更改它的属性。组件的State属性虽然不允许像Props属性那样去显式设置,但是我们可以定义一个单独的Props属性来当做某个State属性的初始值。

3. Litho的特性及原理剖析

Litho官网首页通过4个段落重点介绍了Litho的4个特性。

3.1 声明式组件

Litho采用声明式的API来定义UI组件,组件通过一组不可变的属性来描述UI。这种组件化的思想灵感来源于React,关于声明式组件的用法上面已经详细介绍过了。

传统Android布局因为UI与逻辑分离,所以开发工具都有强大的预览功能,方便开发者调整布局。而Litho采用React组件化的思想,通过组件连接了逻辑与布局UI,虽然Litho也提供了对Stetho的支持,借助于Chrome开发者工具对界面进行调试,不过使用起来并没有那么方便。

3.2 异步布局

Android系统在绘制时为了防止页面错乱,页面所有View的测量(Measure)、布局(Layout)以及绘制(Draw)都是在UI线程中完成的。当页面UI非常复杂、视图层级较深时,难免Measure和Layout的时间会过长,从而导致页面渲染时候丢帧出现卡顿情况。Litho为解决该问题,提出了异步布局的思想,利用CPU的闲置时间提前在异步线程中完成Measure和Layout的过程,仅在UI线程中完成绘制工作。当然,Litho只是提供了异步布局的能力,它主要使用在RecyclerView等可以提前知道下一个视图长什么样子的场景。

3.2.1 异步布局原理剖析

针对RecyclerView等滑动列表,由于可以提前知道接下来要展示的一个甚至多个条目的视图样式,所以只要提前创建好下一个或多个条目的视图,就可以提前完成视图的布局工作。

那么Android原生为什么不支持异步布局呢?主要有以下两个原因:

View的属性是可变的,只要属性发生变化就可能导致布局变化,因此需要重新计算布局,那么提前计算布局的意义就不大了。而Litho组件的属性是不可变的,所以对于一个组件来说,它的布局计算结果是唯一且不变的。提前异步布局就意味着要提前创建好接下来要用到的一个或者多个条目的视图,而Android原生的View作为视图单元,不仅包含一个视图的所有属性,而且还负责视图的绘制工作。如果要在绘制前提前去计算布局,就需要预先去持有大量未展示的View实例,大大增加内存占用。反观Litho的组件则没有这个问题,Litho的组件只是视图属性的一个集合,仅负责计算布局,绘制工作由指定的绘制单元来完成,相比与传统的View显然Litho的组件要轻量的多。所以在Litho中,提前创建好接下来要用到的多个条目的组件,并不会带来性能问题,甚至还可以直接把组件当成滑动列表的数据源。如下图所示:

3.3 扁平化的视图

使用Litho布局,我们可以得到一个极致扁平的视图效果。它可以减少渲染时的递归调用,加快渲染速度。

下面是同一个视图在Android和Litho实现下的视图层级效果对比。可以看到,同样的样式,使用Litho实现的布局要比使用Android原生实现的布局更加扁平。

3.3.1 扁平化视图原理剖析

Litho使用Flexbox来创建布局,最终生成带有层级结构的组件树。然后Litho对布局层级进行了两次优化。

使用了Yoga来进行布局计算,Yoga会将Flexbox的相对布局转成绝对布局。经过Yoga处理后的布局没有了原来的布局层级,变成了只有一层。虽然不能解决过度绘制的问题,但是可以有效地减少渲染时的递归调用。前面介绍过Litho的视图渲染由绘制单元来完成,绘制单元可以是View或者更加轻量的Drawable,Litho自己实现了一系列挂载Drawable的基本视图组件。通过使用Drawable可以减少内存占用,同时相比于View,Android无法检查出Drawable的视图层级,这样可以使视图效果看起来更加扁平。

原理如下图所示,Litho会先把组件树拍平成没有层级的列表,然后使用Drawable来绘制对应的视图单元。

Litho使用Drawable代替View能带来多少好处呢?Drawable和View的区别在于前者不能和用户交互,只能展示,因此Drawable不会像View那样持有很多变量和引用,所以Drawable比View从内存上看要轻量很多。举个例子:50个同样展示“Hello world”的TextView和TextDrawable在内存占比上,前者几乎是后者的8倍。对比图如下,Shallow Size表示对象自身占用的内存大小。

3.3.2 绘制单元的降级策略

由于Drawable不具有交互能力,所以对于使用Drawable无法实现的交互场景,Litho会自动降级成View。主要有以下几种场景:

有监听点击事件。限制子视图绘出父布局。有监听焦点变化。有设置Tag。有监听触摸事件。有光影效果。

对于以上场景的使用请仔细考虑,过多的使用会导致Litho的层级优化效果变差。

3.3.3 对比Android的约束布局

为了解决布局嵌套问题,Android推出了约束布局(ConstraintLayout),使用约束布局也可以达到扁平化视图的目的,那么使用Litho的好处是什么呢?

Litho可以更好地实现复杂布局。约束布局虽然可以实现扁平效果,但是它使用了大量的约束来固定视图的位置。随着布局复杂程度的增加,约束条件变得越来越多,可读性也变得越来越差。而Litho则是对Flexbox布局进行的扁平化处理,所以实际使用的还是Flexbox布局,对于复杂的布局Flexbox布局可读性更高。

3.4 细粒度的复用

Litho中的所有组件都可以被回收,并在任何位置进行复用。这种细粒度的复用方式可以极大地提高内存使用率,尤其适用于复杂滑动列表,内存优化非常明显。

3.4.1 原生RecyclerView复用原理剖析

原生的RecyclerView视图按模板类型进行存储并复用,也就是说模板类型越多,所需存储的模板种类也就越多,导致内存占用越来越大。原理如下图。滑出屏幕的itemType1和itemType2都会在Recycler缓存池保存,等待后面滑进屏幕的条目的复用。

3.4.2 细粒度复用优化内存原理剖析

在Litho中,item在回收前,会把LithoView中挂载的各个绘制单元拆分出来(解绑),由Litho自己的缓存池去分类回收,在展示前由LithoView按照组件树的样式组装(挂载)各个绘制单元,这样就达到了细粒度复用的目的。原理如下图。滑出屏幕的itemType1会被拆分成一个个的视图单元。LithoView容器由Recycler缓存池回收,其他视图单元由Litho的缓存池分类回收。

使用细粒度复用的RecyclerView的缓存池不再需要区分模板类型来缓存大量的视图模板,只需要缓存LithoView容器。细粒度回收的视图单元数量要远远小于原来缓存在各个视图模板中的视图单元数量。

4. 实践

美团对Litho进行了二次开发,在美团的MTFlexbox动态化实现方案(简称动态布局)中把Litho作为底层UI渲染引擎来使用。通过动态布局的预览工具,为Litho提供实时预览能力,同时可以有效发挥Litho的性能优化效果。

目前Litho+动态布局的实现方案已经应用在了美团App中,给美团App带来了不错的性能提升。后续,我们还会另外写一篇文章详细介绍Litho+动态布局在美团性能优化的实践方案。

使用Litho+动态布局实现的部分卡片

4.1 内存数据

由于Litho中使用了大量Drawable替换View,并且实现了视图单元的细粒度复用,因此复杂列表滑动时内存优化比较明显。美团首页内存占用随滑动页数变化走势图如下。随着一页一页地滑动,内存优化了30M以上。(数据采集自Vivo x20手机内存占用情况)

4.2 FPS数据

FPS的提升主要得益于Litho的异步布局能力,提前计算布局可以减少滑动时的帧率波动,所以滑动过程较平稳,不会有高低起伏的卡顿感。(数据采集自魅蓝2手机一段时间内连续fps的波动情况)

5. 总结

Litho相对于传统Android是颠覆式的,它采用了React的思路,使用声明式的API来编写UI。相比于传统Android,确实在性能优化上有很大的进步,但是如果完全使用Litho开发一款应用,需要自己实现很多组件,而Litho的组件需要在编译时生成,实时预览方面也有所欠缺。相对于直接使用Litho的高成本,把Litho封装成Flexbox布局的底层渲染引擎是个不错的选择。

6. 参考资料

Litho官网说一说 Facebook 开源的 LithoReact官网Yoga官网

7. 作者简介

少宽, 美团Android开发工程师,2015年加入美团,负责美团平台终端业务研发工作。

张颖, 美团Android开发工程师,2017年加入美团,负责美团平台终端业务研发工作。

欢迎加入美团前端技术交流群 ,跟作者零距离交流。进群方式:请加美美同学微信(微信号:MTDPtech02) ,回复:Litho ,美美会自动拉你进群。

红米AC2100灵魂三连:值不值得买?买了怎么刷?刷了怎么样?

本内容来源于@什么值得买APP,观点仅代表作者本人 |作者:小刀割肉

创作立场声明: 自购自测,随心所欲

创作背景

大家好,我是喜欢折腾路由器的小刀割肉。了解我的朋友应该都知道我写过不少的路由器文章,不过我手头的路由器大部分都是因为固件问题被我束之高阁,反而一款不到百元的小娱成为了我的主

自从红米AC2100被大神破解可以自由刷固件以后带火了这款路由器,像我这样喜欢折腾的人当然不能放过,所以写下这篇文章。文章主要分三个部分:

谈谈最近火的的红米AC2100值不值得买,详细的刷机教程,简单测试刷机后路由器表现情况。

618的时候参加京东叠蛋糕最后分了30多块红利,没什么想买的就入手了这款红米AC2100,购买截图如下:

实物就下面这张图了,细节就不晒了,100多的路由也就那样吧。

灵魂拷问

红米AC2100(以下简称红米)和小米AC2100(以下简称小米)谁更值?

两款路由硬件都差不多,不过红米多了2个外置信号放大器,理论来说红米更强。注意一点小米的商品页面宣传的”集成6路信号放大器“指的是得是芯片集成而不是单独的独立功放。

外观不同,小米是内置天线的垃圾桶造型,红米是传统的多天线造型。小米的外形明显好看得多。

两款路由都可以刷机,不过红米的内存存在东芝和EMST混用的情况,而东芝好像坏块的几率很高,小米暂时没有发现这方面的问题。如果不刷机两者使用没有区别,刷机的话固件遇到坏块会出问题,据说官方固件比较完善或者说是没有用到这些坏块区域,准确情况现在不得而知,刷机的时候可以查看内存情况的。

价格不同,小米要贵个几十块。

结论:为什么现在刷机都是以红米为主?就是因为价格更加便宜,功放更强。我个人的建议刷机的话选择红米更具性价比,不刷机的话这两款都别选,小米的固件实在不咋样。多说一句,两款路由器的电源不能通用。

红米AC2100和K2P相比谁更值?

从我个人使用情况来看,红米5G更加强悍,近距离的上网体验更加优秀,但穿墙后效果大打折扣。K2P的2.4G要比红米好一点,但差距并不大,特别是刷机后说两者不相伯仲并不为过。如果是普通家庭(100平左右,穿墙要求2堵)只打算用一个路由那么没有k2p的我建议红米,有k2p的不用折腾。如果对5G有要求,准备全屋覆盖多个路由达到5G全覆盖,那么不管是性能还是价格毫无疑义红米。多说一句:K2P之所以被称为神机就是因为信号强,价格低,可刷固件多,可玩性高,但现在200+的价格是彻底失去了性价比,而且K2P作为已经下市的机型谁也不敢保证你买的是全新(很多号称新机的卖家都是自己覆膜冒充新机,所谓的99新也是忽悠,只要外观没有明显使用痕迹用2年都可以自称99新),直白的说这个价位买K2P的人属于被驴踢了的典型。

我家比较宽(或者穿墙多),听说红米AC2100是神机,能满足我的需求不?

别指望了,路由的发射功率国家有要求的,再神的路由都不能满足你,老老实实用mesh吧,我写过几篇mesh路由的评测,有兴趣的可以看看。

不会刷机也不想刷机可以买红米AC2100?

一句话:别买小米的固件真的很渣,断流属于家常便饭,固件里能够自由选择调试的选项也少,强烈不建议不刷机的用户购买。但是有些朋友只是想简单买个路由上网,那么我建议水星 D268G,全千兆端口,外置八根高增益天线,提供2.4GHz频段800Mbps、5GHz频段1733Mbps双频并发,支持4*4 MU-MIMO,ACWiFi站长做过对比,水星比红米强一点。D268G日常售价199,6月初有过110的好价。性价比爆棚。

买了红米也别怕,下面的刷机教程超级简单,跟我学轻轻松松搞定刷机。

红米AC2100刷机

刷机过程超级简单,比以前刷K2P,N1轻松多了,其实刷机过程大家都差不多,不过就是写的详细与否的区别。跟着我保证让你轻松刷机。

下载刷机固件备用

①关闭防火墙

关闭防火墙,特别是火绒用户,刷机固件解压会被火绒干掉。不知道Win10自带杀毒会不会杀固件,安全一点都关掉。

②开启telnet

Win+R 打开运行窗口, 输入 “OptionalFeatures” 打开 Windows 功能.下拉找到Telnet Client在前面的方框里打钩-确定

③连接路由器

配送的网线一头连接路由wan口,一头连接路由lan口。

再找一根网线,一头连接路由另一个lan口(挨着之前插了网线的lan口),另一头插电脑网口。

④禁用其他网卡

设置-网络和Internet-网络和共享中心-更改适配器设置-禁用所有接口,只保留连接红米路由那个网卡接口。

⑤设置IP地址

▼右键点击网卡-属性-“Internet协议版本4-填入以下地址-确定(这一步是固定红米路由的IP地址)。

ip地址:192.168.31.177

掩码255.255.255.0

网关192.168.31.1

⑥解压前面我给的固件包,安装里面的npcap-0.9991.exe

⑦打开浏览器,输入地址:192.168.31.1,这时候应该进入红米固件登录页面。

上网设置选择pppoe拨号,用户名和密码都填“123”。确认以后就不用管它,让他自己转圈圈。

⑧复制下面这段命令备用

cd /tmp&&wget http://192.168.31.177:8081/busybox&&chmod a+x ./busybox&&./busybox telnetd -l /bin/sh

▼双击固件包里的“一键开启telnet.bat”文件,对照弹出的命令检查前面的工作是否无误,没问题的话输入“Y”回车。

⑨这时候会弹出另一个窗口,等待一会儿,出现数据包就表示已经正常连接。同时原窗口会出现另一段话“请检查...否有数据包,如有则按Y继续”,输入“Y”回车

⑩如果前面一切正常,这时候会弹出另一个窗口,把之前复制那段命令粘贴进去。

注意:很多朋友都卡在这里,用ctal+V粘贴不进去,所以我详细说说,两种方法:

重新复制一下这条命令,右键点击这个窗口就能自动复制进去。

▼如果复制不进去就右键标题栏,选择编辑-粘贴

⑪右键左下角的开始,选择运行,输入cmd,弹出命令输入窗口。

复制下面这条命令用上面方法输入

telnet 192.168.31.1

wget http://192.168.31.177:8081/breed-mt7621-xiaomi-r3g.bin&&nvram set uart_en=1&&nvram set bootdelay=5&&nvram set flag_try_sys1_failed=1&&nvram commit

mtd -r write breed-mt7621-xiaomi-r3g.bin Bootloader

▼然后就是一段字符,速度很快,看到出现“rebooting”字样就是完成刷机了

⑫回到设置IP地址那里,将地址改为自动获取,确定。

⑬到现在为止就已经成功将Breed刷入了路由,Breed也就是俗称的不死系统,在这里我们可以随意刷自己想用的系统。

先把路由断电,然后找根牙签顶住路由的重置按钮,通电,通电过程持续顶住牙签,心里默数10秒以上松开(最低10秒,你愿意可以顶一天),

▼浏览器输入“192.168.1.1”进入Breed Web页面,这里也可以看到刷机路由的配置,最有用的就是可以看到这台红米的内存芯片,像我这台的FLASH就是ESMT,稳了。

⑭现在就可以随意刷自己想用的固件了。

选择固件更新,在“固件”前面打钩,选择文件选择想刷机的固件。我分享的固件包里包含的固件有C大和H大的,可以自己选择想刷的固件,我刷的是C大的。如果后续各位大佬有发布更新更好的,可以执行第⒀步重新刷入新的固件。

⑮确认刷机包无误。等待刷机进度条走完,路由会自动重启但页面不会刷新

⑯等待一会儿,浏览器输入192.1680.1.1进入后台登录页面。

⑰进入系统后先双清,然后就可以正常使用了。至此刷机全部完成

▼可以看到刷机后5G增加了160Mhz.

▼我刷机最主要就是因为可以使用去广告功能,家里的小米电视,T1盒子都指望着路由器呢,教程可以看看我DIY小娱理由那篇。

信号测试

▼试试刷机前后信号对比以及和手头k2p的对比,户型图如下

刷机前官方固件 VS K2P

客厅沙发位置,无墙壁遮挡,直线距离不到2米.

▼难怪很多人说红米的5G是打了鸡血。K2P只有和手机紧挨着才能上866Mbps,轻轻一动立刻掉到650Mbps;红米则是坐在沙发上都是稳稳的866Mbps。

A点5G信号强度:K2P-70dBm,红米-76dBm,不过两者波动都比较大,数据了解下看看即可

2.4G:K2P信号强度-55dBm(距离10.55),红米-62dBm(距离17.09),速度都是72Mbps,可以说两者差不多。

▼刷机后再看看信号有否提升。

客厅无阻挡的情况下两款路由都是连接的5G,结果也和上次一样,K2P很难保持866Mbps,红米可以说稳得一比,只要在客厅速率就好像焊在了866Mbps一样。

AB两点,不管是2.4G还是5G,两款路由信号极其相近,这个点可能K2P强,手机左手换到右手可能就是红米强,简单说两者信号真的近似的不得了。

网速测试我也是自己搭建了一个speedtest服务器。

▼客厅5G测速,红米的速率可以说是把K2P摁在地上摩擦。

▼AB两点测试:A点是穿了两堵承重墙,B点虽然近但背面是浴室,瓷砖会反射信号,所以这两个点几乎都连不上5G。

2.4G测试结果如下,数据来看K2P占优但优势不大,红米刷机后的确信号强了不少。

总结

总结也没什么可说的了,前面的问答几乎覆盖了所有对这个路由感兴趣的话题,简单总结下吧:

性价比真的不错,主要是可玩性高,信号也蛮强的。 有K2P的朋友别折腾了,想入手K2P的买红米AC2100划算的多。 不刷机的朋友千万别买。 5G的体验真的优秀,家里用最好选5G,信号不够就多买几个铺满5G。

我是小刀,码字不易,评测劳心,一个赞一个收藏都给作者最大的鼓励。

相关问答

GPS天线内置和外置的不同,哪种信号好-ZOL问答

TP-LINK740N属于低端路由器,在官方主页上是没有无线中继功能的。但是却能升级到带无线中继功能tp-link740n必须是v4版本,能升级到741nv1,也能升级到743nd...

tp-linkwr941nv2如何刷回原厂固件?

刷回原厂固件的方法如下:1、先去TP-Link国外的官网下载一个带有boot的固件,TL-WR941ND_V4_091118,然后在Unix系统下面使用dd命令,把boot部分去掉,命令为:d...

路由器肿么刷机-ZOL问答

也可以使用TFTP方法刷新。但不要随心所欲的给路由器刷机,刷机前需要参照硬...1、固件:下好相应的DDWRT/TOMATO/TOMATODUALWAN/OPENWRT等固件(FI...

小米路由器4怎么刷固件?

先我们先进入路由器官网下载模快,点击右边的“ROM”进入后往下拉动,我们可以看到如下图中样式,我们点击“开发版”下的“下载”进行文件下载得到最新的小米...

小米路由器MINI版刷了华硕固件肿么刷回原版固件-ZOL问答

接下来会用到putty(ssh客户端登陆工具)。putty:hostname输入:192.168.31.1(或者输入:miwifi.com)点击open进入命令提示符界面输入→root→回车...

怎么提取rom中的apk到手机-ZOL问答

1.tar或ZIP直接解压里面有system文件,已文档方式显示,可以直接解压即可2.tar或ZIP解压后为img格式(如果是tar.md5格式,请修改文件后缀名删除“MD5”即可)3.先...

 邵阳汽车站  明道资料 
王经理: 180-0000-0000(微信同号)
10086@qq.com
北京海淀区西三旗街道国际大厦08A座
©2025  上海羊羽卓进出口贸易有限公司  版权所有.All Rights Reserved.  |  程序由Z-BlogPHP强力驱动
网站首页
电话咨询
微信号

QQ

在线咨询真诚为您提供专业解答服务

热线

188-0000-0000
专属服务热线

微信

二维码扫一扫微信交流
顶部