如何从android设备获取apk文件?或者如何将apk文件从设备传输到系统?


当前回答

打开你想从你的手机上提取apk的应用程序。 获取当前打开的应用程序: adb shell dump活动活动| grep mFocusedActivity 获取包名的路径 Adb shell PM path <packagename.apk>

4.将您获得的路径复制到sdcard目录

    adb shell cp /data/app/<packagename.apk> /sdcard

5.拉apk

    adb pull /sdcard/base.apk

Edit

如果第2步不起作用,使用以下方法:

adb shell dumpsys window windows | grep mCurrentFocus

其他回答

使用亚行。当设备连接USB时,adb可以将文件从设备复制到系统中。

当然,您还需要正确的权限来访问文件所在的目录。如果没有,则需要先对设备进行根操作。


如果您发现许多apk命名为“base.apk”,您还可以使用这一行命令从您可以访问的电话中提取所有apk,同时将任何“base.apk”名称重命名为包名。这也修复了名称后看似随机字符的APK路径找不到目录的问题:

for i in $(adb shell pm list packages | awk -F':' '{print $2}'); do 
  adb pull "$(adb shell pm path $i | awk -F':' '{print $2}')"
  mv base.apk $i.apk &> /dev/null 
done

如果你得到“adb: error: failed to stat remote object”,这表明你没有所需的权限。我在一台非根Moto Z2上运行了这个程序,并且能够下载所有我没有卸载的apk(见下文),除了youtube。

adb shell pm uninstall --user 0 com.android.cellbroadcastreceiver   <--- kills presidential alert app!

(查看用户运行adb shell PM列表用户) 这是一种删除/卸载(不是从手机出厂复位)几乎任何没有根的应用程序,包括系统应用程序(提示,烦人的更新应用程序更新你的电话线它或不可以通过grepping“ccc”找到)

如上所述,您可以通过使用adb中的pull命令来获得apk。

由于您正在讨论已安装的应用程序,请继续查看Android文件系统的/data/app目录。你会在那里找到APK。

然后使用adb命令- adb pull /data/data/appname.apk

适用于所有Android版本的一行代码:

adb shell 'cat `pm path com.example.name | cut -d':' -f2`' > app.apk

打开你想从你的手机上提取apk的应用程序。 获取当前打开的应用程序: adb shell dump活动活动| grep mFocusedActivity 获取包名的路径 Adb shell PM path <packagename.apk>

4.将您获得的路径复制到sdcard目录

    adb shell cp /data/app/<packagename.apk> /sdcard

5.拉apk

    adb pull /sdcard/base.apk

Edit

如果第2步不起作用,使用以下方法:

adb shell dumpsys window windows | grep mCurrentFocus

不需要root:

这段代码将获得第三方包的路径和名称,以便您可以轻松识别您的APK

adb shell pm list packages -f -3

输出将是

包:/ / app / XX.XX.XX.apk = YY.YY.YY数据

现在使用下面的代码拉出这个包:

adb pull /data/app/XX.XX.XX.apk

如果你在C:>\中执行上面的cmd命令,那么你会在那里找到这个包。