1. Node 环境
node 环境搭建较为简单, 只需要官网下载直接安装就行 Node
多版本 node 管理
有些项目需要低版本 node 才能启动, 可以在所有下载中查看需要的版本 node版本集合
如果有多个项目需要多个版本 node 运行,频繁卸载安装肯定很麻烦,我们可以使用 nvm 进行 node 版本管理
下载后解压或者直接下载 .exe 安装文件直接安装就行
nvm 使用
打开命令行执行(切换版本的时候需要使用管理员权限) nvm version 如果正确显示版本号,说明安装成功了
nvm install x.x.x # 安装具体版本
nvm list # 查看 node 版本与当前版本
nvm use x.x.x # 使用当前版本
nvm uninstall x.x.x # 卸载 node
例如需要下载 node: 14.18.0 版本
nvm install 14.18.0
nvm use 14.18.0
备注: 如果需要下载 32 位程序可以在版本号后面加上 32, 默认的是 64 位
C:\Windows\system32>nvm install 14.18.1 32
C:\Windows\system32>nvm use 14.18.1 32
Now using node v14.18.1 (32-bit)
手动下载
这里经常会出现 node 下载了却没有下载 npm, 那这个时候我们需要手动去官方网站进行下载
选择对应的版本进行下载:
然后找到 nvm 的安装目录, 将下载解压后的文件替换 nvm 里面对应版本的文件
nvm 安装目录
如果不知道 nvm 安装目录可以去对应的环境变量查看
yarn
Yarn 是 Facebook 提供的替代 npm 的工具,可以加速 node 模块的下载。
npm install -g yarn
如果切换了 node 的版本需要重新下载 yarn
cnpm
官方网址:npm.taobao.org
一个完整 npmjs.org 镜像,你可以用此代替官方版本(只读),同步频率目前为 10分钟 一次以保证尽量与官方服务同步。
cnpm跟npm用法完全一致,只是在执行命令时将npm改为cnpm。
npm install -g cnpm --registry=https://registry.npm.taobao.org
Node 问题总结
node 安装依赖经常会出现奇奇怪怪的问题,但是归根结底就是三个问题:
- 网络问题 可以通过 yarn 安装或者淘宝镜像安装,或者网络代理
- 版本问题 通过 nvm 切换对应正确的版本
- 其他问题 O(∩_∩)O哈哈~
2. Java Sdk
选择对应版本进行下载
Java Home
下载安装后需要进行环境变量配置, 如果多个版本需要配置多个
系统变量配置
JAVA_HOME: %JAVA_HOME8%
JAVA_HOME11: D:\sdk\java\JDK11\jdk-11.0.7
JAVA_HOME8: D:\sdk\java\JDK8\jdk1.8.0_251
我这里配置了 java8 和 java11 , 当前配置是 java8
Path 路径配置
%JAVA_HOME%\bin
%JAVA_HOME%\jre\bin
检查版本
java -version
正确显示版本号说明安装配置成功了
3. Android Studio
安装的时候注意选择 SDK 的地址, 尽量不要选择C盘(别问我为什么知道,当你C盘99%的时候就也知道了)
安装完成后也可以在 Settings 界面进行 SDK路径 修改
SDK Platforms
在 SDK Manager 中选择"SDK Platforms"选项卡,勾选 Android 12(S)
如果你想采用官方的模拟器还需要在右下角勾选"Show Package Details", 然后勾选 Intel x86 Atom_64 System Image (需要科学上网)
SDK Tools
然后点击"SDK Tools"选项卡,同样勾中右下角的"Show Package Details"。展开"Android SDK Build-Tools"选项,确保选中了 React Native 所必须的 31.0.0 版本。你可以同时安装多个其他版本。
Android Home
React Native 需要通过环境变量来了解你的 Android SDK 装在什么路径,从而正常进行编译。
打开控制面板 -> 系统和安全 -> 系统 -> 高级系统设置 -> 高级 -> 环境变量 -> 新建,创建一个名为ANDROID_HOME的环境变量(系统或用户变量均可),指向你的 Android SDK 所在的目录(具体的路径可能和下图不一致,请自行确认):
系统变量配置
安卓 SDK 安卓路径, 可以在android studio 里面进行路径查看
ANDROID_HOME: D:\sdk\Android\SDK
Path 路径配置
%ANDROID_HOME%\platform-tools
%ANDROID_HOME%\emulator
%ANDROID_HOME%\tools
%ANDROID_HOME%\tools\bin
自定义配置
也可以在项目 android 目录下创建 local.properties 文件进行配置
sdk.dir=D:\sdk\Android\SDK
校验 Android Sdk
检验是否配置成功可以通过输入命令:
adb --version
4. 模拟器
这里选择网易的 mumu 模拟器(会有部分广告), 下载地址
也可以选择 夜游,雷电, 等其他模拟器
USB调试
下载完成后可以点开开发者选项进行开启USB调试
一般模拟器会自动帮我们进行开发者选项开启, 如果没有开启也可以在关于平板电脑里面快速点击版本号五次
设备连接
一般window电脑会自动连接模拟器, 如果没有那就需要手动连接
在上一步骤配置好了 Android Home , 那么可以使用
adb devices #查看连接设备
adb connect 127.0.0.1:7555 # 连接网易模拟器
每个模拟器的端口号是不相同的, 网易MUMU模拟器端口是: 7555
5.打包发布
Android 要求所有应用都有一个数字签名才会被允许安装在用户手机上,所以在把应用发布到应用市场之前,你需要先生成一个签名的 AAB 或 APK 包(Google Play 现在要求 AAB 格式,而国内的应用市场目前仅支持 APK 格式。但无论哪种格式,下面的签名步骤是一样的)。Android 开发者官网上的如何给你的应用签名文档描述了签名的细节。本指南旨在提供一个简化的签名和打包的操作步骤,不会涉及太多理论。
APK签名
签名是摘要与非对称密钥加密相相结合的产物,摘要就像内容的一个指纹信息,一旦内容被篡改,摘要就会改变,签名是摘要的加密结果,摘要改变,签名也会失效。Android APK签名也是这个道理,如果APK签名跟内容对应不起来,Android系统就认为APK内容被篡改了,从而拒绝安装,以保证系统的安全性。
RSA密码体制
RSA 密码体制是一种公钥密码体制,公钥公开,私钥保密,它的加密解密算法是公开的。由公钥加密的内容可以并且只能由私钥进行解密,而由私钥加密的内容可以并且只能由公钥进行解密。也就是说,RSA 的这一对公钥、私钥都可以用来加密和解密,并且一方加密的内容可以由并且只能由对方进行解密。
加密:公钥加密,私钥解密的过程,称为「加密」。 因为公钥是公开的,任何公钥持有者都可以将想要发送给私钥持有者的信息进行加密后发送,而这个信息只有私钥持有者才能解密。
签名:私钥加密,公钥解密的过程,称为「签名」。
签名和加密有什么区别呢?
因为公钥是公开的,所以任何持有公钥的人都能解密私钥加密过的密文,所以这个过程并不能保证消息的安全性,但是它却能保证消息来源的准确性和不可否认性,也就是说,如果使用公钥能正常解密某一个密文,那么就能证明这段密文一定是由私钥持有者发布的,而不是其他第三方发布的,并且私钥持有者不能否认他曾经发布过该消息。故此将该过程称为「签名」。
生成一个签名密钥
命令行方式
你可以用keytool命令生成一个私有密钥。在 Windows 上keytool命令放在 JDK 的 bin 目录中(比如C:\Program Files\Java\jdkx.x.x_x\bin),你可能需要在命令行中先进入那个目录才能执行此命令。
keytool -genkeypair -v -storetype PKCS12 -keystore my-release-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000
这条命令会要求你输入密钥库(keystore)和对应密钥的密码,然后设置一些发行相关的信息。最后它会生成一个叫做my-release-key.keystore的密钥库文件。
在运行上面这条语句之后,密钥库里应该已经生成了一个单独的密钥,有效期为 10000 天。--alias 参数后面的别名是你将来为应用签名时所需要用到的,所以记得记录这个别名。
注意:请记得妥善地保管好你的密钥库文件,一般不要上传到版本库或者其它的地方。
Android Studio
具体步骤如下所示:
-
在菜单栏中,依次点击 Build > Generate Signed Bundle/APK。(如果没有看到可以点击 File > Sync Project with Gradle Files)
-
在 Generate Signed Bundle or APK 对话框中,选择 Android App Bundle 或 APK,然后点击 Next。
-
在 Key store path 字段下,点击 Create new。
-
在 New Key Store 窗口中,为您的密钥库和密钥提供以下信息,如图所示。
-
密钥库
- Key store path:选择创建密钥库的位置。 此外,还应在位置路径末尾添加一个扩展名为 .jks 的文件名。
- Password:为您的密钥库创建并确认一个安全的密码。
-
密钥
- Alias:为您的密钥输入一个标识名。
- Password:为您的密钥创建并确认一个安全的密码。它应该与密钥库密码相同。(如需了解详情,请参阅已知问题)
- Validity (years):以年为单位设置密钥的有效时长。密钥的有效期应至少为 25 年,以便您可以在应用的整个生命期内使用同一密钥为应用更新签名。
- Certificate:为证书输入一些关于您本人的信息。此信息不会显示在应用中,但会作为 APK 的一部分包含在您的证书中。
-
填写完表单后,请点击OK。
-
如果只想生成密钥和密钥库,请点击 Cancel。
设置 gradle 变量
- 把
my-release-key.keystore文件放到你工程中的android/app文件夹下。 - 编辑
~/.gradle/gradle.properties(全局配置,对所有项目有效)或是项目目录/android/gradle.properties(项目配置,只对所在项目有效)。如果没有gradle.properties文件你就自己创建一个,添加如下的代码(注意把其中的****替换为相应密码)
注意:~符号表示用户目录,比如 windows 上可能是C:\Users\用户名,而 mac 上可能是/Users/用户名。
MYAPP_RELEASE_STORE_FILE=my-release-key.keystore
MYAPP_RELEASE_KEY_ALIAS=my-key-alias
MYAPP_RELEASE_STORE_PASSWORD=*****
MYAPP_RELEASE_KEY_PASSWORD=*****
上面的这些会作为 gradle 的变量,在后面的步骤中可以用来给应用签名。
把签名配置加入到项目的 gradle 配置中
编辑你项目目录下的android/app/build.gradle,添加如下的签名配置:
...
android {
...
defaultConfig { ... }
signingConfigs {
release {
if (project.hasProperty('MYAPP_RELEASE_STORE_FILE')) {
storeFile file(MYAPP_RELEASE_STORE_FILE)
storePassword MYAPP_RELEASE_STORE_PASSWORD
keyAlias MYAPP_RELEASE_KEY_ALIAS
keyPassword MYAPP_RELEASE_KEY_PASSWORD
}
}
}
buildTypes {
release {
...
signingConfig signingConfigs.release
}
}
}
...
生成发行 APK 包
只需在终端中运行以下命令:
$ cd android
$ ./gradlew assembleRelease
译注:cd android表示进入 android 目录(如果你已经在 android 目录中了那就不用输入了)。./gradlew assembleRelease在 macOS、Linux 或是 windows 的 PowerShell 环境中表示执行当前目录下的名为 gradlew 的脚本文件,且其运行参数为 assembleRelease,注意这个./不可省略;而在 windows 的传统 CMD 命令行下则需要去掉./。
React Native 依赖问题
React Native 在安装依赖的时候因为版本兼容问题, 经常性需要修改 node_modules 里面的内容, 这里推荐两种解决方案