爽爆天ReactNative基础篇 - 2.3 搭建Android工程
开始本章之前,仍然不厌其烦地啰嗦几句,本章节基于苹果的mac OS X 系统,本系列教程的所有文章也都是基于此系统的,本人强烈建议使用mac进行开发。
本章概述(react-native下文有时会简称 rn):
- 【环境】我们一开始会先检查下需要安装与配置的环境是否OK。
- 【构建项目】然后我们会构建一个Android项目,如果已有项目我们会调整下结构。
- 【安装Android依赖库】为了建立Android与react-native的连接,我们要在Android项目中安装rn相关的依赖库。
- 【给Android添加rn相关代码】给Android项目添加 rn 代码,增加rn支持。
- 【给rn项目添加rn代码】给rn项目添加rn代码
- 【运行看效果】运行本地服务看Android应用最终效果。
1 本章示例代码
1 | https://github.com/luochenxun/react-native-happy-learn.git 分支名: chapter2.3 |
你可以这样拉下来:找个目录,然后敲
1 | git clone -b chapter2.3 https://github.com/luochenxun/react-native-happy-learn.git rnProject |
2 基础环境
2.1 安装 AndroidStudio 、gradle 等
2.2 建立现有Android项目(如果你已有Android项目,此步聚可以跳过)
在硬盘上找个地方放置我们的工程,比如 rnDemo。
然后在里面分别创建 iOS, Android, rn 三个目录,就像这样:
1 | rnDemo // 项目根目录 |
然后我们在 Android 目录内新建一个Android项目(直接新建到Android根目录中)。
2.3 安装 react-native
使用命令行进入 rn 目录,运行 npm init
根据系统问的关于项目的问题回答之,便建立好了一个nodeJS项目,可以看到目录里多了一个package.json文件。
然后执行
1 | npm install -s react |
关于nodeJS的内容,可以参考后面关于NodeJS的介绍。这里你只要知道一个react-native工程,其实就是一个NodeJS工程。NodeJS是JavaScript的运行时环境,提供JS的本地编译运行与打包等功能。而npm提供了NodeJS的依赖库管理,这就体现在package.json文件中,这个json文件记录了本NodeJS项目的信息,依赖库信息等。
我们看看最后生成的两个文件 package.json & node_modules
- node_modules
node_modules是 NodeJS放依赖库的地方,我们下下来的 react-native库及他所依赖的库都放在 node_modules里面。每个库就是一个module,放在一个独立的文件夹里面。
- package.json
这个上面介绍过了。 我们修改下pakcage.json让他变成这样(正式使用时,注释要去掉):
1 | { |
其实有了这个package.json文件后,我们他日要升级 react-native 或是要添加其它库时,只要添加或修改到 dependencies内,然后把node_modules删之,最后在根目录直接运行 npm install
就行,npm会根据package.json中的依赖库信息,安装项目所有需要的依赖库。
3 安装Android依赖库
- app’s build.gradle
在 app module 的 build.gradle
中添加
1 | 文件头添加:apply from: "../../rn/node_modules/react-native/react.gradle" |
这样做主要目的是给app添加 react-native库支持。
- project’s build.gradle
但是因为这些库要从我们刚装的rn目录取之,所以还要在 project的 build.gradle
中修改 allprojects块为:
1 | allprojects { |
Sync之后,可以发现依赖库中多了一些库,特别留意下react-native依赖库。
4 给Android添加rn相关代码
4.1 添加权限与注册 Manifest
在 manifest中添加rn所需权限:
1 | <uses-permission android:name="android.permission.INTERNET" /> |
增加一个设置的rn Activity:
1 | <activity android:name="com.facebook.react.devsupport.DevSettingsActivity" /> |
4.2 修改 MainActivity
让MainActivity继承于ReactActivity。注意,getMainComponentName() 方法返回的是对应的 rn 模块的名字, 必须与我们后面定义的rn模块名一致!
1 | public class MainActivity extends ReactActivity { |
我们可以看到,代码部分非常简单,就是继承一个 ReactActivity 并指定rn模块则可。React-Native库会自动帮我们把相应的rn模块装载进Activity之中。
5 启动rn
在终端进入rn目录,输入 npm start
开启本地服务
然后AS项目跑起来,就可以看到效果了。
如果你是在手机设备上运行,如果看不到效果,试下这个命令
1 | adb reverse tcp:8081 tcp:8081 |
6 本章示例代码
1 | https://github.com/luochenxun/react-native-happy-learn.git 分支名: chapter2.3 |
你可以这样拉下来:找个目录,然后敲
1 | git clone -b chapter2.3 https://github.com/luochenxun/react-native-happy-learn.git rnProject |