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,
mBridgeId