首页 > 解决方案 > 如何发布和保持安装的 React Native 应用程序的多个版本?

问题描述

我需要关于如何处理某事的建议:

我有一个很快将发布到 App Store 和 Google Play 的应用程序,我想找到一种方法来克隆这个应用程序,它的功能较少,这个克隆是为了让用户体验这个应用程序,也为了公司的推销员来演示它,我也想将两个应用程序安装在同一台设备上,所以在推销员的情况下,他们可以用这个“演示应用程序”进行演示,也可以将真实应用程序用于自己的目的.

我知道我可以在 TestFlight 和 Google Play 上拥有一个 beta 用户组,但这需要我注册这些用户或给他们一个链接以注册为 beta,并且不可能同时安装这两个应用程序。

我想让这个“演示应用程序”可以从商店下载,它会有来自真实应用程序的不同 API 调用、不同的图标等......但我想避免维护和复制“生产”应用程序到“演示”应用程序。

我想到的选项:创建一个分支并将应用程序重命名为新的签名、名称、图标,所以我只需要始终从 origin/master 分支中提取差异并将其发布到商店,但它没有用,因为 xcode 会破坏应用程序并在我执行此操作时给我随机错误。

我很高兴收到有关此的想法和解决方法。

标签: react-nativegoogle-playapp-store

解决方案


我目前可以安装我开发的应用程序的四个不同版本。解决方案实际上取决于您的设置,但目前我是这样做的1。这不是唯一的方法,但它对我有用,我发现这种设置导致的问题非常小,以至于它并没有真正打扰我。

iOS

最简单的解决方案iOS是使用不同的Bundle Identifiers. 这要求您拥有不同的配置文件。每个开发环境都有一个配置文件(如果您想将它们放在设备上以便在远离开发机器的地方进行测试,它们需要是分发配置文件)和一个用于提交到 App Store 的配置文件。

Xcode 能够使用不同的配置文件管理不同的环境,但是这给我在使用 CocoaPods 时带来了重大问题,我最终不得不阻止 Xcode 管理它。

我现在要做的是在我的工作流2中添加一个脚本,该脚本强制为环境提供正确的 Bundle Identifier。如果我想在本地构建,我只需手动更改 Bundle Identifier 和配置文件(只需要一秒钟)

安卓

因为Android我使用内置flavors来管理不同的环境。设置起来真的很容易。在我的app/build.gradle我添加了以下内容:

flavorDimensions "version"
productFlavors {
    dev {
        dimension "version"
        applicationIdSuffix ".dev"
    }
    uat {
        dimension "version"
        applicationIdSuffix ".uat"
    }
    staging {
        dimension "version"
        applicationIdSuffix ".staging"
    }
    prod {
        dimension "version"
        applicationIdSuffix ".prod"
    }
}

这会applicationIdSuffix为您的构建添加一个,这意味着您可以在您的设备上安装多种类型。使用风味是管理您的 android 应用程序的一种非常强大的方法。您可以在此处阅读有关使用风味的更多信息

需要注意的重要一点是,使用风味确实会改变您运行应用程序的方式。

而不是使用react-native run-android我现在必须使用react-native run-android --variant=devDebug.

当我想构建它而不是使用./gradlew assembleRelease时,我必须使用(你必须为你使用的每种口味./gradlew assembledevRelease更改它)

react-native 还有一个小错误,使用--variant标志时它不会启动应用程序,因此您只需单击设备上的图标。但是,如果您从Android Studio它启动它就可以了。

因此,如果您从 启动应用程序Android Studio,或者将适当的脚本添加到您的这些问题中,package.json这些问题就会消失。


1我不将 Expo 用于我的生产应用程序,仅用于原型设计,因此这些解决方案适用于可以访问本机代码的完整react-native应用程序。

2我使用 Bitrise 构建我的应用程序,因此很容易添加 bash 脚本或类似的构建过程。


推荐阅读