Answers:
它应该位于/data/app/
。如果您具有root用户,则可以直接访问它。如果不是,则必须使用adb pull
。例如:
亚行拉/data/app/myapp.apk C:\ backup \ myapp.apk
有关adb的更多信息:http : //developer.android.com/guide/developing/tools/adb.html
如果您知道apk 的安装文件名(在某些设备上可能是myapp-1.apk或myapp-2.apk而不是myapp.apk),则可以以普通用户的身份直接访问该文件,包括adb在受保护的设备上,因此您应该能够adb拉它。但是,如果您不知道已安装的 apk名称,则无法在没有root或aid_system的情况下浏览/ data / app目录。
也许值得猜测一下已安装的名称-简单地尝试使用-1.apk和-2.apk进行尝试,等等。
可能还有另一种方式:我相信以下内容将在受保护的设备上工作,但目前尚无测试方法。
编辑:确定确切的APK文件名的新思路
1)亚行拉/数据/系统/packages.xml
2)通过它查找应用程序的codePath条目
3)亚行拉
编辑:关于下面的旧想法,马修(Matthew)发现,虽然/ proc下的每个进程文件都具有对受保护设备的读取权限,但是当由其所有者以外的非特权uid读取时,它们为空。所以这行不通。
1)使您的应用程序运行。您还需要一台带有adb的计算机。
2)类型
adb shell ps
并查找带有您的应用名称的行:
app_1 11959 907 112984 27580 ffffffff afd0c5bc S com.clevername.myapp
3)在第二列中获取进程ID,并查看其虚拟内存映射,在这种情况下,我将输入
adb shell cat /proc/11959/maps
并查找将自己的apk文件映射到内存的行
43e9c000-43ea3000 r--s 001f4000 b3:06 15393 /data/app/com.clevername.myapp-1.apk
4)这是您需要adb pull的文件名
adb pull /data/app/com.clevername.myapp-1.apk .
检查/ proc中的目录权限表明,这应适用于非特权用户,如果不能,我深表歉意。如果您熟悉'grep'的用法,可以使用它来避免手动扫描输出。
附录:我不太确定安装到SD卡上的应用程序的故事是什么。
adb shell cat /proc/####/maps
不幸的是,它什么也没有返回。