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。
没有标准的位置,但是你可以使用PackageManager来查找包,你可以从ApplicationInfo类中获得关于特定包的各种信息:它的.apk路径,它的数据目录路径,只有资源的.apk路径(用于前向锁定应用程序),等等。请注意,你可能有或没有权限读取这些目录,这取决于你与其他应用程序的关系;然而,所有的应用程序都能够读取资源。apk(对于非前向锁定的应用程序来说,这也是真正的。apk)。
如果你只是在shell中闲逛,目前非前向锁定的应用程序位于/data/app/.apk中。shell用户可以读取特定的.apk,但不能列出目录。在未来的版本中,命名约定将略有改变,所以不要指望它保持不变,但如果您从包管理器中获得.apk的路径,那么您可以在shell中使用它。
当我在模拟器上安装我的应用程序时,它显示了我的.apk文件
< p >数据/应用程序 然后我用了 Ls data/app //查看它是否存在或 不是< / p >
安装应用程序后,只需使用ls命令vie shell并检查所需的目录,但这取决于你要安装的应用程序类型。我用这个方法安装 如果有什么地方不对就指出来。< / p >
如果你是根用户,下载应用程序根资源管理器。为根用户提供的最佳文件管理器。 不管怎样,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文件,请这样做:
你不需要根你的手机,使用adb,或写任何东西。
adb
如果你正在寻找一个特定应用程序的路径,一个快速而肮脏的解决方案是grep bugreport:
$ adb bugreport | grep 'dir=/data/app'
我不知道这将提供一个详尽的列表,所以它可能有助于首先运行应用程序。
使用此命令列出/data/app/下的所有。apks
adb bugreport | grep 'package name="' | grep 'codePath="/data' | cut -d'"' -f4
在根设备上获取无法找到的__abc0的另一种方法是使用ROM工具箱。
使用应用管理器进行备份,然后转到storage/emulated/appmanager并检查系统应用备份或用户应用备份。
storage/emulated/appmanager
要找到apk,请从Play商店下载并安装蓝牙应用程序发送器。安装完成后,打开蓝牙应用程序发送器。它将显示所有应用程序(.apk)安装在你的设备,然后你可以很容易地将应用程序通过蓝牙传输到你的PC。
apk
(.apk)
你可以通过adb shell使用包管理器(pm)来列出包:
adb shell
pm
adb shell pm list packages | sort
并显示.apk文件的位置:
.apk
adb shell pm path com.king.candycrushsaga package:/data/app/com.king.candycrushsaga-1/base.apk
和adb pull来下载apk。
adb pull
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
adb push
/data/local/tmp/
我们可以从调试输出中获得这些信息,如下所示。
$ adb install bin/TestApplication.apk 3155 KB/s (843375 bytes in 0.260s) pkg: /data/local/tmp/TestApplication.apk Success
系统如何保存apk
当然,系统必须将所有apk存储在某个地方。根据apks类型的不同,系统有三个存放apks的位置:
为股票应用程序
这些通常是由制造商在设备中提供的,包括系统运行的核心应用程序和谷歌服务,你可以在/system/app和/system/priv-app目录下找到它们。
/system/priv-app
用户安装的app
大多数apks都属于这一类。这些apk通常由用户从市场上安装,或者由没有-s选项的adb install安装。对于根设备,您可以在/data/app目录下找到它们。
-s
应用在sdcard上
如果apk在它的manifest中使用android:installLocation="auto"启用它在sdcard中的安装位置,应用程序可以从系统的应用程序管理器菜单中移动到sdcard。这些apks通常位于sdcard /mnt/sdcard/asec的安全文件夹中。
android:installLocation="auto"
/mnt/sdcard/asec
另一种强制安装位置到sdcard的方法是使用命令adb install -s apk-to-install.apk。
adb install -s apk-to-install.apk
需要注意的是,预安装app的文件不再在单个.apk文件中。对于最新的android版本,在/system/app或/system/priv-app目录中有一个文件夹包含每个预安装的应用程序的文件。
你可以从他们中的任何一个中拉。apks:
Adb pull /mnt/asec
.apk文件可以位于/data/app/目录下。使用ES文件资源管理器我们可以访问这些. apk文件。
Total Commander
Installed apps