我需要如何处理某事的建议:
我有一个即将发布到App Store和Google Play的应用程序,我想找到一种方法来克隆具有较少功能的该应用程序,此克隆旨在为用户带来该应用程序的品味并让公司的业务员演示它,我也想将两个应用程序都安装在同一设备上,因此对于业务员,他们可以通过此“演示应用程序”进行演示,也可以将真实的应用程序用于自己的目的。
我知道我只能在TestFlight和Google Play上拥有一个Beta用户组,但这需要我注册这些用户或给他们提供链接以注册为Beta,并且不可能同时安装这两个应用程序。
我想使这个“演示应用程序”可以从商店下载,它将具有与真实应用程序不同的API调用,不同的图标等。 但我希望避免维护和复制从“生产”应用程序到“演示”应用程序的所有更改。
我认为的选项:创建一个分支并将应用重命名为新的签名,名称,图标,因此我只需要始终从origin / master分支中获取diff并将其发布到商店即可,但是它没有没用,因为xcode会破坏应用程序并在执行时给我随机错误。
希望能收到有关此问题的想法和解决方法。
答案 0 :(得分:1)
如果您希望他们从商店下载应用程序,则应用程序必须具有不同的包/应用程序ID 。
我最近从事一个react native
项目,实际上我们在单个分支中处理过staging
和production
应用程序。尽管我们没有在Play商店上发布staging
应用,但我们使用Google drive
进行共享,并且由于两个应用都有不同的软件包,因此可以将它们安装在一起。
要更改applicationId
,您需要在build.gradle
中应用程序的Android
文件中进行更改。只需在制作.demo
的末尾添加.anything
或applicationId
。并根据需要更改api端点,应用名称和图标。因此,在一段时间后手动进行此操作变得很麻烦,因为您必须来回更改。因此,我们在构建shell script
之前编写了apk
进行所有这些更改。
我们实际上不需要在iPhone上安装2个版本,因此我们对此没有做任何事情。另外,我对iOS开发并不熟悉,但是我猜过程会有些相似。
现在,我们不必跟踪从一个分支到另一个分支的更改。 Setup(Shell scripts
)会花费一些,但值得。
答案 1 :(得分:1)
我目前可以安装我开发的应用程序的四个不同版本。解决方案的确取决于您的设置,但是目前这是我的操作方法 1 。这不是唯一的方法,但对我有用,我发现此问题导致的问题很小,以至于它并没有真正打扰我。
iOS
的最简单解决方案是使用不同的Bundle Identifiers
。这要求您具有不同的配置文件。每个开发环境的一个配置文件(如果您想将它们放在设备上进行测试,以远离开发机器,则它们必须是 distribution 配置文件)和一个配置文件以提交到App Store。
Xcode能够使用不同的配置文件管理不同的环境,但是这在使用CocoaPods时给我造成了重大问题,最终我不得不停止Xcode的管理。
我现在要做的是将脚本添加到工作流 2 中,该脚本将为环境强制使用正确的捆绑包标识符。如果要在本地构建,只需手动更改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应用程序的非常有效的方法。您可以阅读有关使用口味here
需要注意的重要一点是,使用调味品确实会改变您运行应用程序的方式。
我现在不得不使用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脚本或类似于构建过程的文件。