- 博客(49)
- 资源 (2)
- 收藏
- 关注
原创 RN拆包解析
一. 拆包动机RN作为非常优秀的移动端跨平台开发框架,在近几年得到众多开发者的认可。国内各大厂采用在当前原生应用内集成RN的方式,使得App应用的灵活性得到了很大的提升。在原生应用内嵌入RN,就是需要在原生应用内加载RN模块(1个或多个JSBundle),并得以显示。JSBundle中包含了当前RN模块的js代码。如果存在多个RN模块需要被加载时,就需要分别打出多个JSBundle,并且多个JS...
2020-01-14 17:40:28
1123
原创 原生RN与58RN启动流程分析
一.原生加载流程我们知道RN的页面也是依托Activity,React Native框架里有一个ReactActivity,它就是我们RN页面的容器。ReactActivity里有个ReactRootView,正如它的名字那样,它就是ReactActivity的root View,最终渲染出来的view都会添加到这个ReactRootView上。ReactRootView调用自己的startR...
2020-01-14 17:39:47
743
原创 ReactNative fetch源码分析
原生分析的是安卓端核心代码//react-native/vendor/core/wehatwg-fetch.jsself.fetch = function(input, init) { return new Promise(function(resolve, reject) { var request = new Request(input, init); v...
2020-01-14 17:38:51
898
原创 RN对性能监控的思考及工具分享
分享内容全局属性Context性能监控debug工具一.全局属性Context1.概念当你不想在组件树中通过逐层传递props或者state的方式来传递数据时,可以使用Context来实现跨层级的组件数据传递。上图,使用props或者state传递数据,数据自顶下流。使用Context,可以跨越组件进行数据传递。使用Context如果要Context发挥作用,需要用到两...
2020-01-14 17:24:35
1989
原创 RN bundle自动化静态扫描
背景起因是在排查公寓找室友bundle过大问题时,发现house-middle-sdk体积异常,逐个删减引用得出结论是引用了node-forge库导致,通过这次手动排查经历演化出做一个bundle自动化静态扫描的想法。介绍安装npm i house-cli -g使用根目录添加metro.config.js文件//里面引用全局路径(这个后面优化一下)module.exports ...
2020-01-14 17:23:48
342
原创 react-native metro 分析
文章目录前言概念ResolutionTransformationSerialization打包方式MoudlesPlain bundleIndexed RAM bundleFile RAM bundle流程前置流程resolve流程Transformer流程序列化流程缓存为什么要缓存缓存的请求与缓存Metro配置结构前言metro是一种支持ReactNative的打包工具,我们现在也是基于他来...
2020-01-14 17:17:38
2793
原创 老生常谈MVP架构
原生框架问题由于原生 Android 开发应该已经是一个基础的 MVC 框架,所以在初始开发的时候并没有遇到太多框架上的问题,可是一旦项目规模到了一定的程度,就需要对整个项目的代码结构做一个总体上的规划,最终的目的是使代码可读,维护性好,方便测试。 只有项目复杂度到了一定程度才需要使用一些更灵活的框架或者结构,简单来说,写个 Hello World 并不需要任何第三方的框架
2018-04-23 11:23:18
988
原创 ReactNative入门-用webstorm调试
目的之前一直用chrome调试,一个是不习惯前端调试方法,毕竟是android 出身嘛还是习惯IDE调试,还有就是源码位置总要滑到底才能找到,很麻烦。突然发现ReactNative也能用IDE调试真是喜出望外啊,将配置和调试方法记录一下。IDE设置首先配置项,点击Edit Configurations然后配置react native启动项 其中有几点说明一下
2018-01-12 09:09:04
5523
原创 android nexus私服的使用
先唠叨几句啊,由于公司私服已经搭好了我就不费那劲琢磨搭建私服的事了,直接开撸上传lib。下图是我放组件库的地方,本来想一个module拉出一个项目来维护,后来想想实在是麻烦,同时维护多个库就要down多个库下来,于是就统一管理了。当然统一维护module多了自然会影响编译的速度,可以在settings.gradle 里将不编译的module注释掉就可以了。现在就有图片选择、表情、输入框、星星、视频录
2017-12-05 00:35:25
1176
原创 todo-mvvm-databinding源码分析
目的分析和学习官方mvvm框架的设计模式和数据绑定在其中的具体用法,制作一套符合当前公司业务场景的mvvm框架。其中也分析一下数据源在项目中的设计以及框架中单元测试的实施。设计模式MVVM框架中的ViewModel相比MVP框架中的Presenter起着类似的作用。两种框架结构的不同之处在于View分别与ViewModel或Presenter进行通信
2017-11-28 23:36:07
1000
原创 Data binding 入坑笔记三layout表达式详解
Data binding 入坑笔记一入门篇 Data binding 入坑笔记二进阶篇之双向绑定 前两篇介绍了基础知识和双向绑定,今天我们来详细剖析一下layout语法规则,以便能灵活使用data binding
2017-11-21 17:23:10
4369
2
原创 Data binding 入坑笔记二进阶篇之双向绑定
Data binding 入坑笔记一入门篇 上一篇介绍了Data binding的基础用法,你可能会想这也太基础了,只支持前置数据的绑定,一旦数据变化了UI都监听不到。不要着急,这一篇就来讲到databinding的双向绑定用法。
2017-11-19 20:23:49
6826
翻译 Android Studio3.0新特性
Android Studio是Android开发的官方IDE,包含构建Android应用程序所需的一切。要获取最新版本,请单击帮助>检查更新(在Mac上,Android Studio>检查更新)。3.0(2017年10月)Android Studio 3.0.0是一个主要版本,包括各种新功能和改进。 macOS用户:如果您正在更新旧版本的Android Studio,则可能会遇到一个更新错
2017-11-14 11:06:54
804
原创 Android中AOP实践之三AspectJ解析篇
介绍AspectJ是Java的一个简单实用的面向方面的扩展。通过几个新的构造,AspectJ提供了对一系列横切关注的模块化实现的支持。在现有的Java开发项目中采用AspectJ可能是一个简单而且增量的任务。一条路径是从开发方面开始,继续使用生产方面,然后在使用AspectJ建立经验之后再使用方面。采用也可以遵循其他途径。例如,一些开发人员将从马上使用生产方面受益。
2017-11-12 16:25:40
1084
原创 Android中AOP实践之二场景篇
上一篇介绍了切面编程AOP的概念,这一篇来讲讲常用的场景,在项目应用中可以分为通用场景和业务场景两种。其中通用场景我用到了日志输出、方法计时、异步操作、异常拦截、动态权限等,业务场景用到了登录验证和单次点击。整个AOP编程是基于aspect实现的,至于实现原理我想放到下一篇再讲。
2017-11-09 18:13:37
762
原创 Android中AOP实践之一概念篇
在说AOP之前先来说说java最经典的OOP(面向对象编程),我们通过面向对象的封装思想把同一类事物的共性归为一类中,方便我们统一管理。比如我们会把汽车的轮子,发动机,车身喷漆都放在汽车这个类中。这样的好处是良好的封装能够减少耦合,隐藏信息实现细节。但是试想一下如果每个类中有没有重复调用的代码呢?比如日志输出、缓存处理。这里就需要用到AOP思想了。什么是AOP编程
2017-11-07 17:50:10
281
原创 集成到现有原生Android应用错误集锦
ps: 坑多的有点过分啊亲~错误1变更sdk目录后adb找不到 解决方案:修改ANDROID_HOME错误2react-native run-android Android project not found 解决方案: 应该在根目录执行转换将项目名改为androidsetting中加rootProject.name = 'MyappProject'错误3curl指令找不到 解决方
2017-09-29 15:58:14
415
原创 android项目分层解析
整体分层结构整体分为app和base两个层,app层作为项目的业务层,里面所有的分包都和当前业务相关。base层作为项目的框架层。业务与框架层级分离的好处:可以让我们更专注于业务的开发可以快速集成新的项目方便每个项目在原有框架上做快速的更新迭代业务层分层解析业务层内的基本分包是固定结构,因为每个项目都会有这些元素。因为富文本编辑器在互动讨论项目是重点,所以这里加上了一个editor包来统一管
2017-09-13 18:22:56
3576
原创 女生初级健身训练计划
初级训练计划给女票制定的健身计划…训练节奏热身无氧训练拉伸有氧训练训练安排前期可以练一休一,后面两天休一每个动作3组每组8-10次,后面如果没有力气尽量做到力竭单一动作组间间隔不超过40秒热身内容 跑步机2圈 速度6-8要点 匀速跑,保持呼吸均匀无氧训练第一天肩部胸部练习肩部肩绕环 向前向后肩部绕环站姿肩部深层激活哑铃侧平举胸部哑铃平地飞鸟哑铃平地卧推拉
2017-05-06 13:53:27
4163
原创 android技术栈-现有使用的进行一个汇总(初稿)
android技术栈开发工具Android studio开发语言Java自动化构建gradleapp技术组织架构基础层基础框架层专注于技术领域实现,提供app公有特性,避免重复制造轮子。注重性能和稳定性。需要不断稳固提高健壮性。
2017-04-24 16:19:40
5449
原创 Android Studio 关于多个module引用同一jar包的问题
Android Studio 关于多个module引用同一jar包的问题 Error:Execution failed for task ':app:transformClassesWithJarMergingForDebug'. > com.android.build.api.transform.TransformException: java.util.zip.ZipExcepti
2017-03-20 16:43:43
16971
原创 android5.0以上手机host修改教程
host修改教程root手机修改host第一大关就是root,用超级adbd.apk完美解决不能完全root的问题
2016-09-19 15:58:18
10844
原创 Retrofit框架基本封装
序言本来想县写一篇关于Retrofit使用的文章为开端,不过网上到处都是而且也比较简单,写了也没人看哈。于是就从基本封装开始吧。 基本使用可以看这里Retrofit官方文档目的下面这个是Retrofit基本用法,可以发现每次调用请求的时候都需要创建一次retrofit对象,我们的目的就是简化请求操作,不用多次配置Retrofit。
2016-09-10 15:19:42
575
原创 android判题自定义view
RightOrWrongView这是一个判断对错的动画,场景可以用于试题的应用,来判断做题的正误啦:)引入到你的项目1.copy BallView.java 和 mipmap-xxhdpi里面的图片到项目中即可 2. 在values中的attrs.xml中添加 <declare-styleable name="circle"> <attr name="circleWidth"
2016-09-10 12:38:08
438
原创 android水波纹样式的小球View
BallView展示一个水波纹样式的小球,其实和早期的360监控流量的小球差不多啦,改了一种样式引入到你的项目copy BallView.java 和 mipmap-xxhdpi里面的图片到项目中即可用法1.在xml中调用 <com.app.ballviewdemo.BallView android:id="@+id/ballview" android:layo
2016-09-10 12:36:21
909
原创 新项目引入基础框架module流程
新项目引入基础框架module新建一个项目导入module 给module改名字应用module添加依赖此时项目中已经添加进了base的module 给主module添加依赖 其他在项目build.grade中添加注解框架需要的apt插件 dependencies { classpath 'com.android.tools.build:gradle:2.0.0'
2016-09-02 18:11:07
1059
原创 项目现有框架总结
项目现有框架总结框架心得现有项目所用到的一系列框架都是经过各个项目时期不断调试走过来的,也踩了不少坑。不过对于现有框架的优劣之前并没有进行过详细的对比,只有适配框架深入研究并对比过。所以后面针对每一个框架需要做的:1. 是把现有框架的用法进行总结固化2. 对同类框架进行了解对比同类框架的优劣3. 对现有框架源码进行深入分析下一步虽然在项目中对现有的Activity和Fragment以及网络框架
2016-09-02 18:09:50
739
原创 android 适配性完全攻略
android 适配性完全攻略概要-一路走过来的过程 从2015年10月之前呢,都是走的dp单位+多组value文件的套路来适配的,这种老套路就不多说了,优点是稳定性强,只要是value文件涉及到的分辨率适配性都没的说,缺点也一目了然,那就是由于android机型的多样式,光要考虑到分辨率是不够的还要考虑密度,因为市场上总会存在一些奇葩机型,例如:分辨率是1920x1280,而密度不是该分辨率正常
2016-07-26 16:02:53
2104
1
原创 FragmentTabHost简单保存状态的方法
最近做新项目用Fragment做标签页切换,由于不需要滑动,所以就想到了FragmentTabHost,但是发现了它的一个问题,就是每次切换tab的时候声明周期都会重新加载页面,如何避免这种情况呢~
2016-04-11 17:50:45
1892
原创 androidtv-Leanback开源项目解析
项目展示 类图(待添加)项目流程主界面 项目入口是MainActivity,我们发现MainActivity非常简单。public class MainActivity extends Activity { /** * Called when the activity is first created. */ @Override public voi
2016-03-09 18:02:33
10719
原创 VelocityTracker
1. VelocityTracker速度追踪,用于追踪手指在滑动过程中的速度,包括水平和竖直方向的速度。代码示例: @Override public boolean onTouchEvent(MotionEvent event) { //初始化 VelocityTracker velocityTracker = VelocityTr
2016-03-07 10:36:39
856
Android毕业设计-连连看游戏
2013-09-27
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人