我目前正在构建一个应用程序,由于客户的决定,需要以“两种模式”构建(例如,普通用户和专业人士),并且该应用程序的两个版本都需要位于不同的商店中,并且能够在同一设备上同时部署(例如,安装一个版本的应用程序不应阻止用户安装另一个版本)。这也意味着我必须使用两个不同的捆绑 ID(例如,
com.theclient.myapp
和 com.theclient.myprofesionalapp
)
我们决定使用单个存储库,因为两个版本 80% 左右的功能是相同或通用的,但目前我在构建 apk/aab 时被迫手动更改捆绑 ID 和应用程序名称 -或 XCode 上的 .ipa,就此而言。
目前,每当我构建应用程序时,我都会使用一个命令,该命令按顺序运行命令
ionic build
、npx cap sync android
和 npx cap open android
。但是,即使我的根 capacitor.config.json
文件上的信息已被修改,该命令似乎也不会重建 android/app/build.gradle 文件等文件上的信息。
我的问题是:
理想情况下,我可以在需要时随时删除并重新构建 android 目录,但这也会删除我生成的资产(启动画面和图标),并且可能还删除我更改的其他配置,所以我而不是诉诸于此。我还在研究一些 Node.js 命令来更改某些文件中存在的信息,但到目前为止,我在从 .js Node 命令编写gladle 文件时遇到了困难。
提前致谢!
Ionic 为此提供了 Trapeze (
@trapezedev/configure
)。您可以创建一个配置来参数化您需要的值,例如应用程序 ID:
# config.yaml
vars:
APP_ID:
default: com.theclient.myapp
platforms:
android:
packageName: $APP_ID
ios:
bundleId: $APP_ID
然后在构建每个配置之前运行 Trapeze (
npx trapeze run config.yaml
)。 Trapeze 配置中的变量可能会被同名的环境变量覆盖。
不幸的是,这种方法实际上更改了通常在存储库中进行版本控制的文件。但是,它似乎可以处理您的用例。