热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

ReactNativeAndroid源码分析之前期准备

前言ReactNative是目前最流行的跨平台框架,并且是Facebook团队开源的项目。架构及实现技术上都有很高的研究价值,本系列就来分析一下Reac

前言

React Native 是目前最流行的跨平台框架,并且是 Facebook 团队开源的项目。架构及实现技术上都有很高的研究价值,本系列就来分析一下 React Native 的一些核心代码。

此系列文章针对的是有过 React Native 开发经验的小伙伴,没有 React Native 开发基础的小伙伴,可以先根据官方文档进行学习后,再来阅读此系列文章

环境

以下是笔者研究 React Native 源码时的环境

  • OS: MacOS 10.13.5
  • Node: v10.5.0
  • Yarn: 1.7.0
  • npm: 6.1.0
  • Android Studio: Version 3.1.3
  • NDK: android-ndk-r10e
  • React Native: 0.56-stable 分支

具体的环境可以因人而异,但是请保证 Node 的版本需在 8 及以上, NDK 的版本一定要保证是 r10e, 具体的描述可参考官方文档

源码目录分析

本系列将基于最新的 0.56-stable 进行分析,以下是源码核心目录示意列表

. // react native 根目录
+-- Libraries // JS 层的实现,包括 JS 队列的封装及 UI 组件的封装
+-- local-cli // react native cli 的 JS 实现
+-- React // React Native iOS 层实现
+-- ReactAndroid // Android 层实现,本系列主要分析的地方
| +-- src
| +-- main
| +-- java // Java 层实现
| +-- jni // JNI 层的实现
+-- ReactCommon // React Native 核心代码实现目录,为了跨平台均使用 c++ 编写
+-- ReactTester // Demo 入口
+-- README.md

源码编译

将源码下载到本地之后,可以使用 Android Studio 直接打开 react native 的根目录,RNTester 目录下的 Android 实例项目可以作为我们分析源码的 Demo 程序。

在保证 Node 版本等于 8 及以上之后,可以直接在 react native 源码的根目录下运行

$ npm install && npm run start

将会下载相关依赖并且开启 react native 的本地服务来,此时 Android Studio 运行项目将会安装 RNTester App 安装到模拟器或真机上。

注意,如果是使用真机运行,需要 adb reverse tcp:8081 tcp:8081 来讲端口进行绑定

以上就是前期需要进行的准备,下面一起来分析一下 React Native 在 Android 上的启动过程



推荐阅读
  • 本文探讨了Flutter和Angular这两个流行框架的主要区别,包括它们的设计理念、适用场景及技术实现。 ... [详细]
  • 实践指南:使用Express、Create React App与MongoDB搭建React开发环境
    本文详细介绍了如何利用Express、Create React App和MongoDB构建一个高效的React应用开发环境,旨在为开发者提供一套完整的解决方案,包括环境搭建、数据模拟及前后端交互。 ... [详细]
  • V8不仅是一款著名的八缸发动机,广泛应用于道奇Charger、宾利Continental GT和BossHoss摩托车中。自2008年以来,作为Chromium项目的一部分,V8 JavaScript引擎在性能优化和技术创新方面取得了显著进展。该引擎通过先进的编译技术和高效的垃圾回收机制,显著提升了JavaScript的执行效率,为现代Web应用提供了强大的支持。持续的优化和创新使得V8在处理复杂计算和大规模数据时表现更加出色,成为众多开发者和企业的首选。 ... [详细]
  • Java面向对象编程深入解析
    本文详细探讨了Java中的关键字static、单例模式、main()方法、代码块、final关键字、抽象类与方法、模板方法设计模式、接口、内部类等内容,旨在帮助读者深入理解和掌握Java面向对象编程的核心概念。 ... [详细]
  • Deno 全栈 Web 框架 Fresh 1.1 正式上线
    Deno 生态下的全栈 Web 框架 Fresh 推出 1.1 版本,带来多项性能与易用性的提升。 ... [详细]
  • 这是一个基于 React 构建的掘金移动版应用,主要模仿了掘金的 UI 设计,并进行了部分自定义调整。项目专注于移动端体验,同时支持服务端渲染和渐进式网络应用(PWA)功能。 ... [详细]
  • Java基础概念与核心特性解析
    本文深入探讨了Java编程语言的基本特点,包括其简洁性、面向对象设计、跨平台能力以及多线程支持等关键特性。此外,文章还详细分析了JVM、JDK和JRE之间的区别,并讨论了字节码的概念及其优势。 ... [详细]
  • Redux的核心概念,实现代码与应用示例
    Redux是一种JavaScript的状态管理容器,是一个独立的状态管理库,可配合其它框架使用,比如React。引入Redux主要为了使JavaScript中数据管理的方便,易追踪 ... [详细]
  • 匠心|传统_2021年度总结 | 葡萄城软件开发技术回顾(上)
    匠心|传统_2021年度总结 | 葡萄城软件开发技术回顾(上) ... [详细]
  • Node.js模块化的优势及实践
    本文探讨Node.js模块化的重要性和具体实现方式,包括其带来的代码复用性增强、可维护性提升、以及如何有效避免命名冲突等问题。 ... [详细]
  • 流处理中的计数挑战与解决方案
    本文探讨了在流处理中进行计数的各种技术和挑战,并基于作者在2016年圣何塞举行的Hadoop World大会上的演讲进行了深入分析。文章不仅介绍了传统批处理和Lambda架构的局限性,还详细探讨了流处理架构的优势及其在现代大数据应用中的重要作用。 ... [详细]
  • VS Code 中 .vscode 文件夹配置详解
    本文介绍了 VS Code 中 .vscode 文件夹下的配置文件及其作用,包括常用的预定义变量和三个关键配置文件:launch.json、tasks.json 和 c_cpp_properties.json。 ... [详细]
  • Hadoop MapReduce 实战案例:手机流量使用统计分析
    本文通过一个具体的Hadoop MapReduce案例,详细介绍了如何利用MapReduce框架来统计和分析手机用户的流量使用情况,包括上行和下行流量的计算以及总流量的汇总。 ... [详细]
  • 【小白学习C++ 教程】二十三、如何安装和使用 C++ 标准库
    【小白学习C++ 教程】二十三、如何安装和使用 C++ 标准库 ... [详细]
  • 本文探讨了在 macOS Retina 显示屏上使用 OpenJDK 11 开发代码编辑器时遇到的等宽字体渲染问题,并提供了详细的分析和可能的解决方案。 ... [详细]
author-avatar
手机用户2502922713
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有