应用程序可执行代码如何以及在何处存储在设备中?

时间:2015-08-10 18:50:27

标签: android

数据/ data / myapp / ...内部是否存储了可执行代码?它是如何存储的,是否存储为dex代码?

2 个答案:

答案 0 :(得分:2)

开始

<强>,其中

使用adb和run pm path here-goes-package-name命令连接到您的设备。像这样:

$ adb shell
root@vbox86p:/ # pm path pl.pelotasplus.wptv
package:/data/app/pl.pelotasplus.wptv-1/base.apk

这将是您设备上.apk的路径。

某些应用(如系统应用)位于/system/app目录或/system/priv-app/

root@vbox86p:/data # pm path com.google.android.partnersetup
package:/system/priv-app/GooglePartnerSetup/GooglePartnerSetup.apk

并回答你问题的第二部分

如何

它们只是.apk文件,基本上是ZIP文件。因此,如果您使用unzip -l命令,您将看到应用程序的代码保存在上述.apk文件中的.dex文件中

root@vbox86p:/data # unzip -l /system/priv-app/GooglePartnerSetup/GooglePartnerSetup.apk | grep .dex   <
276104  08-21-08 17:13   classes.dex

有时可能会有多个.dex文件 - 欢迎来到Multi-Dex世界!

<强>缓存

还有一种称为dalvik缓存的东西,其中.dex文件是出于性能原因而保留的。

root@vbox86p:/ # ls -al ./data/dalvik-cache/x86/data@app@pl.pelotasplus.actionafteruninstall-1@base.apk@classes.dex
rw-r--r-- system   all_a102  4690352 2015-05-31 20:17 data@app@pl.pelotasplus.actionafteruninstall-1@base.apk@classes.dex

答案 1 :(得分:1)

<强>其中吗

系统预设应用位于/system/app。普通应用程序位于/data/app。它们存储为.apk个文件,这些文件是简单的ZIP文件类型。也可以通过解压缩来访问.dex个文件。该.dex文件的名称为classes.dex

如何吗

每当您安装新应用时,Android都会在那里简单地复制该APK文件。此外,在ART中,Android还会将应用程序字节代码编译为本机设备代码,并将这些代码保存在某处。

  

与Dalvik不同,ART通过在安装时将整个应用程序编译为本机机器代码来引入使用提前(AOT)编译。

我如何访问?

通过ADB(Android调试桥),您可以access Android file system