javascript - 我如何告诉 react-native 要查看的 .env 文件?

标签 javascript android react-native environment-variables environment

在 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

的第 3 行
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/

相关文章:

react-native - 如何将 useState 更新为 TextInput

android - 如何在Android平台上利用网络进行p2p文件共享?

android - kivy中的文件处理

php - android webview cookies 不工作

react-native - 使用react-native 0.43.3 babel-plugin-root-import错误路径

javascript - 使用第 n 个子选择器更改背景颜色

javascript - 为什么字符串连接比数组连接更快?

javascript - 使用jquery避免同一张表中的重复数据

javascript - 简单的 Angular 重复

ios - 模拟器 10.2.1 命令 + R 在 react native 中不起作用