macOS 如何通过包标识符定位应用程序?

问题描述

absolutePathForAppBundleWithIdentifierURLForApplicationWithBundleIdentifier 是 API 调用,它们接收包标识符并返回声明该标识符的应用程序的路径。这是如何工作的?

  • 有缓存吗?
    • 它在哪里?
    • 它是什么格式?
    • 什么更新了这个缓存?
    • 我可以直接从命令行查询这个缓存吗?
  • 如果有多个具有相同标识符的捆绑包,例如同一应用的多个版本或两个应用发生 id 冲突,会发生什么情况?

解决方法

您正在寻找Launch Services。 macOS 的这一部分维护应用程序数据库,正如您将在文档中读到的那样,Finder 本身使用它。 HTH