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

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


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


你可以用ADB拉应用。它们应该在/data/App/中。

adb pull (location on device) (where to save)

请注意,你必须根你的手机拉复制保护的应用程序。


预安装的应用程序在/system/app文件夹下。用户安装的应用程序在/data/app中。我猜除非你的手机有根密码,否则你无法访问。 我没有一个根电话在这里,但尝试这段代码:

public class Testing extends Activity {
    private static final String TAG = "TEST";
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        File appsDir = new File("/data/app");

        String[] files = appsDir.list();

        for (int i = 0 ; i < files.length ; i++ ) {
            Log.d(TAG, "File: "+files[i]);

        }
    }

它确实列出了apks在我的根htc魔术和在emu。


There is no standard location, however you can use the PackageManager to find out about packages and the ApplicationInfo class you can get from there has various information about a particular package: the path to its .apk, the path to its data directory, the path to a resource-only .apk (for forward locked apps), etc. Note that you may or may not have permission to read these directories depending on your relationship with the other app; however, all apps are able to read the resource .apk (which is also the real .apk for non-forward-locked app).

如果你只是在shell中闲逛,目前非前向锁定的应用程序位于/data/app/.apk中。shell用户可以读取特定的.apk,但不能列出目录。在未来的版本中,命名约定将略有改变,所以不要指望它保持不变,但如果您从包管理器中获得.apk的路径,那么您可以在shell中使用它。


当我在模拟器上安装我的应用程序时,它显示了我的.apk文件

数据/应用 然后我用了 Ls data/app //查看它是否存在或 不

安装应用程序后,只需使用ls命令vie shell并检查所需的目录,但这取决于你要安装的应用程序类型。我使用这种方法安装 如果有什么地方不对就指出来。


如果你是根用户,下载根资源管理器。为根用户提供的最佳文件管理器。 不管怎样,System/app有手机自带的所有默认apk, data/apk有你已经安装的所有应用的apk。只要长按你想要的apk(在根资源管理器中),找到你的/sdcard文件夹,然后粘贴。


预安装的应用程序通常在/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)。


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


如果你只是想获得你之前安装的东西的APK文件,请这样做:

从谷歌Play获取AirDroid 使用AirDroid从您的PC网络浏览器访问您的手机 进入应用程序,选择已安装的应用程序 点击“下载”按钮,从您的手机下载此应用程序的APK版本

您不需要对您的手机进行根操作,不需要使用adb,也不需要编写任何东西。


如果你正在寻找一个特定应用程序的路径,一个快速而肮脏的解决方案是grep bugreport:

$ adb bugreport | grep 'dir=/data/app' 

我不知道这将提供一个详尽的列表,所以它可能有助于首先运行应用程序。


使用此命令列出/data/app/下的所有。apks

adb bugreport | grep 'package name="' | grep 'codePath="/data' | cut -d'"' -f4

另一种在根设备上找不到apks的方法是使用rom工具箱。

使用应用程序管理器进行备份,然后转到storage/emulated/appmanager,检查系统应用程序备份或用户应用程序备份。


要找到apk,请从Play商店下载并安装蓝牙应用程序发送器。安装完成后,打开蓝牙应用程序发送器。它会显示所有的应用程序(.apk)安装在你的设备,然后你可以很容易地将应用程序通过蓝牙传输到你的电脑。


你可以在adb shell上使用包管理器(pm)来列出包:

adb shell pm list packages | sort

要显示.apk文件的位置:

adb shell pm path com.king.candycrushsaga
package:/data/app/com.king.candycrushsaga-1/base.apk

和adb拉来下载apk。

adb pull data/app/com.king.candycrushsaga-1/base.apk

与所选答案上所写的相反,你不需要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版本的每个预安装应用程序的文件。


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

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

Adb pull /mnt/asec


.apk文件可以位于/data/app/目录下。使用ES文件资源管理器,我们可以访问这些。apk文件。


我来这篇文章是因为我想重新安装一些我很喜欢的应用程序。 如果这是你的情况,只要去谷歌播放,然后找到我的应用程序,标签全部,你会找到一种方法重新安装你喜欢的应用程序。我遇到了一个问题,我无法通过搜索一个应用程序找到,但它在我的应用程序中,所以我可以重新安装到我的新手机;)


安装Total Commander。 在主页面打开已安装的应用程序。