React native 如何发布并保持安装的React本机应用程序的多个版本?

React native 如何发布并保持安装的React本机应用程序的多个版本?,react-native,google-play,app-store,React Native,Google Play,App Store,我需要关于如何处理某事的建议: 我有一个应用程序将很快发布到app Store和Google Play,我想找到一种方法来克隆这个应用程序,减少功能,这个克隆是为了让用户体验这个应用程序,也让公司的销售人员演示它,我想让这两个应用程序安装在同一台设备上,因此,在销售人员的案例中,他们可以使用这个“演示应用程序”进行演示,也可以出于自己的目的使用真正的应用程序 我知道我可以在TestFlight和Google Play上建立一个beta用户组,但这需要我注册这些用户,或者给他们一个注册为beta的

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

我有一个应用程序将很快发布到app Store和Google Play,我想找到一种方法来克隆这个应用程序,减少功能,这个克隆是为了让用户体验这个应用程序,也让公司的销售人员演示它,我想让这两个应用程序安装在同一台设备上,因此,在销售人员的案例中,他们可以使用这个“演示应用程序”进行演示,也可以出于自己的目的使用真正的应用程序

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

我想让这个“演示应用程序”可以从商店下载,它将有不同的API调用从真正的应用程序,不同的图标,等等。。。 但我希望避免维护和复制从“生产”应用程序到“演示”应用程序的每一个更改

我想的选项是:创建一个分支,并将应用程序重命名为新的签名、名称和图标,因此我只需始终从原始分支/主分支中提取差异并将其发布到商店中,但它不起作用,因为xcode会破坏应用程序,并在我这样做时给我随机错误


如果您希望他们从商店下载应用程序,那么应用程序必须具有不同的包/应用程序ID,我将不胜感激

我最近参与了一个
react native
项目,我们实际上在单个分支中处理了
staging
production
应用程序。虽然我们没有在play store上发布
staging
应用程序,但我们使用
Google drive
进行共享,因为两个应用程序都有不同的软件包,所以可以同时安装这两个应用程序

要更改
applicationId
,您需要在
Android
中的应用程序的
build.gradle
文件中进行更改。只需在制作结束时添加
.demo
任何内容
。如果愿意,还可以更改api端点、应用程序名称和图标。因此,在一段时间后手动执行此操作会变得很麻烦,因为您必须来回更改。因此,我们编写了一个
shell脚本
,在构建
apk
之前进行所有这些更改

事实上,我们不需要在iPhone上安装2个版本,所以我们什么也没做。另外,我不熟悉iOS的开发,但我想这个过程会有些类似


现在我们不必跟踪从一个分支到另一个分支的更改。安装(
Shell脚本
)需要一些时间,但它是值得的。

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

网间网操作系统
iOS
最简单的解决方案是使用不同的
包标识符。这要求您具有不同的配置文件。每个开发环境都有一个配置文件(如果您想将它们放在设备上,以便在开发机器之外进行测试,它们需要是分发配置文件)和一个提交到应用商店的配置文件

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

我现在要做的是向workflow2添加一个脚本,强制为环境指定正确的包标识符。如果我想在本地构建,我只需手动更改包标识符和配置文件(只需一秒钟)

安卓 对于
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
,这意味着您可以在设备上安装多种类型。使用flavors是管理android应用程序的一种非常强大的方法。您可以阅读更多关于使用口味的信息

需要注意的一点是,使用flavors确实会改变运行应用程序的方式

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

当我想构建它而不是使用
/gradlew assembleerelease
,我必须使用
/gradlew assembleedvrelease
(您必须为您使用的每种风格更改此设置)

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

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


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


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

使用产品风格我有大约45种风格,与此库结合使用-@Ashwinmothill我要看一看,你是说不同版本的应用程序?因为我正在使用的这个应用程序就像其他应用程序的模板一样,只是改变api和主题。是的,它就像白色标签应用程序,不同的appId,图标,飞溅,主题,api和