在 Windows 上,我正在开发一个白标应用程序并尝试使用环境变量来构建代码特定的版本。我正在使用 react-native-config
并按照他们在 GitHub 上的设置进行操作,但出于某种原因 SET ENVFILE=.env.myenvironment
对我没有任何作用,即使在 build-gradle
中定义了这样的 map :
project.ext.envConfigFiles = [
debug: ".env",
release: ".env",
anothercustombuild: ".env.custombuild",
]
有什么想法吗?
最佳答案
在您的 gradle 中配置 flavors 之后,为了让 react-native 查看您项目文件夹根目录中的自定义 .env 文件,您必须添加到
android/app/build.gradle
在我的示例中,我使用相同的代码库为 Android 设备创建了两个应用程序,一个用于 group1,一个用于 group2
//将此添加到 app/build.gradle
project.ext.envConfigFiles = [
projecta: ".env.development.android.projecta",
projectb: ".env.development.android.projectb",
]
//不要忘记添加
android {
compileSdkVersion rootProject.ext.compileSdkVersion
flavorDimensions "default" // add this line
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
然后将此数组中的键与您的产品口味进行匹配
productFlavors {
project1 {
minSdkVersion rootProject.ext.minSdkVersion
applicationId 'com.nativeapp.projecta'
targetSdkVersion rootProject.ext.targetSdkVersion
resValue "string", "build_config_package", "com.nativeapp"
}
project2 {
minSdkVersion rootProject.ext.minSdkVersion
applicationId 'com.nativeapp.projectb'
targetSdkVersion rootProject.ext.targetSdkVersion
resValue "string", "build_config_package", "com.nativeapp"
}
}
还要确保 applicationId 和 resValue 以您的应用程序包名称开头
在我的例子中,它是“nativeapp”,但您可以在 MainActivity.java 文件中找到您的。
如果深入 android/app/main/java/com/目录,您可以找到它。
在此之后,您可以在需要时配置您的脚本,如下所示
"scripts": {
"android:project1": "ENVFILE=.env.development.projecta react-native run-android --variant=projectaDebug --appIdSuffix=projecta",
"android:project2": "ENVFILE=.env.development.projectb.android react-native run-android --variant=projectbDebug --appIdSuffix=projectb",}
注意:添加脚本时,变体必须是 flavor 名称,例如“project2”后跟“Debug”=“projectb”,因为这是您的默认构建类型
还要确保您已在 android/app/src/中为每种口味创建了相关文件夹。
以我为例
android/app/src/projecta/
android/app/src/projecta/
如果所有设置正确,当您使用您创建的脚本构建时,它应该创建正确的 res 文件夹和 android list 文件。
如果您想更改每个单独应用程序实例的名称,请更改 res/values
目录中的 strings.xml。
<resources>
<string name="app_name">Project1</string> //this will be the name of your app when its built in your emulator
</resources>
关于javascript - 我如何告诉 react-native 要查看的 .env 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57461135/