【问题标题】:Where application icons are stored in an Android device?应用程序图标存储在 Android 设备中的什么位置?
【发布时间】:2014-07-11 16:15:26
【问题描述】:

出于好奇,我想知道应用程序图标存储在 Android 设备文件系统的哪个位置。

就像我在设备的主屏幕上有各种应用程序的快捷方式一样,这些图标文件(或图像)存储在其中。它是仅在应用程序包 (.apk) 中还是 Android 将其存储在其他地方?

如果它在应用程序包中,Android 是否会从每个 apk 加载所有图像并在第一次启动时加载它?

【问题讨论】:

    标签: android shortcuts android-icons


    【解决方案1】:

    安装应用程序文件时,启动器会分析 .apk 文件并提取各种信息。 (此过程不涉及加载和运行应用程序本身。)其中包括应用程序图标,启动器通常将其缓存在其自己的私有区域中。具体如何完成取决于您设备上当前处于活动状态的启动器。您也许可以浏览启动器的源代码,以了解有关它如何缓存从应用程序 .apk 文件中提取的这些项目的更多详细信息,但我不确定该练习有什么实际用途。

    启动器使用自己的缓存大大加快了启动速度,否则每次重新启动时都必须扫描每个已安装的应用程序,以提取启动器显示自身所需的信息。但是,缓存是偶尔出现问题的根源,例如安装更新的应用程序(带有新图标和可能的新应用程序名称)时图标不会立即更新。 (例如,请参阅 this threadthis one。)

    【讨论】:

    • 据我了解,启动器也应该是一个带有 .apk 文件的应用程序。我在哪里可以找到那个 apk 文件?
    • @Mayank - 这取决于它是如何安装的。系统应用程序保存在 /system/app 中。用户安装的应用程序位于 /data/app。默认启动器是系统应用,但设备可能正在运行用户安装的启动器。
    • 在我的设备中,我只使用默认启动器,并且我已经在我的 Android 设备中使用文件管理器应用程序检查了目录/system/app,现在那里有这样的launcher 应用程序
    • @Mayank - 您运行的是哪个版本的 Android?更新的 API 级别具有更高级别的隐私保护,您的文件管理器应用程序可能无权查看那里的文件。尝试通过adb shell 连接。在我的设备上(运行 4.1.2),它是/system/app/Launcher2.apk
    • @Mayank - 啊。 KitKat 带有一个全新的启动器。我不知道系统附带的 .apk 被称为什么。该启动器可从第三方站点获得,该文件名为 GoogleHome.apk,但在我的模拟器中(我没有 4.4.2 设备),我无法在该名称下找到它。但它就在某个地方。
    【解决方案2】:

    想想当您创建自己的应用时会发生什么。通常,您为您的应用程序为所有可绘制资源桶(或至少您想要支持的那些)创建图标。然后这些文件与 AAPT 一起打包到项目的其余部分的 apk 中。然后在安装您的应用程序后,操作系统将选择与您的手机配置匹配的图标,并在您已安装的应用程序页面上创建一个快捷方式。

    【讨论】:

    • 但应用图标在应用首次启动前出现在已安装应用页面上
    • 我的问题是快捷方式在Android的文件系统上是如何物理体现的
    • 图标位于每个应用程序的 .apk 中。
    猜你喜欢
    • 2012-06-04
    • 2011-05-14
    • 2014-06-29
    • 2011-01-27
    • 1970-01-01
    • 1970-01-01
    • 2021-01-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多