React Native搭建开发环境/link原生依赖问题

栏目: IOS · Android · 发布时间: 5年前

内容简介:必须安装的依赖有:Node、Python2 以及 JDK 、React Native 命令行工具和 Android Studio。①. 创建一个名为ANDROID_HOME的环境变量(系统或用户变量均可),指向你的 Android SDK 所在的目录②. 把platform-tools目录添加到环境变量Path中 ③. 接下来配置JAVA_HOME(缺了这一步Android studio会显示找不到jdk安装目录,路径不包含bin文件)

必须安装的依赖有:Node、 Python 2 以及 JDK 、React Native 命令行 工具 和 Android Studio。

1.官网下载安装Node(Node 的版本必须高于 8.3)

2.官网下载安装Python2(版本必须为 2.x)

3.官网下载安装JDK(版本必须是 1.8)

jdk配置(右键偶的电脑—属性—高级系统设置—环境变量):

①. 创建一个名为ANDROID_HOME的环境变量(系统或用户变量均可),指向你的 Android SDK 所在的目录

React Native搭建开发环境/link原生依赖问题

②. 把platform-tools目录添加到环境变量Path中 ③. 接下来配置JAVA_HOME(缺了这一步Android studio会显示找不到jdk安装目录,路径不包含bin文件)

新建变量:JAVA_HOME
    变量值:JDK安装目录
复制代码
React Native搭建开发环境/link原生依赖问题

④. 在系统变量里寻找 Path 变量,选择编辑,新建两个变量值 %JAVA_HOME%\bin,%JAVA_HOME%\jre\bin

React Native搭建开发环境/link原生依赖问题

⑤. 新建环境变量,命名为 CLASSPATH ,变量值填入 .;%Java_Home%\bin;%Java_Home%\lib\dt.jar;%Java_Home%\lib\tools.jar

⑥. 记得配置(官网无记录): JRE_HOME C:\Program Files\Java\jre7 (根据jdk安装位置更改路径)

jdk安装且环境配置完成,可在cmd中检查是否安装成功,命令: java -version

4. React Native命令行工具(react-native-cli)安装: npm install -g yarn react-native-cli

5. 安装Android Studio

二、 Android开发环境

1. 安装翻墙工具

React Native搭建开发环境/link原生依赖问题

2. 安装Android SDK

Android Studio默认会安装最新版本的Android SDK

①. 在 Android Studio 的欢迎界面中找到 SDK Manager(右下角选项)。点击 Configure ,然后就能看到 SDK Manager

②. 在 SDK Manager 中选择 SDK Platforms 选项卡,然后在右下角勾选 Show Package Details 。展开Android 9 (Pie)选项,确保勾选了下面这些组件(重申你必须使用稳定的翻墙工具,否则可能都看不到这个界面)

Android SDK Platform 28
Intel x86 Atom_64 System Image(官方模拟器镜像文件,使用非官方模拟器不需要安装此组件)

③. 然后点击 SDK Tools 选项卡,同样勾中右下角的 Show Package Details 。展开 Android SDK Build-Tools 选项,确保选中了 React Native 所必须的28.0.3版本。你可以同时安装多个其他版本。 最后点击"Apply"来下载和安装这些组件。

3. 配置ANDROID_HOME环境变量

打开控制面板 -> 系统和安全 -> 系统 -> 高级系统设置 -> 高级 -> 环境变量 -> 新建,创建一个名为 ANDROID_HOME 的环境变量(系统或用户变量均可),指向你的 Android SDK 所在的目录(SDK 默认是安装目录: c:\Users\你的用户名\AppData\Local\Android\Sdk

4. 把 platform-tools 目录添加到环境变量 Path 中

打开控制面板 -> 系统和安全 -> 系统 -> 高级系统设置 -> 高级 -> 环境变量,选中 Path 变量,然后点击编辑。点击新建然后把 platform-tools 目录路径添加进去(此目录的默认路径为: c:\Users\你的用户名\AppData\Local\Android\Sdk\platform-tools )。

注:添加目录路径要和之前path已有路径用分号分割

三、创建新项目

使用 React Native 命令行工具来创建一个名为"demo"的新项目: react-native init demo

创建指定RN版本项目: react-native init demo --verbose --version 0.44.0(版本号)

四、编译并运行React Native应用

进入项目 cd demo

运行项目 react-native run-android

link问题

引入navigation

npm install --save react-navigation
npm install --save react-native-gesture-handler
react-native link react-native-gesture-handler

相关配置文件

  1. android>settings.gradle
include ':react-native-gesture-handler'
project(':react-native-gesture-handler').projectDir = new File(rootProject.projectDir,
'../node_modules/react-native-gesture-handler/android')
复制代码
  1. android>app>build.gradle
dependencies {
    implementation project(':react-native-gesture-handler')
    implementation fileTree(dir: "libs", include: ["*.jar"])
    implementation "com.android.support:appcompat-v7:${rootProject.ext.supportLibVersion}"
    implementation "com.facebook.react:react-native:+"  // From node_modules
}

复制代码
  1. android>app>src>main>java>com>MainApplication.java
import com.swmansion.gesturehandler.react.RNGestureHandlerPackage;
复制代码
@Override
    protected List<ReactPackage> getPackages() {
      return Arrays.<ReactPackage>asList(
          new MainReactPackage(),
            new RNGestureHandlerPackage(),
      );
    }
复制代码
  1. android>app>src>main>java>com>MainActivity.java
import com.swmansion.gesturehandler.react.RNGestureHandlerEnabledRootView;
复制代码
@Override
    protected ReactActivityDelegate createReactActivityDelegate() {
        return new ReactActivityDelegate(this, getMainComponentName()) {
            @Override
            protected ReactRootView createRootView() {
                return new RNGestureHandlerEnabledRootView(MainActivity.this);
            }
        };
    }

复制代码

注意链接原生依赖(react-native link)时的坑

1. 链接原生库 react-native link 后,注意android>app>src>main>java>com> MainApplication.java文件里面,有没有重复,如下:

@Override
protected List<ReactPackage> getPackages() {
    return Arrays.<ReactPackage>asList(
        new MainReactPackage(),
        new RefreshReactPackage(),
        new RNGestureHandlerPackage()
    );
}
复制代码

你执行函数的命令因为重复执行link命令重复添加了,手动删除多余的即可;

还有settings.gradle也会出现多余的

2. android\settings.gradle文件中反斜杠更改:

错例:

project(':react-native-linear-gradient').projectDir = new File(rootProject.projectDir, '..\node_modules\react-native-linear-gradient\android')
复制代码

3. 错误提示效果:app:compileDebugJavaWithJavac

解决:用android studio打开项目进行编译后再重新运行项目即可;

  • 使用android studio打开android文件即可(而不是打开整个文件)
  • 如果还是报错:将项目android文件下的 ***.iml 文件删掉,重新导入编译即可

手动link配置

例:配置react-native-image-picker(一个集成相机和相册的功能的第三方库)示例:

react-native-image-picker使用

npm install react-native-image-picker@latest --save

android 平台配置

  1. 在android/settings.gradle文件中添加如下代码:
include ':react-native-image-picker'
project(':react-native-image-picker').projectDir = new File(settingsDir, '../node_modules/react-native-image-picker/android')

复制代码
  1. 在android/app/build.gradle文件的dependencies中添加如下代码:
compile project(':react-native-image-picker')
复制代码
  1. 在AndroidManifest.xml文件中添加权限:
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
复制代码
  1. 最后在MainApplication.Java文件中添加如下代码:
import com.imagepicker.ImagePickerPackage;
 new ImagePickerPackage()
复制代码

这样Android环境就配置好了。

iOS平台配置

  1. 打开Xcode打开项目,点击根目录,右键选择 Add Files to ‘XXX’,选中项目中的该路径下的文件即可:node_modules -> react-native-image-picker -> ios -> select RNImagePicker.xcodeproj
  2. 添加成功后使用link命令:react-native link react-native-image-picker 。
  3. 打开项目依次使用Build Phases -> Link Binary With Libraries将RNImagePicker.a添加到项目依赖。
  4. 对于iOS 10+设备,需要在info.plist中配置NSPhotoLibraryUsageDescription和NSCameraUsageDescription。

前端RN打包

在 Android Studio 中打包,即生成离线的 jsbundle 文件:

react-native bundle --platform android --dev false --entry-file index.android.js --bundle-output app/src/main/assets/index.android.bundle --assets-dest app/src/main/res/
复制代码

路径解析:

index.android.js :打包生成的文件

app/src/main/assets/index.android.bundle :打包生成文件所在目录

app/src/main/res/ :RN中用到的静态资源文件打包后生成文件所在目录


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Python机器学习

Python机器学习

[美] Michael Bowles / 沙嬴、李鹏 / 人民邮电出版社 / 2016-12 / 69.00元

在学习和研究机器学习的时候,面临令人眼花缭乱的算法,机器学习新手往往会不知 所措。本书从算法和Python 语言实现的角度,帮助读者认识机器学习。 书专注于两类核心的“算法族”,即惩罚线性回归和集成方法,并通过代码实例来 展示所讨论的算法的使用原则。全书共分为7 章,详细讨论了预测模型的两类核心算法、预测模型的构建、惩罚线性回归和集成方法的具体应用和实现。 本书主要针对想提......一起来看看 《Python机器学习》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试