【问题标题】:What is the difference between Defined Methods and Referenced Methods in Android studio Apk AnalyzerAndroid Studio Apk Analyzer中定义的方法和引用的方法有什么区别
【发布时间】:2016-05-26 12:47:39
【问题描述】:

android studio 2.2 preview 1 中的一个新功能是APK Analyzer 当你尝试它时,它会给你统计Defined MethodsReferenced Methods

示例输出:

这个 dex 文件定义了 4118 个类和 28823 个方法,以及引用 35206种方法

【问题讨论】:

  • AFAIK,“定义的方法”的意思是“你有代码的方法”,无论你是自己写的还是从库中获得的。 “引用的方法”是指您的代码引用的其他 DEX 文件(例如 Android SDK)中的方法。
  • 但是如何知道项目包含的方法总数?这是已定义 + Ref 的总和还是仅引用的方法计数?
  • "但是如何知道项目包含的方法总数?" - 这完全取决于您如何选择定义“包含”。我会将“包含”定义为已定义的方法,而不是引用的方法。例如,在 Windows 桌面程序中,您不会说您的应用程序包含所有 Windows,即使您调用了 Windows SDK 中的函数。您甚至不会说您的应用程序包含您调用的那些 Windows SDK 函数。同样,您在 Android SDK 中调用(“引用”)方法这一事实并不意味着您的应用包含这些方法。
  • 然而,这一切都是基于一些有根据的猜测。这没有记录在案,希望在 Android Studio 2.2 发布到发布渠道时以官方形式对此进行解释。
  • 啊,我明白了,谢谢!

标签: android android-studio-2.2


【解决方案1】:

定义的方法是您编写的或根据给定情况正确使用的方法。如果引用了某个方法,则仅表示您(或代码中的其他方法/对象)正在调用它们。然而,仅仅因为一个方法被引用并不意味着它们是为它定义的任何东西,或者它可能被错误地定义。例如,如果您使用的开源库可能安装不正确(我已经这样做了太多次),您将获得大量没有为它们定义的引用方法。希望对您有所帮助!

【讨论】:

    【解决方案2】:

    我知道这是一个旧答案,但我只会粘贴官方网站上这两个术语的含义以及计入 64k 限制的内容。

    DEX 文件中的每个包、类和方法都在“定义的方法”和“引用的方法”列中列出了计数。 Referenced Methods 列计算 DEX 文件引用的所有方法。这通常包括代码中定义的方法、依赖库以及代码使用的标准 Java 和 Android 包中定义的方法——这些方法计入每个 DEX 文件中的 64k 方法限制。已定义方法列仅计算在您的一个 DEX 文件中定义的方法,因此该数字是引用方法的子集。

    参考:https://developer.android.com/studio/build/apk-analyzer#view_dex_files

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-29
      • 2017-07-19
      • 1970-01-01
      • 2016-05-12
      相关资源
      最近更新 更多