A native library to access all the native code's build configurations from JS.
-
$ npm install react-native-config-reader --save
or$ yarn add react-native-config-reader
-
$ react-native link react-native-config-reader
-
Go to android/app/src/main/packageName/MainApplication.java and find line
new RNConfigReaderPackage()
and replace it with
new RNConfigReaderPackage(BuildConfig.class)
See manual installation below if you have issues with react-native link
.
import RNConfigReader from 'react-native-config-reader';
// access any of the defined config variables in andoird build gradle or ios info.plist
const configValue = RNConfigReader.ANY_DEFINED_CONFIG_FIELD;
Create new build config field inside android build.gradle
file (android/app/build.gradle)
android {
defaultConfig {
applicationId "com.react-native.react-native-config-reader"
versionCode 1
versionName "1.0"
buildConfigField "String", "TEST_CONFIG_FIELD", "Hello I'm your test config value"
}
}
Create new field inside ios info.plist
file
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDisplayName</key>
<string>com.react-native.react-native-config-reader</string>
<key>TEST_CONFIG_FIELD</key>
<string>"Hello I'm your test config value"</string>
</dict>
</plist>
Now you can acess them inside the JS code
import { Platform } from 'react-native';
import RNConfigReader from 'react-native-config-reader';
if(Platform.OS === 'ios') {
const iosBundleDisplayName = RNConfigReader.CFBundleDisplayName;
const testConfigValue = RNConfigReader.TEST_CONFIG_FIELD;
}
if(Platform.OS === 'android') {
const androidApplicationID = RNConfigReader.applicationId;
const testConfigValue = RNConfigReader.TEST_CONFIG_FIELD;
}
- In XCode, in the project navigator, right click
Libraries
โAdd Files to [your project's name]
- Go to
node_modules
โreact-native-config-reader
and addRNConfigReader.xcodeproj
- In XCode, in the project navigator, select your project. Add
libRNConfigReader.a
to your project'sBuild Phases
โLink Binary With Libraries
- Run your project (
Cmd+R
)<
- Open up
android/app/src/main/java/[...]/MainActivity.java
- Add
import com.reactlibrary.RNConfigReaderPackage;
to the imports at the top of the file - Add
new RNConfigReaderPackage()
to the list returned by thegetPackages()
method
- Append the following lines to
android/settings.gradle
:include ':react-native-config-reader' project(':react-native-config-reader').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-config-reader/android')
- Insert the following lines inside the dependencies block in
android/app/build.gradle
:compile project(':react-native-config-reader')
- In Visual Studio add the
RNConfigReader.sln
innode_modules/react-native-config-reader/windows/RNConfigReader.sln
folder to their solution, reference from their app. - Open up your
MainPage.cs
app
- Add
using Config.Reader.RNConfigReader;
to the usings at the top of the file - Add
new RNConfigReaderPackage()
to theList<IReactPackage>
returned by thePackages
method
MIT License
Copyright (c) 2019 Chanaka Athurugiriya