react-native源码分析系列一

本文详细剖析了react-native初始化的全过程,从构建ReactInstanceManager到ReactRootView启动应用,全面展示如何通过两行代码实现复杂的初始化逻辑,包括生成ReactContext、打通JS与native通信等关键步骤。

react-native源码目前我看到过的最好的分析文章是qq空间分析的这篇。

http://zhuanlan.zhihu.com/magilu/20259704

不得不说大厂推出的分析确实牛逼,逻辑清晰。

不过由于博主自己也读过源码,也做过一些分析,因此准备将这些分析整理一下放出来(这个系列会比较长。

react-native 官网https://github.com/facebook/react-native

这里不介绍怎么使用,有兴趣的可以参考我的个人项目https://github.com/xiaoshenke/React-Online-News

照例我们从demo开始分析,我看的demo是react-native/Examples/Movies工程。

以下rn代指react-native。


可以看到初始化代码只有两行。
先看第一行代码,初始化构建ReactInstanceManager。
ReactInstanceManager
mReactInstanceManager = ReactInstanceManager.builder()           //builder模式
.setApplication(getApplication())
.setBundleAssetName("MoviesApp.android.bundle")                        //bundleName貌似可以随便取
.setJSMainModuleName("Examples/Movies/MoviesApp.android")  //这里的名字必须是对应js文件入口的名字
.addPackage(new MainReactPackage())                                            //注意名字 这里就是主要的rn包//官网有说明怎么加自定义包
.setUseDeveloperSupport(true)                                                      //manifest中的DevSettingsActivity
.setInitialLifecycleState(LifecycleState.RESUMED)
.build();

public ReactInstanceManager build() {
  return new ReactInstanceManager(
     Assertions.assertNotNull(
         mApplication,
         "Application property has not been set with this builder"),
     mBundleAssetName,
     mJSMainModuleName,
     mPackages,
     mUseDeveloperSupport,
     mBridgeIdleDebugListen
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值