iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >React Native 修改Android工程目录
  • 850
分享到

React Native 修改Android工程目录

2023-06-05 02:06:06 850人浏览 薄情痞子
摘要

标准的React-Native Android项目,用Android Studio或者IntelliJ idea打开,需要打开React-Native下的android目录,而作为一名android开发者,当然希望是打开React-Nati

标准的React-Native Android项目,用Android Studio或者IntelliJ idea打开,需要打开React-Native下的android目录,而作为一名android开发者,当然希望是打开React-Native项目就是Android的项目了。为此,我们需要修改整个React-Native项目(这里可以把一个Android项目改成React-Native项目或者把React-Native改为Android,我这里用的是第一种方式)。

修改完目录后,react-native run-android将失效,run-iOS没有影响。在Android Studio或IntelliJ Idea中可以直接点击运行按钮,将程序在手机中运行,然后在终端中启动node服务:react-native start。这样修改过的工程就可以正常运行了。

React Native 修改Android工程目录

作为一名开发者,当然是使用原始的命令(react-native run-android)最好了,而且上述的方法也不是最好的方法。是否可以通过修改配置文件使得直接使用react-native run-android 就能正常启动呢?下面我们就来分析下react-nativerun android的启动流程。

React Native 修改Android工程目录

react-native run-android 命令启动后你能看到:

当前窗口编译打包了一个 Android apk 并且把它安装、运行在了虚拟机环境里

新开一个命令行窗口起了一个 Http 服务在监听 8081 端口。

前者好理解,后者是为什么呢?

 index.android.js 是应用的JS 入口文件。为方便调试,RN 将编译打包一个 debug 版本的 APK 把它安装到虚拟机环境,App 内是靠发送 HTTP 请求到开发机上获取这个JS文件来进行 UI 渲染的:

react-native run-android

那么这两步在 RN 内是如何实现的呢?

react-native 命令执行的是上文安装的react-native-cli,但这个包没有做实际的事情,真正执行的代码是在 react-native 这个库的 local-cli 文件夹里。

就拿 react-native run-android 来说,它实际执行的代码是react-native/private-cli/src/runAndroid/runAndroid.js执行后,命令行窗口的输出如下:

React Native 修改Android工程目录

在修改后的工程中执行 react-native run-android 会发生错误,提示找不到android目录,因为我们修改了工程的路径。根据上面的分析我们知道,主要执行打包、安装、运行的代码都发生在runAndroid.js文件中,是不是可以修改runAndroid.js文件从而实现正常的运行呢。我们下面来试下:

React Native 修改Android工程目录

首先分析代码:

module.exports= {

  name: 'run-android',

  description: 'builds your app and starts it on a connectedAndroid emulator or device',

  func: runAndroid,

  options: [{

   command:'--install-debug',

}, {

   command: '--root[string]',

   description:'Override the root directory for the android build (which contains the androiddirectory)',

   default: '',

}, {

   command: '--flavor[string]',

   description:'--flavor has been deprecated. Use --variant instead',

}, {

   command: '--variant[string]',

}, {

   command: '--appFolder[string]',

   description: 'Specifya different application folder name for the android source.',

   default: 'android',

}, {

   command:'--appIdSuffix [string]',

   description: 'Specifyan applicationIdSuffix to launch after build.',

   default: '',

}, {

   command:'--main-activity [string]',

   description: 'Name ofthe activity to start',

   default:'MainActivity',

}, {

   command: '--deviceId[string]',

   description: 'buildsyour app and starts it on a specific device/simulator with the ' +

   'given device id(listed by running "adb devices" on the command line).',

}, {

   command:'--no-packager',

   description: 'Do notlaunch packager while building',

}],

};

通过分析配置,我们发现我们的Android目录为"./",所以这里添加一项:

 {

   command:'--androidRoot [string]',

   description: 'androidroot dir',

   default: './'

  }

android工程的运行,分为编译、打包、安装:

React Native 修改Android工程目录

首先来看build编译项目:

function buildAndRun(args) {

  process.chdir(path.join(args.root, 'android'));

  const cmd = process.platfORM.startsWith('win')

   ? 'gradlew.bat'

   : './gradlew';

    console.log(chalk.red('Argument missing for parameter--deviceId'));

   }

  } else {

   console.log('start');

   runOnAllDevices(args,cmd, packageNameWithSuffix, packageName, adbPath);

  }

}

因为改了目录所以,这里也要做修改,改为:

process.chdir(path.join(args.root, 'android')); ---> process.chdir(path.join(args.androidRoot, './'));

#运行android程序

function runAndroid(argv, config, args) {

  if (!checkAndroid(args.root)) {

  console.log(chalk.red('Android project not found. Maybe run react-nativeandroid first?'));

   return;

  }

  if (!args.packager) {

  console.log('buildAndRun');

   returnbuildAndRun(args);

  }

这里需要的是Android的工程路径,所有需要做修改,改为:

if (!checkAndroid(args.root)) {    ---->  if(!checkAndroid(args.androidRoot)) {

#查找gradlew文件,因为我们修改了Android目录,所有这里需要修改下:

function checkAndroid(root) {

  return fs.existsSync(path.join(root, 'android/gradlew'));

}

改为如下:

function checkAndroid(androidRoot) {

  return fs.existsSync(path.join(androidRoot, '/gradlew'));

}

通过以上修改,我们这里的工作基本都做完了。但是runAndroid.js存在于node_moduls文件中,每次执行npm install都会拉去react-native仓库的代码,所以我们每次install完还要再修改runAndroid.js文件,这好不人性。

这里我们fork facebook仓库,然后直接修改runAndroid.js文件,然后将我们的react-native仓库改为我们fork的仓库即可。

React Native 修改Android工程目录

但是当我们用于不同的flavor的时候,就不行了:比如我们要打包xxxDebug的后缀是xxx的包时,就失效,并不能按照我们的需求来执行。如何做呢?

我们可以在package.JSON中添加script,如下:

"android": "react-native run-android--androidRoot ./ --appFolder android --variant xxxDebug --appIdSuffix xxx--main-activity SplashActivity"

运行时,只需执行:npm run android。

当然也可以使用vscode 来运行,在vscode中,修改launch.json:

"runArguments": [

  "--androidRoot",

   "./",

  "--appFolder",

   "android",

  "--variant",

   "xxxDebug",

  "--appIdSuffix",

   "xxx",

  "--main-activity",

  "SplashActivity"

]

加入如上参数,然后点击debug Android 按钮也可以直接跑起来android项目。

React Native 修改Android工程目录

使用vscode还有一个好处,就是可以在编译器中debug代码,而不像IntelliJ Idea那样需要打开chrome,非常方便。

--结束END--

本文标题: React Native 修改Android工程目录

本文链接: https://www.lsjlt.com/news/240813.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • React Native 修改Android工程目录
    标准的React-Native Android项目,用Android Studio或者IntelliJ Idea打开,需要打开React-Native下的android目录,而作为一名android开发者,当然希望是打开React-Nati...
    99+
    2023-06-05
  • react native如何修改端口
    这篇文章主要介绍react native如何修改端口,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!react native修改端口的方法:1、通过npm start命令启动React...
    99+
    2024-04-02
  • react native怎么修改端口号
    本教程操作环境:Windows10系统、react-native0.68.0版、Dell G3电脑。react native怎么修改端口号?react native 端口号被占用,修改启动端口号前言本文基于 “react-native”: ...
    99+
    2023-05-14
    端口号 React Native
  • 在Android Studio 中运行React Native 项目
    项目根目录执行命令安装开发依赖 yarn 检查项目SDK、NDK、JDK否配置正确 点击 Android Studio 里点击大象 全部下载完毕,点击运行按钮,编译项目 连接真机的两种方式 无线...
    99+
    2023-10-03
    android studio react native android
  • react native如何修改端口号
    这篇文章主要介绍“react native如何修改端口号”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“react native如何修改端口号”文章能帮助大家解决问题。react native修改端口...
    99+
    2023-07-04
  • Android原生项目集成React Native的示例分析
    小编给大家分享一下Android原生项目集成React Native的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!开发环境准备首先按照开发环境搭建教程来安装React Native在安卓平台上所需的一切依赖软件(...
    99+
    2023-05-30
    android react native
  • 如何解决React Native端口号修改的问题
    这篇文章主要为大家展示了“如何解决React Native端口号修改的问题”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何解决React Native端口号修...
    99+
    2024-04-02
  • React Native工程中TSLint静态检查工具怎么用
    这期内容当中小编将会给大家带来有关React Native工程中TSLint静态检查工具怎么用,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。TSLint为TypeScript提供了代码检查能力,对使用Ty...
    99+
    2023-06-04
  • linux中jenkins怎么修改工作空间根目录
    要修改Jenkins工作空间的根目录,可以按照以下步骤操作: 登录到Jenkins服务器上的控制台。 点击左侧导航栏中的“系统管理...
    99+
    2024-04-09
    linux jenkins
  • pycharm怎么修改目录
    修改 pycharm 中的目录方法:打开项目并右键单击目录,选择“重命名”;按 ctrl+f6 (windows/linux) 或 cmd+f6 (macos),在重命名对话框中输入新名...
    99+
    2024-04-25
    linux macos pycharm
  • Android Studio修改项目包名
    第一步,项目结构是这样的,3个包名合在了一起,我们需要把每个包名单独展示出来 2.我们点击这个 弹出如下图内容,把红色圆圈的地方点击选择取消选中 取消选中后的包名结构是这样的,可以看到,包名的每个文件夹已经展示分开了,现在我们可以单独...
    99+
    2023-08-16
    android studio android ide
  • linux如何修改目录名
    这篇文章主要讲解了“linux如何修改目录名”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“linux如何修改目录名”吧!在linux中,可以使用“mv”命令来修改目录名,该命令既可以在不同的...
    99+
    2023-06-22
  • 修改AndroidStudio工程名
    修改AndroidStudio工程名只需要三步! 第一步 把工程文件夹根目录进行重命名。 例如,想把工程名"project"改名为"project1",则先找到工程文件夹project,修改文件夹名为...
    99+
    2023-09-30
    android
  • linux如何修改挂载目录
    要修改Linux系统中的挂载目录,可以按照以下步骤进行操作:1. 使用df -h命令查看当前系统中已经挂载的文件系统及其对应的挂载点...
    99+
    2023-10-20
    linux
  • php如何修改目录权限
    小编给大家分享一下php如何修改目录权限,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!在php中,可以使用chmod()函数来修改目录权限,该函数可以改变指定文件...
    99+
    2023-06-14
  • tomcat默认目录如何修改
    要修改Tomcat的默认目录,您需要进行以下步骤: 打开Tomcat的配置文件 `conf/server.xml`。 在 `` 元...
    99+
    2023-10-28
    tomcat
  • linux如何修改目录权限
    本文小编为大家详细介绍“linux如何修改目录权限”,内容详细,步骤清晰,细节处理妥当,希望这篇“linux如何修改目录权限”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。在linux中,可以利用chmod命令修改...
    99+
    2023-06-29
  • Linux怎么修改Apache根目录
    本篇内容主要讲解“Linux怎么修改Apache根目录”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Linux怎么修改Apache根目录”吧!工具/原料Apache方法/步骤1:创建自己需要更改...
    99+
    2023-06-27
  • 利用IDEA工具修改Maven多模块项目标识包名全过程记录
    目录一、背景二、具备的能力2.1 IDEA2.2 Maven多模块项目三、步骤3.1 移动包3.2 选择重构的条件3.3 清扫战场3.4 小心毒刺3.4.1 redis序列化问题3....
    99+
    2024-04-02
  • ubuntu如何修改主目录名称
    要修改Ubuntu的主目录名称,需要执行以下步骤:1. 首先,确保你在Ubuntu中以管理员权限登录。2. 使用Ctrl + Alt...
    99+
    2023-08-25
    ubuntu
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作