如何从 apk 文件中获取本机代码

How to get react native code from apk file

我用 React Native 写了一个应用程序,但不小心在开发快结束时,我的硬盘崩溃了,现在我只有 APK 文件,我可以只从那个 APK 文件中取回 React Native 代码吗?

不,恐怕你无法检索你的反应本机代码,就像你反编译你的 apk 文件一样,它将 return 你 android 的 java 代码,但没有反应本机代码.

因为,React Native 将代码转换为本地语言,具体取决于您要构建其 android 或 ios 的OS。

解压apk文件后,在assets文件夹内,index.android.bundle文件是捆绑的react源代码。将 index.android.bundle 重命名为 something.js

因为 something.js 是一个捆绑文件 (minified/uglified),使用一些 unuglifier/jsbeautifier 来确保可读性。 (同时检查 jsnice)

聊胜于无。

不,您无法检索实际代码,但您可以获得一些反编译代码

安装 apktool:

对于 Macbook

brew install apktool

对于Linux

apt-get install -y apktool

对于Windows

您可以阅读 window DOCS

的安装步骤

用法

安装 apktool 后,在终端上通过 运行 命令解压 apk 文件,如下所示:

apktool  d /pathOfApkFile.apk

之后您将在 pathOfApkFile/assets/index.android.bundle

处获得 index.android.bundle 文件

你可以使用 react-native-decompiler 反编译 index.android.bundle 文件

反编译index.android.bundle文件

你可以通过运行这个命令反编译index.android.bundle

npx react-native-decompiler -i ./index.android.bundle -o ./output

之后在./output目录

下会得到JS反编译文件