代码之家  ›  专栏  ›  技术社区  ›  cassmtnr Shannon

如何安装React本机应用程序的两个版本(生产和演示应用程序)?

  •  0
  • cassmtnr Shannon  · 技术社区  · 6 年前

    我需要一些处理问题的建议:

    我有一个应用程序将很快发布到app Store和Google Play,我想找到一个功能较少的这个应用程序的克隆,这个克隆是为了让用户和公司的销售人员体验这个应用程序,并演示它,我还想让这两个应用程序安装在同一个设备上,因此,对于销售人员来说,他们可以用这个“演示应用程序”演示,也可以将真正的应用程序用于自己的目的。

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

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

    我想的办法是:创建一个分支,将应用程序重命名为新的签名、名称、图标等,这样我就只需要从源/主分支中提取diff并将其发布到商店中,但它没有起作用,因为xcode会中断应用程序并在我执行时给我随机错误。

    我很高兴能得到这样的想法和解决办法。

    0 回复  |  直到 6 年前
        1
  •  2
  •   Andrew    6 年前

    我目前可以有四个不同版本的应用程序,我开发安装。这个问题的解决方案实际上取决于您的设置,但下面是我目前的做法 1个 . 这不是唯一的方法,但它对我有用,我发现 问题 这个装置造成的影响太小了,我真的不担心。

    网间网操作系统

    最简单的解决方案 iOS 就是有不同的 Bundle Identifiers . 这要求您具有不同的资源调配配置文件。为每个开发环境提供一个配置文件(如果要将它们放在设备上进行测试,而不是放在开发计算机上,则它们需要 分布 和一个提交到应用程序商店的配置文件。

    Xcode能够用不同的配置文件管理不同的环境,但是这导致了我在使用CocoaPods时遇到的主要问题,最后我不得不阻止Xcode管理它。

    我现在要做的是在我的工作流中添加一个脚本 2个 强制环境使用正确的束标识符。如果我想在本地构建,我只需手动更改包标识符和配置文件(只需一秒钟)

    安卓

    为了 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应用程序的一种非常强大的方法。你可以阅读更多关于使用口味的内容 here

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

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

    当我想建造它而不是使用 ./gradlew assembleRelease ,我必须使用 ./gradlew assembledevRelease (您必须为每个 风味 你使用的)

    在使用 --variant 标记它不会启动应用程序,因此您只需单击设备上的图标。但是如果你从 Android Studio 它发射得很好。

    所以如果你从 安卓工作室 ,或将适当的脚本添加到 package.json 这些问题逐渐消失。


    1个 我不把Expo用于我的生产应用程序,只用于原型设计,所以这些解决方案是完整的 react-native 应用 有访问权限 到本机代码。

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

        2
  •  1
  •   Ranjan    6 年前

    如果你想让他们从商店下载应用程序,那么 应用程序必须具有不同的包/applicationid .

    我在一个 react native 最近的项目,我们实际处理 staging production 单个分支中的应用程序。尽管我们没有释放 分期付款 应用程序在play store上,我们使用 Google drive 由于两个应用程序都有不同的软件包,所以可以将它们一起安装。

    改变 applicationId ,您需要在应用程序的 build.gradle 归档 Android . 简单地添加 .demo .anything 在生产结束时 应用程序ID . 如果你愿意,还可以更改你的api端点、应用程序名和图标。因此,在一段时间后手动操作会变得很麻烦,因为您必须来回更改。所以我们写了 shell script 在构建 apk .

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

    现在我们不必跟踪从一个分支到另一个分支的变化。设置( Shell scripts )需要一些,但这是值得的。