A native library to access all the native code's build configurations from JS.
For react-native@0.60+ versions use react-native-config-reader@4.0+ (autolinking support enabled now).
π¨ Seeking help maintaining react-native-windows compatibility. See below.
For rn 0.60+ Auto Linking will do things for you.
If not, follow these:
-
$ npm install react-native-config-reader --saveor$ 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()
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 Android 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 access 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-readerand addRNConfigReader.xcodeproj - In XCode, in the project navigator, select your project. Add
libRNConfigReader.ato your project'sBuild PhasesβLink Binary With Libraries - Run your project (
Cmd+R)
- Open up
android/app/src/main/java/[...]/MainApplication.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')If your app uses an applicationIdSuffix or a different applicationId depending on the build variants, you must append the following line inside the buildTypes block in your android/app/build.gradle file and specify your new package name.
resValue "string", "rn_config_reader_custom_package", "com.yourNewPackage"Example
buildTypes {
...
debug {
...
applicationIdSuffix ".dev"
resValue "string", "rn_config_reader_custom_package", "com.yourNewPackage"
}
}π¨ When this project was first created in early 2019, it offered support for a beta version of React Native for Windows. Since this time, many updates have been published to both react-native and react-native-windows, with no active updates in this project to ensure compatibility.
π If you're interested in using this library with react-native-windows, and can offer assistance maintaining it, please reach out to the maintainers by filing an issue.
-
In Visual Studio add the
RNConfigReader.slninnode_modules/react-native-config-reader/windows/RNConfigReader.slnfolder to their solution, reference from their app. -
Open up your
MainPage.csapp
- Add
using Config.Reader.RNConfigReader;to the usings at the top of the file - Add
new RNConfigReaderPackage()to theList<IReactPackage>returned by thePackagesmethod
When Proguard is enabled (which it is by default for Android release builds), it can rename the BuildConfig Java class in the minification process and prevent react-native-config-reader from referencing it. To avoid this, add an exception to android/app/proguard-rules.pro:
-keep class com.yourNewPackage.BuildConfig { *; }
com.yourNewPackage should match the package value in your app/src/main/AndroidManifest.xml file.
If using Dexguard, the shrinking phase will remove resources it thinks are unused. It is necessary to add an exception to preserve the build config package name.
-keepresources string/rn_config_reader_custom_package
MIT License
Copyright (c) 2019 Chanaka Athurugiriya