我从Google Play下载了APK文件,想知道该应用程序的开发是否使用了React Native库。什么是一种快速而稳定的方法呢? (如果它可以在以后自动化的话会更好 - 但是这种自动化本身超出了这个问题的范围。)
答案 0 :(得分:11)
我可以为您提供2种解决方案:
您可以使用dex2jar。
当您打开生成的jar文件时,如果有文件夹/com/facebook/react/
,您可以检查它是否使用React Native。
解决方案2
app.apk
重命名为app.zip
dexdump
中的SDK
$ ANDROID_HOME / build-tools // dexdump :
dexdump classes.dex` com/facebook/react
答案 1 :(得分:2)
公认的解决方案当然可以为您提供正确的答案,但是速度会很慢。这是我最初所做的,并且由于我要在数百个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