我试图提取一个安装的Android应用程序的APK文件没有根权限。

我认为这是不可能的,因为所有非系统应用程序的APK文件都位于/data/app中,访问这个文件夹需要root权限。然后我发现谷歌Play商店中有许多应用程序似乎可以在非根设备上访问APK文件。

谁能告诉我这是怎么回事?难道没有备份程序可以备份APK文件吗?


当前回答

通过免费和开源的Ghost Commander应用程序可以获得已安装应用程序的APK文件,该应用程序可在F-Droid和Play Store上使用。

在幽灵指挥官应用程序中,进入应用程序,然后简单地长按列表中的应用程序并选择复制。.apk文件将在其他文件面板中可用;你可以把它放在任何你想要的地方。

请注意,由于Ghost Commander是一个双面板的文件管理器,你首先必须使用另一个面板并在那里打开一个文件夹(这是我们想要复制apk文件的地方)。然后,转到另一个面板,选择应用程序。

(如果你没有看到“应用程序”,首先点击箭头,选择主页。)

链接:

https://f-droid.org/packages/com.ghostsq.commander/ https://sourceforge.net/projects/ghostcommander/ https://play.google.com/store/apps/details?id=com.ghostsq.commander

其他回答

当你安装了Eclipse for Android开发时:

Use your device as debugging device. On your phone: Settings > Applications > Development and enable USB debugging, see http://developer.android.com/tools/device.html In Eclipse, open DDMS-window: Window > Open Perspective > Other... > DDMS, see http://developer.android.com/tools/debugging/ddms.html If you can't see your device try (re)installing USB-Driver for your device In middle pane select tab "File Explorer" and go to system > app Now you can select one or more files and then click the "Pull a file from the device" icon at the top (right to the tabs) Select target folder - tada!

我找到了一种在非根设备中获取APK包名的方法。 虽然不是很优雅,但是一直都很好用。

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

第二步:在PC的cmd窗口,输入以下命令:

 adb shell dumpsys activity a > dump.txt

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

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

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 

包名在第三行,本例中为com.tencent.mm。

Android 4.4及以上版本: dumpsys的输出发生了一些变化。 尝试搜索“Stack #1”,包名会在它下面很近的地方。

另外,搜索“baseDir”,你会找到apk文件的完整路径!

我得到了一个不存在的错误

以下是我如何做到的:

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)

通过免费和开源的Ghost Commander应用程序可以获得已安装应用程序的APK文件,该应用程序可在F-Droid和Play Store上使用。

在幽灵指挥官应用程序中,进入应用程序,然后简单地长按列表中的应用程序并选择复制。.apk文件将在其他文件面板中可用;你可以把它放在任何你想要的地方。

请注意,由于Ghost Commander是一个双面板的文件管理器,你首先必须使用另一个面板并在那里打开一个文件夹(这是我们想要复制apk文件的地方)。然后,转到另一个面板,选择应用程序。

(如果你没有看到“应用程序”,首先点击箭头,选择主页。)

链接:

https://f-droid.org/packages/com.ghostsq.commander/ https://sourceforge.net/projects/ghostcommander/ https://play.google.com/store/apps/details?id=com.ghostsq.commander

一行命令,按包分开下载到路径

SEARCH_APP="minecraft" && PKGS=$(adb shell pm list packages | grep ${SEARCH_APP}) && for PKG in ${PKGS}; do PKG=${PKG#*:} && mkdir -p ${SEARCH_APP}/${PKG} && PKG_FILES=$(adb shell pm path ${PKG}) && for PKG_FILE in ${PKG_FILES}; do PKG_FILE=${PKG_FILE#*:} && adb pull $PKG_FILE ${SEARCH_APP}/${PKG}; done; done