android 如何检测应用是否使用React Native,给定APK文件?

46qrfjad  于 2023-05-05  发布在  Android
关注(0)|答案(5)|浏览(237)

我从Google Play下载了APK文件,想知道应用程序的开发是否使用了React Native库。有什么快速而稳定的方法可以做到这一点?(如果它是我以后可以自动化的东西,那就更好了-但这种自动化本身超出了这个问题的范围。

hjzp0vay

hjzp0vay1#

我可以给你两个解决方案:

*方案一

可以使用dex2jar。当你打开生成的jar文件时,你可以检查它是否使用React Native,如果有一个文件夹/com/facebook/react/
1.方案二
1.将您的应用程序APK重命名为app.apk
1.解压缩您的zip文件
1.使用dexdump从Android SDK $ANDROID_HOME/build-tools//dexdump : dexdump classes.dex1.在dexdump的输出中搜索com/facebook/react`

cwdobuhd

cwdobuhd2#

公认的解决方案肯定会给你正确的答案,但它会很慢。这是我最初做的,它不够快,因为我在数百个APK上运行这个脚本。我开发了一个替代解决方案,并在原始解决方案通过5%的APK之前执行了它。
我不喜欢检查名称中包含com_facebook的布局的原因(另一个预先存在的解决方案)是,应用程序使用另一个包含以该字符串开头的布局文件的Facebook SDK是完全合理的。我不知道有没有假阳性,但看起来很有可能会有一些。
相反,我检查了libreactnativejni.so的存在,我不得不想象只有在使用React Native时才会使用它。(我最初是在寻找libyoga.so,但我有一些误报,我想是因为有一个同名的日志库。
具体来说,我在bash脚本中使用的是Mac上的这个条件(我认为它是可移植的,但没有测试过):

if [ "$(unzip -l $apkfile | grep libreactnativejni.so | wc -l)" -gt "0" ]
then 
echo "Uses RN"
fi
xghobddn

xghobddn3#

最简单的解决方案

在***Android Studio***中打开***APK***,检查classes.dex-文件(可以是多个文件)。您正在寻找的是:

  • React Native -你找到com\facebook\react文件夹了吗?
  • Flutter -你找到io\flutter文件夹了吗?
  • Xamarin -你找到文件夹com\xamarin\吗?

在Android Studio中可能会是这样

x6yk4ghg

x6yk4ghg4#

不知道这种方法是否有效。
从商店下载apk到您的PC,我使用APK Downloader火狐扩展(如果你还没有应用程序apk).
使用Zip软件打开apk(我使用Linux,所以我使用方舟)。现在你可以看到项目的一部分。
转到res->layout并搜索com_facebook...,在我的例子中是com_facebook_activity_layout.xml。如果你有一个包含com_facebook的布局,那么这个apk是用React创建的。

wydwbb8l

wydwbb8l5#

我发现Roman Sisik构建的Online APK Analyzer"是一个很有帮助的在线工具,可以通过上传apk文件来了解用于构建android应用程序的框架。
我已经用flutter和react-native应用程序测试了它,它给了我正确的答案,我还注意到,当没有框架显示时,这可能意味着应用程序是原生构建的。

相关问题