react-native get build在构建期间构建包名称/包ID?

时间:2018-03-09 11:52:58

标签: android ios react-native

我正在为我的应用程序使用firebase并拥有2个iOS目标和2个android风格,我们称之为productiondevelopment。它们使用不同的firebase项目,并以ci作为发布版本构建。

问题出现了,我需要为某些firebase调用提供不同的配置,我需要传递bunlde id / package id(来自javascript代码)。

由于我在构建这些时总是处于发布模式,因此我无法依赖全局DEV变量。

我有没有办法找出js代码中正在构建的目标/风格,并根据此调整那里的东西?

1 个答案:

答案 0 :(得分:0)

是的,你可以通过buildConfigField字段访问iOS的android和environment.plist设置。

您可以使用框架react-native-build-config和react-native-userdefaults-ios在您的js代码中访问它们。

所以在android上你会在你的app / build.gradle文件中的productFlavor中设置一个buildConfigField:

buildConfigField "String", "CONFIGURATION_VARIABLE", '"some_url_or_other_info"'

然后通过js中的react-native-build-config访问它。

在iOS上,您只需创建2个environment.plist文件,其名称为environment_production.plist和environment_development.plist。 Under Build阶段 - >设置环境您可以添加脚本以在它们之间进行选择:(在示例中,我对GoogleServices-info文件执行相同的操作,这对我来说也是不同的)

    if [ ${CONFIGURATION} == "Production" ]
then
    cp ${PROJECT_DIR}/environment_production.plist ${PROJECT_DIR}/environment.plist
    cp ${PROJECT_DIR}/Firebase/GoogleService-Info.production.plist ${PROJECT_DIR}/Firebase/GoogleService-Info.plist

else
    cp ${PROJECT_DIR}/environment_development.plist ${PROJECT_DIR}/environment.plist
    cp ${PROJECT_DIR}/Firebase/GoogleService-Info.development.plist ${PROJECT_DIR}/Firebase/GoogleService-Info.plist
fi

然后它将在来自js的userDefaults中可见。 希望这就是你要找的东西。