私有方法会增加Android中的Dex Count吗?

私有方法会增加Android中的Dex Count吗?,第1张

概述我正在进行代码审查,并告诉某人删除仅使用过一次的私有方法.他们说这没关系,因为dex count不会因私有方法引用而增加.这是真的?我无法通过简单的谷歌搜索找到答案. 64k限制是对dex文件中唯一方法引用数的限制.方法引用由特定的类名,方法名和方法原型组成,并在您调用方法或声明/定义/覆盖方法时创建. 所以,是的,定义一个新的私有方法将添加一个方法引用到dex文件. 有关更多信息,请参阅:htt 我正在进行代码审查,并告诉某人删除仅使用过一次的私有方法.他们说这没关系,因为dex count不会因私有方法引用而增加.这是真的?我无法通过简单的谷歌搜索找到答案.解决方法 64k限制是对dex文件中唯一方法引用数的限制.方法引用由特定的类名,方法名和方法原型组成,并在您调用方法或声明/定义/覆盖方法时创建.

所以,是的,定义一个新的私有方法将添加一个方法引用到dex文件.

有关更多信息,请参阅:https://source.android.com/devices/tech/dalvik/dex-format.html和https://source.android.com/devices/tech/dalvik/dalvik-bytecode.html,它们是dex格式的主要参考.

“方法引用列表”是dex文件中method_ID_items的排序列表.例如在dex-format.html的“文件布局”部分中查找“method_IDs”.在页面的下方,method_ID_item被定义为由类引用,方法名称和方法原型组成.

class_data_item部分用于定义类定义的方法和字段. “direct_methods”和“virtual_methods”列表是method_IDs列表中的索引列表 – 这要求method_IDs列表中存在该方法的引用.

在dalvik-bytecode.html中,invoke- *指令使用方法索引来引用要调用的方法.

有趣的是,方法引用列表本身是用32位大小的值定义的(在dex-format.html中搜索“method_IDs_size”).因此,方法引用列表本身可以与4294967296条目一样大.

但是,当您需要引用任何这些方法时,问题就出现了. invoke- *指令仅使用16位来编码方法索引.

此外,class_data项中的方法引用可以达到完整的32位.因此,理论上你可以在dex文件中定义超过64k限制的方法,只要你从未真正尝试从该dex文件中调用它们.但它们仍然可以从另一个dex文件中调用.

总结

以上是内存溢出为你收集整理的私有方法会增加Android中的Dex Count吗?全部内容,希望文章能够帮你解决私有方法会增加Android中的Dex Count吗?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1122556.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-29
下一篇2022-05-29

发表评论

登录后才能评论

评论列表(0条)

    保存