如何解决不使用 Metro
我需要为不同的 applicationId 构建相同的应用程序,以便我可以将其作为私人应用程序发布到 Play Store/App Store 上,供我公司的一些客户使用。
我决定使用 react-native-config
,因为它可以让我轻松更改 applicationId
和一些 env
变量。
我创建了一些 .env.${variant}
文件,即在以下示例中为 .env.customer1
。
我已将所需的 buildTypes
设置如下:
...
buildTypes {
debug {
...
}
customer1 {
initWith debug
applicationIdSuffix "customer1"
}
}
在使用这些变体构建时,我强制 react.gradle 不捆绑
project.ext.react [
bundleInCustomer1: false,devdisabledInCustomer1: false
]
然后我使用这个命令行在我的物理设备上运行
copy .env.customer .env && react-native run-android --variant=customer1 --appIdSuffix 'customer1'
结果是在我的设备上构建并启动了该应用程序,但我看到的是该应用程序的旧版本(可能是我几周前使用 assembleRelease 构建的最后一个版本),metro 正在启动但告诉当我尝试强制重新加载时,我会这样做,否则什么都不告诉我
warn No apps connected. Sending "reload" ...
我试过没有成功
gradlew clean
npm start --cache-reload
npm cache clean --forced
npm i
构建没有任何变体的应用程序(因此使用默认调试)可以正常工作。
解决方法
感谢 this answer,我成功解决了我的问题。
我现在使用 buildTypes
而不是使用 flavors
。
所以,
android {
...
flavorDimensions "standard"
defaultConfig {
applicationId "com.stackoverflow"
...
productFlavors {
customer1 {
applicationId "com.stackoverflow.customer1"
dimension "standard"
}
}
}
并通过
启动react-native run-android --variant=customer1Debug --appIdSuffix 'customer1'
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。