【问题标题】:How to get react native code from apk file如何从 apk 文件中获取反应本机代码
【发布时间】:2019-04-09 17:13:25
【问题描述】:

我用 react native 编写了一个应用程序,但在开发接近尾声时不小心,我的硬盘崩溃了,现在我只有 APK 文件,我可以从那个 apk 文件中检索 react native 代码吗?

【问题讨论】:

  • 在某一时刻,我们大多数人都很难理解为什么远程存储库很重要
  • 我认为在爱荷华州核心小组对原生应用程序错误做出反应后,这个问题受到了很多关注

标签: android react-native apk


【解决方案1】:

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

因为 something.js 是一个捆绑文件(缩小/丑化),使用一些 unuglifier/jsbeautifier 使其可读。 (也检查jsnice)

总比没有好。

【讨论】:

    【解决方案2】:

    不,恐怕您无法检索您的反应本机代码,就像您反编译您的 apk 文件一样,它将返回您的 Android 的 Java 代码,但没有反应本机代码。

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

    【讨论】:

    • 是的,这是真的,但我希望我能以某种方式找回它:(
    • 如果您成功检索到您的 react 本机代码,请告诉我。如果您觉得这个答案有些用处,请接受并投票赞成这个答案。 :)
    • ._.正如@GnoStiC 的回答所说,它全部捆绑并缩小在assets/index.androind.bundle 文件中。请@ristapk 为将来到达这里的每个人修改您接受的答案。
    • 您是否有参考资料表明实际发生的情况?从其他答案中,我了解到它不是将您的代码转换为 java,而是在现有解释器之上添加另一个解释器来读取 javascript,将其解释为 java,然后将其解释为 native。
    【解决方案3】:

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

    apktool的安装:

    适用于 Macbook

    brew install apktool
    

    适用于 Linux

    apt-get install -y apktool
    

    适用于 Windows

    您可以阅读窗口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反编译文件

    【讨论】:

    • 这应该是标记的答案
    • @Firdous 谢谢
    猜你喜欢
    • 2014-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-25
    • 1970-01-01
    • 2019-02-08
    • 1970-01-01
    相关资源
    最近更新 更多