1.0.18 • Published 1 year ago

@bytehide/react-native-shield v1.0.18

Weekly downloads
-
License
MIT
Repository
-
Last release
1 year ago

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:

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:

      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:

    "scripts": {
      "obfuscate": "node obfuscate.js"
    }
  2. Execute the obfuscation script:

    npm run obfuscate

3. Integration into Build Processes

For Android (build.gradle)

  1. Add a custom task to android/app/build.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:

    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:
   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));
            },
        },
    ],
};
  1. Run the command:

    npx react-native obfuscate

5. Using the bin Command

You can use the bin command to obfuscate your project.

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! 🛡️

1.0.18

1 year ago

1.0.17

1 year ago

1.0.16

1 year ago

1.0.15

1 year ago

1.0.14

1 year ago

1.0.13

1 year ago

1.0.12

1 year ago

1.0.11

1 year ago

1.0.10

1 year ago

1.0.9

1 year ago

1.0.8

1 year ago

1.0.7

1 year ago

1.0.6

1 year ago

1.0.5

1 year ago

1.0.4

1 year ago

1.0.3

1 year ago

1.0.1

1 year ago

1.0.0

1 year ago