我从Google Play下载了APK文件,想知道应用程序的开发是否使用了React Native库。有什么快速而稳定的方法可以做到这一点?(如果它是我以后可以自动化的东西,那就更好了-但这种自动化本身超出了这个问题的范围。
hjzp0vay1#
我可以给你两个解决方案:
*方案一
可以使用dex2jar。当你打开生成的jar文件时,你可以检查它是否使用React Native,如果有一个文件夹/com/facebook/react/。1.方案二1.将您的应用程序APK重命名为app.apk1.解压缩您的zip文件1.使用dexdump从Android SDK $ANDROID_HOME/build-tools//dexdump : dexdump classes.dex1.在dexdump的输出中搜索com/facebook/react`
/com/facebook/react/
app.apk
dexdump
SDK
:
1.在dexdump的输出中搜索
cwdobuhd2#
公认的解决方案肯定会给你正确的答案,但它会很慢。这是我最初做的,它不够快,因为我在数百个APK上运行这个脚本。我开发了一个替代解决方案,并在原始解决方案通过5%的APK之前执行了它。我不喜欢检查名称中包含com_facebook的布局的原因(另一个预先存在的解决方案)是,应用程序使用另一个包含以该字符串开头的布局文件的Facebook SDK是完全合理的。我不知道有没有假阳性,但看起来很有可能会有一些。相反,我检查了libreactnativejni.so的存在,我不得不想象只有在使用React Native时才会使用它。(我最初是在寻找libyoga.so,但我有一些误报,我想是因为有一个同名的日志库。具体来说,我在bash脚本中使用的是Mac上的这个条件(我认为它是可移植的,但没有测试过):
libreactnativejni.so
if [ "$(unzip -l $apkfile | grep libreactnativejni.so | wc -l)" -gt "0" ] then echo "Uses RN" fi
xghobddn3#
在***Android Studio***中打开***APK***,检查classes.dex-文件(可以是多个文件)。您正在寻找的是:
classes.dex
com\facebook\react
io\flutter
com\xamarin\
在Android Studio中可能会是这样
x6yk4ghg4#
不知道这种方法是否有效。从商店下载apk到您的PC,我使用APK Downloader火狐扩展(如果你还没有应用程序apk).使用Zip软件打开apk(我使用Linux,所以我使用方舟)。现在你可以看到项目的一部分。转到res->layout并搜索com_facebook...,在我的例子中是com_facebook_activity_layout.xml。如果你有一个包含com_facebook的布局,那么这个apk是用React创建的。
res->layout
com_facebook...
com_facebook_activity_layout.xml
com_facebook
wydwbb8l5#
我发现Roman Sisik构建的Online APK Analyzer"是一个很有帮助的在线工具,可以通过上传apk文件来了解用于构建android应用程序的框架。我已经用flutter和react-native应用程序测试了它,它给了我正确的答案,我还注意到,当没有框架显示时,这可能意味着应用程序是原生构建的。
5条答案
按热度按时间hjzp0vay1#
我可以给你两个解决方案:
*方案一
可以使用dex2jar。当你打开生成的jar文件时,你可以检查它是否使用React Native,如果有一个文件夹
/com/facebook/react/
。1.方案二
1.将您的应用程序APK重命名为
app.apk
1.解压缩您的zip文件
1.使用
dexdump
从AndroidSDK
$ANDROID_HOME/build-tools//dexdump:
dexdump classes.dex1.在dexdump的输出中搜索
com/facebook/react`cwdobuhd2#
公认的解决方案肯定会给你正确的答案,但它会很慢。这是我最初做的,它不够快,因为我在数百个APK上运行这个脚本。我开发了一个替代解决方案,并在原始解决方案通过5%的APK之前执行了它。
我不喜欢检查名称中包含com_facebook的布局的原因(另一个预先存在的解决方案)是,应用程序使用另一个包含以该字符串开头的布局文件的Facebook SDK是完全合理的。我不知道有没有假阳性,但看起来很有可能会有一些。
相反,我检查了
libreactnativejni.so
的存在,我不得不想象只有在使用React Native时才会使用它。(我最初是在寻找libyoga.so,但我有一些误报,我想是因为有一个同名的日志库。具体来说,我在bash脚本中使用的是Mac上的这个条件(我认为它是可移植的,但没有测试过):
xghobddn3#
最简单的解决方案
在***Android Studio***中打开***APK***,检查
classes.dex
-文件(可以是多个文件)。您正在寻找的是:com\facebook\react
文件夹了吗?io\flutter
文件夹了吗?com\xamarin\
吗?在Android Studio中可能会是这样
x6yk4ghg4#
不知道这种方法是否有效。
从商店下载apk到您的PC,我使用APK Downloader火狐扩展(如果你还没有应用程序apk).
使用Zip软件打开apk(我使用Linux,所以我使用方舟)。现在你可以看到项目的一部分。
转到
res->layout
并搜索com_facebook...
,在我的例子中是com_facebook_activity_layout.xml
。如果你有一个包含com_facebook
的布局,那么这个apk是用React创建的。wydwbb8l5#
我发现Roman Sisik构建的Online APK Analyzer"是一个很有帮助的在线工具,可以通过上传apk文件来了解用于构建android应用程序的框架。
我已经用flutter和react-native应用程序测试了它,它给了我正确的答案,我还注意到,当没有框架显示时,这可能意味着应用程序是原生构建的。