如何创建具有相同功能的多个React Native应用程序

gupuwyp2  于 2023-06-24  发布在  React
关注(0)|答案(3)|浏览(99)

我正在使用React Native开发一个移动的应用程序。这是一个家长应用程序,家长可以查看分数,作业,费用详情等。我们与多所学校合作,每所学校都需要自己的应用程序。到目前为止,这些应用程序之间的唯一变化是启动屏幕和应用程序图标。
我可以做些什么来保持我的代码库更有组织,每个应用程序之间的冗余更少,以便易于维护,并且也适用于新版本?

2vuwiymt

2vuwiymt1#

我以前做过类似的任务。我从一个react本地代码库中移植了4个风格独特的应用程序。你可以在这里阅读一些相关的内容。
基本上,你只需要在构建iosandroid之前重命名你的应用程序。
如果你需要应用不同的风格,在这里解释是一个困难得多的任务。然而,为了给予一个提示,你需要让你的应用程序样式像主题一样可重用。在我的例子中,我使用了nativebase主题化。在重命名项目之前,我正在使用bash脚本更改每个应用程序使用的主题文件夹。这个gist可能会给予你一个想法。

yjghlzjz

yjghlzjz2#

对于那些寻找答案的人
用同一个代码库构建不同应用程序的正确方法是使用android变体https://developer.android.com/studio/build/build-variants。这将允许您为每个变体使用不同的密钥来签名您的应用。这些变体中的每一个都需要在android目录中有一个合适的文件夹,这是你配置闪屏、资产等的地方。
如果你使用的是expo,这是不可能的,因为你不应该弄乱本地代码。Expo仅支持您的应用的发布渠道(开发,阶段,生产)版本。
注意:我不需要使用ios,所以我自己也不能提供任何有用的链接。但我相信会有类似的东西。

yvgpqqbh

yvgpqqbh3#

我通过使用一个js脚本来解决这个问题,它将一个项目的文件夹移动到一个基本代码中,下面是一个例子:

// Import necessary modules
const fs = require('fs-extra');

// Determine the app environment based on the script name
const scriptName = process.argv[2];
let assetFolder;

if (scriptName === 'project1') {
  assetFolder = './project1/assets';
} else if (scriptName === 'project2') {
  assetFolder = './project2/assets';
} else {
  console.error(
    'Invalid script name. Please provide "project1" or "project2" as argument.',
  );
  process.exit(1);
}

// Use the determined folders for the build
console.log('Script Name:', scriptName);
console.log('assetFolder:', assetFolder);
fs.copySync(assetFolder, './src/assets');

并使用节点'theNemeOfYourScript'.js project 1运行它。
将一个脚本放到根目录中,并使目录结构如下所示:

project1
  -assets
    -someFile
project2
  -assets
    -someFile
src
  -assets
    -`You can put a dummy file for initial`

使用imorts,就像你通常使用它们作为import * from 'src/assets/someFile'一样。

相关问题