自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(11)
  • 收藏
  • 关注

原创 React Native | Metro打包利器

对于前端的打包工具有webpack(大而全,图片代码打包),rollup(专攻代码打包,框架场景常见)等,既然有这些打包工具为什么还要在移动端搞一个metro,其中一个原因为ram bundle,iOS采用indexed ram bundle读取一个文件效率更高,Android采用file ram bundle。那么接下来了解一下metro。Metro生命周期。

2022-12-12 21:40:57 903 1

原创 垂直信号vsync

屏幕的刷新率为60hz,在接受到vsync这个信号之后会处理一下事情然后通知Choreographer,Choreographer会主线程doFrame这一帧,在下一次vsync来临之前得提前将frame写入buffer供屏幕使用,在这一帧里面会通知UI有四种类型的需要回调。其实如果帧率一直是50fps这样稳定还看不出掉帧,比较明显的掉帧是帧率不稳定,一会50fps一会60fps再一会40fps掉帧的感觉就会比较明显。其中处理一条message消费的时间即为一帧的消耗。关注公众号:未知思考。

2022-11-26 17:42:36 480

原创 再谈Android View树

在measure阶段从根节点开始dfs measure,每一个父节点会计算子节们点给的layout params(width、height、margin等)和自身的一些情况总结出一份新的宽高测量specification,然后在递归传给子节点们,当一个每个节点measure完成都会给被打上PFLAG_MEASURED_DIMENSION_SET的flag标记并且确定宽高(measure得到的宽高只是理想状态的宽高,还需要经过layout才会确定最终宽高)。由于事件分发代码较多,我们这里用伪代码来简化一下。

2022-11-13 18:54:37 886

原创 React Native | 初代渲染器

在2022年react native的团队规划中,做了一次大的技术改造,将shadow树在cpp中实现,react采用fabric,整个渲染流水线发生了较大的变动。实例化FallbackViewManagerSetter对象的时候,会扫描ViewManager带有ReactProp注解的方法,并保存到ViewManagersPropertyCache的map中,当在setProperty刷新每个属性时,就会调用其对应的方法进行正在ui更新。React Native渲染场景我们分为初次渲染与状态更新。

2022-11-07 23:23:03 665

原创 React Native | Java和JavaScript互操作

这个调用链都是在js线程完成的,也就是会阻塞js线程,如果不想阻塞js线程,可以采用异步的方式,promise或者async/await,异步的方式会将模块与函数的信息存到queue,flush到cpp层(global.nativeFlushQueueImmediate),flush间隔不能小于5ms。通过codegen会自动生成cpp与java的turbo接口代码,java侧的TurboModule的接口签名信息与函数地址会被存储在cpp层的TurboModule#methodMap_中.

2022-11-06 19:23:33 584

原创 React Native | 启动流程

我们主要关注的是有 CatalystInstace 负责的 js bundle 加载过程,这里我们需要说明一下,单单从 CatalystInstace 名字我们就能知道其职责,催生一个 React 应用实例,其是一个混合对象,一部分是由 JVM 堆分配的 java 对象,一部分是由操作系统分配的 cpp 对象。当实例化一个 CatalystInstanceImpl 对象之后,会在构造器中,初始化 native 到 js 的桥,在这条桥上游两条消息通道,一条通往 js,一条通往模块调用。

2022-11-01 03:30:00 2151

原创 React Native | 前言

知道了这些事之后,我们可以来做个大概的总结,其实React Native框架就是我们平时的原生开发通过libjsc.so等库去解析bundle(许多JavaScript文件的打包文件,为了提高性能所以进行了打包),而Java和JavaScript的交互就是通过这一层所谓的bridge完成的。说完这些知识点,我们就知道了其实React Native的存在就是为了让原生开发的一套规范转换到Web开发规范,既然换了一种开发方式就意味着你要学习Web开发的相关知识,这里推荐一篇博文供大家入门前端开发,

2022-10-31 22:32:26 586

原创 构建工具Gradle

从Android团队开始宣布放弃Eclipse转投Android Studio时,构建工具Gradle进入了Android开发者的视野。而随着热修复、插件化、编译时注解的流行,深入了解Gradle就变得很有必要了。那么什么是Gradle?Gradle是一个基于Ant构建工具,用Groovy DSL描述依赖关系的jar包。我们都知道早期的Android开发使用的是Eclipse,而Eclipse的构建工具使用的是Ant,用XML描述依赖关系,而XML存在太多的弊端,不如动态语言。

2018-03-05 13:23:36 2578 1

原创 构建工具GNU make

  在阅读GNU make构建工具相关资料的时候,一直在思考几个问题  其实如果不回答上面三个问题,并不会对我们学习Makefile语言有什么障碍。但是笔者个性使然,就是想要把这些关系梳理清楚再去学习其中的语法。  先来回答第一个问题,阮一峰在他的博文中认为build叫做构建,compile叫做编译,参考这个Make 命令教程。所以我认为“ build system ” 叫做构建系统,而构建工具是构建系统中的一部分。构建工具有很多种 :成熟大型项目常用的make ,Android平台开发

2018-03-05 12:26:48 5380 2

原创 repo工具

  首先说一下为什么会想分享这篇博客。出发点很简单,只是想学习一下Python在AOSP中的应用。repo应用就是一个研究的切入点。其次Python在深度学习、大数据都有一定的支持,后续会研究一下这方面的技术。最后就是个人喜好,无他。  repo就是通过Python封装git命令的应用。什么是repo?简单来说就是对AOSP含有git仓库的各个项目的批处理。repo应用包括repo仓库(仓库也可以叫做项目)、manifest仓库、projectsc仓库集这三个核心。repo仓库都是一些Python文件,m

2017-04-19 16:17:03 5248 2

原创 网络 | 网络协议与网络制式

中国的三大运营商网络制式 China Telecom China Unicom China Mobile 2G CDMA GSM 3G CDMA2000 WCDMA 4G LTE(FDD/TDD) LTE(FDD/TDD)先来说说国内的,三大运营商都知道是中电信、中移动、中联通。 2G:电信的CDMA早期是由联...

2016-04-23 16:58:00 2543 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除