【问题标题】:Use single expo codebase for multiple apps为多个应用程序使用单个 expo 代码库
【发布时间】:2018-08-07 02:46:48
【问题描述】:

我得到了一个应用程序,我们为其他人贴上了白标签。 这意味着我们通过应用共享相同的功能,但每个应用中都有一些特定的设计元素(主要是颜色和图片)。

我正在寻找最简单和最好的方法来识别为我的 Expo React Native 代码库构建的应用程序。

我的计划是将所有内容存储在同一个 javascript 代码库中,然后通过应用程序名称加载正确的配置文件。

在这种情况下,我会在商店中获得一些应用程序:

  • BlueApp
  • RedApp
  • 绿色应用

他们都将加载相同的博览会app: exp.host/@comp/colours 而这个 expo 应用应该在 BlueApp 中将背景设置为蓝色,在 RedApp 中将背景设置为红色。

!我不想分离我的 expo 应用程序,我仍然想用 expo 构建我的应用程序。

【问题讨论】:

  • 你找到解决办法了吗?

标签: react-native expo


【解决方案1】:

可以通过expo start --config=some-app.json 使用不同的配置文件。我遇到的一个问题是在特定位置(例如 assets/images/icon.png)仍然需要一些资产。

我想出的解决方案是在每次启动项目时通过 bash 脚本切换项目。这样,您运行的开发也将发布,而无需担心 expo 可能支持或不支持的配置参数。

因此,在您的 package.json 中,您可以运行如下所示的命令:

./switch project1 && expo start

bash 脚本会将 src 目录中的所有资产(包括 app.json)同步到它们的预期路径。目录结构如下所示:

src
 - project1
     - app.json
     - assets
 - project2
     - app.json
     - assets

和脚本:

#!/bin/bash

if [ $1 == "swaggr" ] || [ $1 == "chatsera" ] 
then 
    echo "switching to $1"
    unlink app.json
    cp ./src/$1/app.json ./app.json
    rsync -rvz ./src/$1/assets/ ./assets/
else
    echo "could not switch project. $1 is invalid"
fi

如果您使用这种方法,我可能会在 .gitignore 中添加 app.json 和所有资产。

【讨论】:

    【解决方案2】:

    我不确定我是否理解正确,但我想出了一个解决方案。

    我不知道这是否是最好的方法。

    您可以使用发布渠道创建相同代码的 3 个不同版本。您可以使用Expo.Constants.manifest.releaseChannel 为频道加载配置。

    更多信息https://docs.expo.io/versions/latest/distribution/release-channels

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-11
      • 2011-05-30
      • 1970-01-01
      • 2015-07-02
      相关资源
      最近更新 更多