我如何得到一个安装的应用程序的APK没有root权限?我如何得到一个安装的应用程序的APK没有roo

2019-06-01 00:41发布

我试图提取安装Android应用的APK文件,而无需root权限。

我认为这是不可能的,因为对于非系统应用的所有APK文件位于/数据/应用程序,并访问该文件夹需要root权限。 后来我发现,有在谷歌Play商店的应用程序众多,似乎有机会获得APK文件甚至在非root权限的设备。

谁能告诉我这怎么可能? 是不是有备份软件的备份没有根的APK文件?

Answer 1:

访问/数据/应用程序是可能的,而不根许可; 在该目录上的权限是rwxrwx - X。 执行权限上的目录意味着你可以访问它,但是缺乏读取权限的意味着你不能获得其内容的列表 - 因此,为了访问它,你必须知道你将要访问的文件的名称。 Android的包管理器会告诉你存储的APK的名称给定包。

要通过命令行执行此操作,使用adb shell pm list packages获得安装的软件包列表,找到所需的包。

随着包名,我们可以用得到APK的实际文件名和位置adb shell pm path your-package-name

并且知道完整的目录,我们终于可以用拉ADB adb pull full/directory/of/the.apk

感谢@tarn用于指出棒棒糖下的APK路径将是/data/app/your-package-name-1/base.apk



Answer 2:

Android的附加一个序列号给包名来产生最终的APK文件名(这是可能的,这与Android操作系统的版本而异)。 下面的命令序列工作的无根设备上:

  1. 获取所需的包的APK文件的全路径名。

     adb shell pm path com.example.someapp 

    这使输出为: package:/data/app/com.example.someapp-2.apk

  2. 从Android设备的APK文件拉动的发展框。

     adb pull /data/app/com.example.someapp-2.apk 


Answer 3:

你不需要ROOT权限获取安装的应用程序列表。

您可以与Android PackageManager做到这一点。

下面是一个小的代码段。

final PackageManager pm = getPackageManager();
//get a list of installed apps.
List<ApplicationInfo> packages =  pm.getInstalledApplications(PackageManager.GET_META_DATA);

for (ApplicationInfo packageInfo : packages) {
    Log.d(TAG, "Installed package :" + packageInfo.packageName);
    Log.d(TAG, "Apk file path:" + packageInfo.sourceDir);
}


Answer 4:

  1. 检查已安装apk的列表(以下命令也列出其安装路径和包名)。 亚行外壳下午清单包-f
  2. 使用adb拉/ package_path /包名称/ path_in_pc(包路径和包名可以从上面的命令1.获得)


Answer 5:

当安装了Android的研究与开发你的Eclipse:

  • 使用设备为调试设备。 在您的手机:设置>应用程序>开发并启用USB调试,看到http://developer.android.com/tools/device.html
  • 在Eclipse中,打开DDMS窗口:窗口>打开透视图>其他...> DDMS,看到http://developer.android.com/tools/debugging/ddms.html
  • 如果你不能看到你的设备试(重新)安装USB驱动器为您的设备
  • 在中间窗格中选择选项卡“资源管理器”,然后转到系统>应用
  • 现在,你可以选择一个或多个文件,然后单击“拉从设备中的文件”图标,在顶部(右边的选项卡)
  • 选择目标文件夹 - 田田!


Answer 6:

在牛轧糖(7.0)的Android版本上运行adb shell pm list packages列出安装在设备上的包。 然后运行adb shell pm path your-package-name ,以显示APK的路径。 之后利用亚行复制软件包下载总数adb shell cp /data/app/com.test-1/base.apk /storage/emulated/0/Download 。 然后通过运行从拉下载APK到你的机器adb pull /storage/emulated/0/Download/base.apk



Answer 7:

清单PackageManager.getInstalledApplications()会给你安装的应用程序的列表,并ApplicationInfo.sourceDir是路径.apk文件。

// in oncreate
   PackageManager pm = getPackageManager(); 
   for (ApplicationInfo app : pm.getInstalledApplications(0)) {
 Log.d("PackageList", "package: " + app.packageName + ", sourceDir: " + app.sourceDir);
 }

//output is something like
D/PackageList(5010): package: com.example.xmlparse, sourceDir: /data/app   /com.example.xmlparse-2.apk
D/PackageList(5010): package: com.examples.android.calendar, sourceDir: /data/app/com.examples.android.calendar-2.apk
D/PackageList(5010): package: com.facebook.katana, sourceDir: /data/app/com.facebook.katana-1.apk
D/PackageList(5010): package: com.facebook.samples.profilepicture, sourceDir: /data/app/com.facebook.samples.profilepicture-1.apk
D/PackageList(5010): package: com.facebook.samples.sessionlogin, sourceDir: /data/app/com.facebook.samples.sessionlogin-1.apk
D/PackageList(5010): package: com.fitworld, sourceDir: /data/app/com.fitworld-2.apk
D/PackageList(5010): package: com.flipkart.android, sourceDir: /data/app/com.flipkart.android-1.apk
D/PackageList(5010): package: com.fmm.dm, sourceDir: /system/app/FmmDM.apk
D/PackageList(5010): package: com.fmm.ds, sourceDir: /system/app/FmmDS.apk


Answer 8:

我找到了一种方法在非根设备获得的APK软件包名称。 它不是那么优雅,但工程所有的时间。

第1步 :您的设备上,打开目标APK

第2步 :在PC cmd窗口,输入此命令:

 adb shell dumpsys activity a > dump.txt

因为这个命令的输出众多,重定向到文件建议。

第3步 :打开任何编辑这个文件dump.txt。

用于设备befor Android 4.4的:
该文件的开头将是这样的:

ACTIVITY MANAGER ACTIVITIES (dumpsys activity activities)  
  Main stack:  
  * TaskRecord{41aa9ed0 #4 A com.tencent.mm U 0}  
    numActivities=1 rootWasReset=true userId=0  
    affinity=com.tencent.mm  
    intent={act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10600000 cmp=com.tencent.mm/.ui.LauncherUI}  
    realActivity=com.tencent.mm/.ui.LauncherUI  
    askedCompatMode=false  
    lastThumbnail=null lastDescription=null  
    lastActiveTime=19915965 (inactive for 10s)  
    * Hist #9: ActivityRecord{41ba1a30 u0 com.tencent.mm/.ui.LauncherUI}  
        packageName=com.tencent.mm processName=com.tencent.mm 

包名是在第3行,com.tencent.mm的这个例子。

对于Android 4.4及更高版本:
该dumpsys产量变化不大。 尝试搜索“堆栈#1”,包的名称将是非常接近它下面。

此外,搜索“基本目录”,你会发现apk文件的完整路径!



Answer 9:

我得到了一个does not exist error

这是我如何做它的工作原理:

adb shell pm list packages -f | findstr zalo

package:/data/app/com.zing.zalo-1/base.apk=com.zing.zalo

adb shell

mido:/ $ cp /data/app/com.zing.zalo-1/base.apk /sdcard/zalo.apk
mido:/ $ exit


adb pull /sdcard/zalo.apk Desktop

/sdcard/zalo.apk: 1 file pulled. 7.7 MB/s (41895394 bytes in 5.200s)


Answer 10:

打开ES浏览器 - >在左上角按菜单按钮(三个横条纹) - 在图书馆节>选择应用程序。

因此,你得到所有用户的应用程序列表。 发现自己的应用,并与它长推选择它。 然后按在右低的角落“更多”,然后选择“发送”。 然后你可以使用不同的选项,例如,你可以选择“ES保存到”以.apk文件文件保存到你的主目录或其他地方。



Answer 11:

或者,你可以从谷歌 “蓝牙文件传输” 播放 ,并设置主文件夹/system/ 。 然后,你甚至可以去/



文章来源: How do I get the APK of an installed app without root access?
标签: android root apk