android从Marketplace安装应用程序后,是否保留。apk文件?

Android是否有一个保存这些文件的标准位置?


当前回答

数据/应用 系统/应用程序 系统/ priv-app Mnt /asec(当安装在sdcard时)

你可以从他们中的任何一个中拉。apks:

Adb pull /mnt/asec

其他回答

如果你使用eclipse goto DDMS,然后文件资源管理器,你会看到System/Apps文件夹和apks在那里

在/data/app中,但出于复制保护,我认为你不能访问它。

预安装的应用程序通常在/system/app中,用户安装的应用程序在/data/app中。

你可以使用“adb pull”,但是你需要知道APK文件的完整路径。在模拟器上,您可以使用"adb shell" + "ls"获得目录列表。但在android设备上,由于安全原因,您将无法在“/data”文件夹中这样做。那么如何找出APK文件的完整路径呢?

你可以通过编写一个查询PackageManager的程序来获得所有已安装应用程序的完整列表。下面是简短的代码片段:

PackageManager  pm = getPackageManager();
List<PackageInfo> pkginfo_list = pm.getInstalledPackages(PackageManager.GET_ACTIVITIES);
List<ApplicationInfo> appinfo_list = pm.getInstalledApplications(0);
for (int x=0; x < pkginfo_list.size(); x++){             
  PackageInfo pkginfo = pkginfo_list.get(x);
  pkg_path[x] = appinfo_list.get(x).publicSourceDir;  //store package path in array
}

你也可以找到提供这类信息的应用程序。他们有很多。试试这个(AppSender)。

与所选答案上所写的相反,你不需要root,并且可以获得已安装应用程序的apk,这就是我在我的应用程序上所做的(这里)。例子:

List<PackageInfo> packages=getPackageManager().getInstalledPackages(0);

然后,对于列表中的每一项,您都可以访问packageInfo.applicationInfo。sourceDir,这是已安装应用的APK的完整路径。

从市场安装

安装后是否保留apk是市场的行为。谷歌播放安装后不保留apk。其他第三方市场可能有不同的行为。

从开发/调试工具(adb, eclipse, android studio)安装

当我们从调试工具安装apk时,直接调用adb install或从eclipse/android studio安装apk, apk将被传输(adb push)到一个公共的可读写目录,通常是/data/local/tmp/。之后,工具会使用pm命令进行安装,安装成功后会删除/data/local/tmp/目录下的临时apk。

我们可以从调试输出中获得这些信息,如下所示。

$ adb install bin/TestApplication.apk 
3155 KB/s (843375 bytes in 0.260s)
    pkg: /data/local/tmp/TestApplication.apk
Success

系统如何保存apk

当然,系统必须将所有apk存储在某个地方。根据apks类型的不同,系统有三个存放apks的位置:

for stock app Those are usually shipped in device by manufacture, including core app for system running and google service, you can find them under directory /system/app and /system/priv-app. user installed app Most of the apks fall into this category. These apks are usually installed from marketplace by users or by adb install without -s option. You can find them under the directory /data/app for a rooted device. app on sdcard If the apk enable its install location in sdcard with android:installLocation="auto" in its manifest, the app can be moved to sdcard from system's app manager menu. These apks are usually located in secure folder of sdcard /mnt/sdcard/asec. Anther way to force the install location to sdcard is using the command adb install -s apk-to-install.apk.

需要注意的是,预装app的文件不再是一个.apk文件。在/system/app或/system/ pve -app目录下有一个文件夹,包含最新的android版本的每个预安装应用程序的文件。