ajm*_*jma 34 android dex dex-limit
我正在开发针对dex方法计数限制运行的Android应用程序.有没有一种简单的方法来显示按包分组的方法计数?我可以得到总方法数,但我的应用程序有多个组件,我试图找出哪个组件是最大的贡献者.
Mih*_*ita 45
我编写了一个dex-method-counts工具,比JesusFreke的答案中引用的基于smali的工具更快,更准确地输出每包方法的计数.它可以从https://github.com/mihaip/dex-method-counts安装.
[1]该脚本反汇编.dex并通过包重新组装它,但这意味着多个包引用的方法被计算两次
Jes*_*eke 21
这将使您了解每个包层次结构对方法计数的贡献.结果包括该目录/包中的所有类以及所有子目录/包.
baksmali blah.apk -o out
cd out
find * -type d -print -exec sh -c "smali {} -o {}/classes.dex && sh -c \"dexdump -f {}/classes.dex | grep method_ids_size\"" \;
Run Code Online (Sandbox Code Playgroud)
这个稍微修改过的版本是类似的,只是它只适用于特定目录/包中的类,不包括任何子目录/子包
baksmali blah.apk -o out
cd out
find * -type d -print0 | xargs -0 -I{} sh -c "echo {} && find {} -maxdepth 1 -name \"*.smali\" -print0 | xargs -r -0 smali -o {}/classes.dex"
find -name "*.dex" -print -exec sh -c "dexdump -f {} | grep method_ids_size" \;
Run Code Online (Sandbox Code Playgroud)
Nic*_*tto 17
我和一位同事在上个月发布了一项可以帮助您实现目标的服务:http://www.methodscount.com/.它显示了方法计数和其他整洁的信息
在引擎盖下,我们使用gradlew获取依赖项和Android SDK工具dx来计算dex信息.我们以递归方式将该过程应用于库及其依赖项.我们还保留已经计算过的库的结果,以便加快后续请求的过程.
如果您使用的是Android Studio或IntelliJ,您只需安装插件即可将所有信息作为方便提示(插件也使用该服务).
Ben*_*Ben 13
回答一个老问题,我写了一个Gradle插件,它将在每个版本中报告APK中的方法数量.它使用与AOSP项目使用的相同的DEX解析代码.您可以在https://github.com/KeepSafe/dexcount-gradle-plugin找到它.
我很欣赏以上所有开发人员的工作,我总是很高兴有这么好的社区,但是自从Android工作室2.2 Google团队发布了APK分析器 - > https://developer.android.com/studio/build/apk-analyzer. HTML
现在我们都有内置工具来分析方法计数,我们的资源大小,甚至我们可以相互比较两个.apk文件.最后,我们都内置了这个工具.Android开发变得更容易,更容易.
顺便说一句:要查找您拥有的方法,请在Android Studio中打开.apk文件(仅支持2.2+),然后单击classes.dex文件.之后,您将能够在所有库和项目中查看方法计数.
| 归档时间: |
|
| 查看次数: |
17309 次 |
| 最近记录: |