在将项目传递给客户端之前如何保护 react-native 应用程序中的源代码

How to protect source code in react-native app before passing the project to the client

对于原生应用,您可以通过构建框架来保护您的源代码,并像访问黑盒一样访问它。

对于react-native app,是否可以将业务逻辑或一些组件构建成类似的东西? (例如npm包,但如何隐藏源代码?最好的方法是用JScrambler混淆npm包?)

我正在为客户构建应用程序,他们没有购买拥有代码的许可证。他们拒绝让我们访问他们的证书来发布应用程序,有什么替代方案可以解决这个问题?

对于 JavaScript 代码,最好的选择可能是混淆,而 JScrambler 可能效果很好。对于这个特定问题,我不知道除了混淆之外还有什么好的解决方案。

我所在的团队刚刚发布了一个新的 JavaScript 混淆产品 JSDefender,它对 React Native 有特定的支持,也许你可以尝试作为 JScrambler 的替代品。

我认为 offline bundle 可以胜任:

对于ios

react-native bundle --dev false --entry-file index.js --bundle-output ios/main.jsbundle --platform ios

对于android

react-native bundle --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --platform android --assets-dest android/app/src/main/res/

使用 --dev false 默认情况下混淆 (--minify true)

为您的客户提供 androidios 文件夹,让他们自己编译本机代码

您可以在 package.json 中使用这些脚本。还有it's good for performance.

"bundle-ios": "react-native ram-bundle --entry-file index.js --platform ios --dev false",

"bundle-android": "react-native ram-bundle --entry-file index.js --platform android --dev false"

而且我不知道你用的是哪个版本的react,但是如果你用的是0.60.4以上的版本,你应该勾选Hermes哪个可以用于android,它会转换你的js转字节码。

使用以下混淆器

react-native-obfuscating-transformer