@bytehide/react-native-shield
Version:
React Native plugin for ByteHide Shield obfuscation.
143 lines (99 loc) • 4.43 kB
Markdown
# ByteHide React Native Shield Plugin
This README provides step-by-step instructions for integrating and using the ByteHide React Native Shield Plugin for
obfuscating your React Native project's source code.
## Installation
Install the plugin as a development dependency in your project:
```bash
npm install @bytehide/react-native-shield --save-dev
```
## Usage Options
### 1. Using a Standalone Script
You can create a standalone script to perform obfuscation manually.
1. **Create a script file** in the root of your project, e.g., `obfuscate.js`, and add the following:
```javascript
const shield = require('@bytehide/react-native-shield');
const distDir = './dist'; // Path to the dist directory
const projectToken = 'your_project_token'; // Project token
const replace = true; // Whether to replace the original files or save as new files
const excludePatterns = []; // Patterns to exclude from obfuscation
const obfuscatedExtension = '.obf'; // Extension for obfuscated files
shield
.obfuscate(distDir, projectToken, replace, excludePatterns, obfuscatedExtension)
.then(() => console.log('Obfuscation completed successfully!'))
.catch((err) => console.error('Error during obfuscation:', err));
```
2. Run the script manually when needed:
```bash
node obfuscate.js
```
### 2. Adding to `package.json` Scripts
Include the obfuscation step as a script in your project's `package.json`:
1. Modify `package.json`:
```json
"scripts": {
"obfuscate": "node obfuscate.js"
}
```
2. Execute the obfuscation script:
```bash
npm run obfuscate
```
### 3. Integration into Build Processes
#### **For Android (`build.gradle`)**
1. Add a custom task to `android/app/build.gradle`:
```gradle
task obfuscateJs(type: Exec) {
commandLine "node", "${project.rootDir}/obfuscate.js"
}
preBuild.dependsOn obfuscateJs
```
#### **For iOS (Run Script in Xcode)**
1. Go to *Build Phases* > *+ Add Run Script Phase* in Xcode.
2. Add the following script:
```bash
node "$SRCROOT/../obfuscate.js"
```
### 4. Adding a Custom CLI Command
You can integrate the obfuscation step as a custom React Native CLI command.
1. Add the following to `react-native.config.js`:
```javascript
module.exports = {
commands: [
{
name: 'obfuscate',
func: () => {
const shield = require('@bytehide/react-native-shield');
const distDir = './dist'; // Path to the dist directory
const projectToken = process.env.BYTEHIDE_PROJECT_TOKEN || 'your_project_token';
if (projectToken === 'your_project_token') {
console.error('Project token is required. Please provide it as an argument or set the BYTEHIDE_PROJECT_TOKEN environment variable.');
process.exit(1);
}
// Optional parameters: replace, excludePatterns, obfuscatedExtension
const replace = false; // If true, the original files will be replaced with the obfuscated files
const excludePatterns = []; // Patterns to exclude from obfuscation
const obfuscatedExtension = '.obf'; // Extension for obfuscated files
shield
.obfuscate(distDir, projectToken, replace, excludePatterns, obfuscatedExtension)
.then(() => console.log('Obfuscation completed successfully!'))
.catch((err) => console.error('Error during obfuscation:', err));
},
},
],
};
```
2. Run the command:
```bash
npx react-native obfuscate
```
### 5. Using the `bin` Command
You can use the `bin` command to obfuscate your project.
```bash
npx @bytehide/react-native-shield obfuscate --src ./dist --projectToken your_project_token --replace false --obfuscatedExtension .obf --exclude "*.test.js, *.spec.js"
```
This command will obfuscate the files in the `./dist` directory, excluding any files matching the patterns `*.test.js` and `*.spec.js`.
If `--replace` is set to `true`, the original files will be replaced with the obfuscated files, omitting the `--obfuscatedExtension` parameter.
## License
MIT
---
Happy coding but keep it safe with `@bytehide/react-native-shield`! 🛡️