React Native Native Environment module can provide environment variables from native to js
You can use rnpm to install native module easily;
npm install react-native-native-env --save
rnpm link
And in Android, you must change the line in MainActivity :
new RCTNativeEnvPackage()
to
new RCTNativeEnvPackage(BuildConfig.class)
In js:
import NativeEnv from 'react-native-native-env';
NativeEnv.get("APPLICATION_NAME"); // return application's name
NativeEnv.get("VERSION_NAME");// return application's version name
Yeah, we hava defined some native variables. These're:
Key | Source ( Android ) | Source ( iOS ) |
---|---|---|
APPLICATION_ID | BuildConfig.APPLICATION_ID | CFBundleIdentifier |
APPLICATION_NAME | PackageManager.getApplicationLabel | CFBundleName |
VERSION_CODE | BuildConfig.VERSION_CODE | CFBundleVersion |
VERSION_NAME | BuildConfig.VERSION_NAME | CFBundleShortVersionString |
DEBUG | BuildConfig.DEBUG | #ifdef DEBUG |
Also, you can add some environment variables before react-native runtime is running.
###For Android Your can send a Map when you init this Module:
HashMap<String, Object> envs = new HashMap();
envs.put("testInfo", "this is a string");
envs.put("testNumber", 23333);
new RCTNativeEnvPackage(BuildConfig.class, envs);
And you can add variables from everywhere before it's inited:
RCTNativeEnv.addEnv(key, value);
RCTNativeEnv.addEnvs(map);
###For iOS Your can just add variables from everywhere before react runtime running.
[LRDRCTNativeEnv addEnv:@"test" value:@"info"];
[LRDRCTNativeEnv addEnvs:@{@"testInfo":@"this is a string",@"testNumber":@23333}];