回答
预安装的应用程序位于/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]);
}
}
它确实列出了我的根的HTC Magic和鸸鹋的的apk。
在/数据/应用程序,但复制保护我不认为你可以访问它。
那么,通过蓝牙允许共享APK的应用程序究竟如何工作?他们是如何做到的呢? – 2014-09-27 08:19:03
您可以使用ADB提取应用程序。他们在/ data/App /中,我相信。
adb pull (location on device) (where to save)
请注意,您必须根据您的手机拉动受复制保护的应用程序。
没有标准位置,但是您可以使用PackageManager查找有关包的信息,并且您可以从中获取的ApplicationInfo类具有有关特定包的各种信息:.apk路径,其数据路径目录,仅资源.apk(用于转发锁定的应用程序)的路径等。请注意,根据您与其他应用程序的关系,您可能有也可能没有权限读取这些目录;但是,所有应用程序都能够读取资源.apk(这也是非前向锁定应用程序的实际.apk)。
如果您只是在shell中探索,目前非向前锁定的应用程序位于/data/app/.apk。 shell用户可以读取特定的.apk,但它不能列出目录。在将来的版本中,命名约定会稍微改变,所以不要指望它保持不变,但是如果从包管理器中获得.apk的路径,则可以在shell中使用它。
什么是“前进锁定应用程序”? – 2012-05-04 19:55:45
这是一个旧的复制保护机制,它安装了带有只允许该应用程序读取它的权限的.apk。 – hackbod 2012-05-13 16:35:39
当我安装我的模拟器的应用程序,它显示我的.apk文件中
数据/应用 然后我用 LS数据/应用//看看是否存在或不
安装完应用程序后,只需使用ls命令vie shell并检查所需的目录,但这取决于您尝试安装的应用程序类型。我用这个方法去Install 如果有什么事情是错的话点。
我也试图找到apks,但我发现的是,你不能找到所有的apks因此我建议的生根方法。我无法获得所有安装的apks。因此,最好根植您的手机,并使用Titanium Backup获取所有文件,并获得对手机的更多控制权。 – 2011-10-28 12:46:27
如果您已经扎根,请下载应用程序Root Explorer。最佳文件管理器,用于有根用户。 无论如何,系统/应用程序具有手机随附的所有默认功能,而数据/ apk包含您已安装的所有应用程序的所有功能。只需长按你想要的apk(在Root Explorer中),进入你的/ 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
}
您还可以找到将提供此类信息的应用程序。有很多。 Try this one (AppSender).
,如果使用的是Eclipse转到DDMS,然后资源管理器在那里你会看到系统/应用程序文件夹和的APK有
如果你只是想了解你以前安装的东西的APK文件,这样做:
- 得到谷歌AirDroid播放
- 访问使用AirDroid从您的电脑网络浏览器手机
- 转到应用和选择安装的应用程序
- 点击“下载”按钮,从您的手机
你并不需要Root权限的手机,使用adb
,或写什么下载这个应用程序的APK版本。
在osx上也很棒,谢谢! – jamescampbell 2017-10-14 20:16:35
Downvoted,因为这并没有真正回答这个问题。如果OP想要使用ADB,那么它可以在授权调试的设备上使用,但忘记密码或屏幕破裂。 – Penn 2017-10-18 18:53:10
如果你正在寻找一个特定的应用程序的路径,一个快速和肮脏的解决方法就是用grep的错误报告:
$ adb bugreport | grep 'dir=/data/app'
我不知道,这将提供一个详尽的清单,所以它可能有助于首先运行该应用程序。
使用此列出所有.apks在/ data/app中/
adb bugreport | grep 'package name="' | grep 'codePath="/data' | cut -d'"' -f4
另一种方式来获得apk
是你无法找到,在扎根设备是ROM工具箱。
使用应用程序管理器,然后去storage/emulated/appmanager
和检查或者系统的应用程序备份或用户的应用程序备份做一个备份。
要找到apk
,请从Play商店下载并安装蓝牙应用程序发件人。安装完成后,打开蓝牙应用程序发件人。它将显示安装在您设备上的所有应用程序(.apk)
,然后您可以通过蓝牙轻松将应用程序传输到您的PC。
您可以使用包管理器(pm
)在adb shell
列出包:
adb shell pm list packages
,并显示在.apk
文件是:
adb shell pm path com.king.candycrushsaga
package:/data/app/com.king.candycrushsaga-1/base.apk
而且adb pull
下载APK。
adb pull data/app/com.king.candycrushsaga-1/base.apk
这应该是被接受的答案。 – 2016-06-28 00:33:24
很棒的回答。这是一种魅力。 – 2016-07-21 13:02:19
应该被接受 – Penn 2017-10-18 18:53:29
就象反对的书面所选择的答案,你并不需要root并且可以得到安装的应用程序的APK的,这是多么我已经做到了我的应用程序(here) 。例如:
List<PackageInfo> packages=getPackageManager().getInstalledPackages(0);
然后,每个列表的项目,您可以访问packageInfo.applicationInfo.sourceDir,这是安装的应用程序的APK的完整路径。
从市场
安装这是市场是否保留APK安装后的行为。安装后,Google Play不会保留apk。其他第三方市场可能有不同的行为。
从开发/调试工具(ADB,日食,机器人工作室)安装
当我们安装从调试工具的APK,直接调用adb install
或日食/ Android的工作室,在APK将被转移(adb push
)到公共的可读写目录,通常为/data/local/tmp/
。之后,该工具将使用pm
命令进行安装,它将在安装成功后删除临时apk /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
找到他们。
- 用户安装的应用
- 应用程序,该应用程序可以被移动从系统的应用程序管理器菜单到SD卡。这些apks通常位于sdcard
/mnt/sdcard/asec
的安全文件夹中。另一种强制安装位置到SD卡的方法是使用命令
adb install -s apk-to-install.apk
。请注意,预安装应用程序的文件不再在单个
.apk
文件中。有一个文件夹包含目录/system/app
或/system/priv-app
中最新的android版本中每个预装应用程序的文件。
大多数的apk的属于这一类。这些功能通常由用户通过市场进行安装,或者在没有-s
选项的情况下通过adb install
进行安装。您可以在目录/data/app
的根目录设备下找到它们。
-
上SD卡
如果APK使其与在其清单android:installLocation="auto"
SD卡安装位置
- 数据/应用
- 系统/应用
- 系统/ PRIV应用内
- MNT/ASEC(安装在SD卡时)
可以从任何的拉.apks他们:
adb pull/mnt/asec
从[AndroidAPKsGet](http://androidapksget.blogspot.com)下载android apk文件。 – NomanJaved 2017-11-04 23:42:58
.apk文件可以位于/ data/app /目录下。使用ES文件浏览器我们可以访问这些.APK文件。
嗯,我来到这篇文章,因为我想重新安装一些我很喜欢的应用程序。 如果这是您的情况,只需转到Google Play,然后查找“我的应用程序”,选项卡全部,然后您将找到重新安装您喜欢的某个应用程序的方法。我遇到了一个我无法通过搜索一个应用程序找到的问题,但它存在于我的应用程序中,因此我可以在我的新手机中重新安装;)
- 1. hibernate是否保留LinkedHashSet的顺序,如果是这样,怎么办?
- 2. Android:是否可以检查该文件是否是一个apk文件,如果没有扩展提供
- 3. 这是否会导致保留周期?
- 4. clojure是否允许线延续?如果是这样,怎么样?
- 5. 在另一个apk文件中保留一个apk文件
- 6. 如果您有IBOutlet,但不是属性,是否保留?
- 7. 保护Android Apk文件
- 8. “初始化”,这是保留
- 9. 是否有.apk文件的IOS
- 10. 这个JSON是否正确,如果是这样的话如何遍历JavaScript中的每个对象 - Asp .Net 3.5
- 11. 检查用户名是否存在,如果是这样,一个
- 12. ç打开文件来检查它是否是二进制的,如果是这样打印是二进制
- 13. 不[UIWindow addSubView:]是否保留?
- 14. NSUndoManager是否保留对象?
- 15. NSTimer是否自动保留?
- 16. 是否可以在XML文件的多行中分割字符串?如果是这样,怎么样?
- 17. 看看某些文本是否在URL中,如果是这样的话,通过javascript动态打印东西
- 18. 我是否需要任何规则引擎来构建像ifttt.com这样的服务(如果这样的话)?
- 19. “样式”是JavaScript中的保留字吗?
- 20. 检查是否存在,如果是这样,更新1 ++,如果不插入
- 21. 检查文本框是否已更改。如果是这样,更新字段。
- 22. 如何检查特定的呼叫是否在android中保留?
- 23. 是否GCM设备ID会过期,如果是这样的如何解决这个为Android
- 24. 是否可以一次将Xcode扩展应用于多个源文件?如果是这样,怎么样?
- 25. 是否有可能整合Vaadin与Rails?如果是这样,怎么样?
- 26. 是否可以在WPF中使用Kit3D?如果是这样,怎么样?
- 27. Android,是否可以合并两个APK文件?
- 28. 是否可以反编译Android .apk文件?
- 29. 如果注册表项存在,如果是这样做,如果不这样做
- 30. 你的配置文件是否保留在版本控制中?
这工作就像在摩托罗拉Droid魅力和Nexus One两个都没有根。 – Gubatron 2010-03-25 18:12:39
好吧,你从来没有说过你想要他们:) – Macarse 2010-03-26 01:11:35
我希望能够阅读他们,并与他们做事。幸运的是它们是可读的。 – Gubatron 2010-03-26 14:34:28