我可以计算jar文件中使用的所有方法.我的APK使用某些外部JARS,并且有大约100个类是精确的.
我使用dex2jar JAD等反编译器等等,但它们似乎只在特定的类文件中显示方法.
有没有办法可以获得总数?
Jes*_*eke 81
您可以将jar转换为dex文件,然后从标头中提取方法引用的数量.它存储为无符号小端整数,偏移量为88(0x58).
dx --dex --output=temp.dex orig.jar
cat temp.dex | head -c 92 | tail -c 4 | hexdump -e '1/4 "%d\n"'
Run Code Online (Sandbox Code Playgroud)
请记住,这是引用的唯一方法的数量,而不是方法引用的数量.换句话说,如果在dex文件中引用了两次特定方法,则它只会在标头中的计数中计数一次.当你将这个jar导入你的apk时,两者之间常见的方法引用是重复数据删除的,所以最终合并的apk的总方法引用数将是<=两者的总和.
pat*_*ckf 11
此gradle插件https://github.com/KeepSafe/dexcount-gradle-plugin将显示汇编后的总方法计数,并生成包含每个包的方法计数的报告.排序之后看起来像这样:
30145 com
27704 org
20950 android
17140 org.spongycastle
16605 android.support
9760 com.google
8930 com.fasterxml.jackson
8930 com.fasterxml
8633 android.support.v4
7020 com.fasterxml.jackson.databind
6426 android.support.v7
5311 com.google.protobuf
4705 org.spongycastle.crypto
...
Run Code Online (Sandbox Code Playgroud)
与gradle命令结合使用
.\gradlew app:dependencies
Run Code Online (Sandbox Code Playgroud)
打印出依赖关系树,您将很好地了解哪个依赖关系需要多少方法.
| 归档时间: |
|
| 查看次数: |
23163 次 |
| 最近记录: |