数据/ data / myapp / ...内部是否存储了可执行代码?它是如何存储的,是否存储为dex代码?
答案 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。