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


当前回答

这里列出的程序不适用于Android 7 (Nougat)[可能也不适用于Android 6,但我无法验证]。你不能直接在Nougat下拉。apk文件(除非在根模式下,但这需要一个根手机)。但是,您可以使用adb shell将.apk复制到电话上的备用路径(例如/sdcard/Download),然后您可以从备用路径进行adb拉取。

其他回答

这些建议对我都不起作用,因为Android在包名后面附加了一个序列号来生成最终的APK文件名。在最新版本的Android (Oreo和Pie)上,会追加一个不可预测的随机字符串。下面的命令序列是我在非root设备上使用的:

1)确定应用程序的包名。“com.example.someapp”。如果存在以下情况,请跳过此步骤 您已经知道包的名称。

adb shell pm list packages

查看包名列表,并尝试在有问题的应用程序和包名之间找到匹配项。这通常很简单,但请注意,包的名称可以与应用程序的名称完全无关。如果您无法从包名列表中识别该应用程序,请尝试使用浏览器在谷歌Play中找到该应用程序。谷歌Play中应用程序的URL包含包名。

2)获取所需包的APK文件的完整路径名称。

adb shell pm path com.example.someapp

输出看起来像这样 包:/数据/应用/ com.example.someapp apk——2. 或 包:/数据/ app / com.example.someapp-nfFSVxn_CTafgra3Fr_rXQ = = / base.apk

3)使用步骤2中的完整路径名称,将APK文件从Android设备拉到开发箱中。

adb pull /data/app/com.example.someapp-2.apk path/to/desired/destination

试试这个bash命令来备份你所有的应用程序:

for package in $(adb shell pm list packages -3 | tr -d '\r' | sed 's/package://g'); do apk=$(adb shell pm path $package | tr -d '\r' | sed 's/package://g'); echo "Pulling $apk"; adb pull -p $apk "$package".apk; done

这个命令来自于Firelord的脚本。我只是将所有apks重命名为它们的包名,以解决elcuco的脚本问题,即相同的base.apk文件被覆盖在Android 6.0“棉花糖”及以上。

注意,这个命令只备份第三方应用,因为我不认为备份内置应用有什么意义。但如果你也想备份系统应用程序,只需省略-3选项。

我没有使用代码从移动设备中提取。apk文件,但我一直在使用软件从移动设备中提取。apk文件,我使用的软件如下:谷歌播放链接:

ES文件管理器文件管理器 ASTRO云和文件管理器 3.软件数据线

希望它能帮助你。

我已经见过很多解决这个问题的方法,要么你必须在你的手机上安装根程序,要么你必须安装一个应用程序。然后在谷歌搜索了很多之后,我找到了这个解决方案,适用于非根/根手机。

列出你目前获得的应用程序。

adb shell pm list packages

然后你可以选择一个应用程序,比如twitter

adb backup -apk com.twitter.android

这里很重要的一点是不要为加密备份设置密码

这将创建一个名为backup的文件。Ap,但你还是打不开。为此,您必须再次提取它,但使用dd命令。

dd if=backup.ab bs=24 skip=1 | openssl zlib -d > backup.tar

在此之后,你所要做的就是提取焦油含量,这就完成了。

希望这对你们有用

对于从设备检索的每个apk文件,所有这些答案都需要多个步骤。1. 2.确定包名。找到文件,然后3。下载它。我构建了一个简单的apk_grabber python脚本,用于匹配给定正则表达式的任何应用程序,然后将这些apks反编译到jar文件中。