银河麒麟系统安装React Native开发环境 麒麟OS跨平台开发

银河麒麟系统安装React Native开发环境 麒麟OS跨平台开发

系统教程

银河麒麟系统需适配Node.js 18.20.4、OpenJDK 17、独立Android SDK路径、KMRE模拟器及Gradle 8.4,禁用Jetifier并开放Metro端口。

如果您在银河麒麟操作系统上尝试搭建React Native跨平台开发环境,但遇到Node.js版本不兼容、Android SDK路径识别失败、Gradle构建卡顿或模拟器无法启动等问题,则可能是由于系统架构适配缺失、Java环境未正确绑定、Android工具链权限不足或国产化图形栈兼容性限制所致。以下是解决此问题的步骤:

一、安装适配架构的Node.js与Yarn

React Native对Node.js版本敏感,过高或过低均会导致CLI初始化失败;银河麒麟x86_64与aarch64架构需分别使用对应二进制包,直接apt安装的Node.js常为旧版且无npm权限控制机制。

1、执行命令卸载系统默认Node.js:sudo apt-get remove nodejs npm -y

2、根据架构下载官方二进制包:若uname -m返回x86_64,则运行:wget https://nodejs.org/dist/v18.20.4/node-v18.20.4-linux-x64.tar.xz;若返回aarch64,则运行:wget https://nodejs.org/dist/v18.20.4/node-v18.20.4-linux-arm64.tar.xz

3、解压并软链接至系统路径:sudo tar -xf node-*.tar.xz -C /opt && sudo ln -sf /opt/node-v*/bin/* /usr/local/bin/

4、安装Yarn并验证:curl -sS https://dl.yarnpkg.com/install.sh | bash && source ~/.bashrc && yarn --version

二、配置OpenJDK 17与Android SDK独立路径

React Native 0.73+强制要求JDK 17,而银河麒麟默认源仅提供JDK 11;Android SDK若置于用户主目录含空格或中文路径下,会导致Gradle同步失败;同时需规避系统自带adb冲突。

1、手动下载Adoptium Temurin JDK 17 ARM64/x64版本,解压至/opt/java/jdk-17.0.2(路径严禁含中文)

2、设置环境变量:echo 'export JAVA_HOME=/opt/java/jdk-17.0.2' >> ~/.bashrc && echo 'export PATH=$JAVA_HOME/bin:$PATH' >> ~/.bashrc && source ~/.bashrc

3、创建SDK专用目录:mkdir -p /opt/android/sdk,下载Command line tools only包,解压后将cmdline-tools/latest放入该目录

4、初始化SDK管理器:/opt/android/sdk/cmdline-tools/latest/bin/sdkmanager --list,接受许可证后安装:sdkmanager "platform-tools" "platforms;android-34" "build-tools;34.0.0" "ndk;25.1.8937393"

三、启用KMRE并部署Android虚拟设备

银河麒麟原生不支持x86_64 Android模拟器,但可通过KMRE(麒麟移动运行环境)加载ARM64 Android 12镜像,实现React Native调试闭环;需关闭Wayland会话以启用OpenGL ES加速。

1、确认KMRE已安装:dpkg -l | grep kmre,若未安装则从麒麟软件商店搜索“KMRE”安装

2、下载ARM64 Android 12系统镜像(文件名含arm64android12),保存至/var/lib/kmre/images/

Sonauto

一款免费的AI音乐生成工具,快速生成成熟歌曲

下载

3、编辑KMRE配置:sudo nano /etc/kmre/config.ini,将enable_gpu_acceleration=trueuse_host_network=true设为true

4、重启KMRE服务并启动镜像:sudo systemctl restart kmred && kmre-launcher --image android12-arm64

四、配置React Native CLI与Metro端口白名单

银河麒麟防火墙(ufw)默认拦截Metro服务器6000+端口,且systemd-journald日志截断机制会导致npx react-native run-android输出不可见;需显式释放端口并重定向日志流。

1、开放Metro默认端口:sudo ufw allow 8081 && sudo ufw allow 19000 && sudo ufw allow 19001

2、创建RN项目时禁用自动启动:npx react-native init MyApp --skip-install && cd MyApp && yarn install

3、修改android/app/build.gradlecompileSdkVersion为34,targetSdkVersion为34

4、启动Metro时强制绑定IPv4并禁用日志截断:npx react-native start --host 0.0.0.0 --port 8081 --reset-cache 2>&1 | tee metro.log

五、替换Gradle Wrapper与禁用Jetifier

银河麒麟ARM设备上默认Gradle Wrapper(7.5.1)存在aarch64 JIT编译缺陷,导致./gradlew bundleRelease无限挂起;同时Jetifier在国产化NDK环境下引发符号解析异常。

1、进入android/目录,编辑gradle/wrapper/gradle-wrapper.properties,将distributionUrl改为:https\://services.gradle.org/distributions/gradle-8.4-bin.zip

2、在android/app/build.gradleandroid { }块内添加:android.enableJetifier=falseandroid.useAndroidX=true

3、清除Gradle缓存:cd android && ./gradlew clean && cd ..

4、首次构建前预加载依赖:cd android && ./gradlew :app:dependencies --configuration releaseRuntimeClasspath | head -20

本文地址:https://www.sztg.com.cn/article/662030.html

如非特殊说明,本站内容均来自于网友自主分享,如有任何问题均请联系我们进行处理!

猜您喜欢