我正在为我的应用程序使用firebase并拥有2个iOS目标和2个android风格,我们称之为production
和development
。它们使用不同的firebase项目,并以ci作为发布版本构建。
问题出现了,我需要为某些firebase调用提供不同的配置,我需要传递bunlde id / package id(来自javascript代码)。
由于我在构建这些时总是处于发布模式,因此我无法依赖全局DEV变量。
我有没有办法找出js代码中正在构建的目标/风格,并根据此调整那里的东西?
答案 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中可见。 希望这就是你要找的东西。