我怎么得到该应用文件。或者我该如何转让该应文件从装置的系统?

有帮助吗?

解决方案

使用 ADB 。随着的亚行拉的您可以从您的设备复制文件到您的系统中,当设备连接使用USB。

当然,你还需要正确的权限来访问您的文件所在的目录,如果没有,则需要根设备第一。


如果您发现很多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 2&> /dev/null ;done

如果你得到“亚行:错误:未能STAT远程对象”,表示你没有必要的权限。我跑这一个无根摩托Z2,并能下载所有的APK我没有卸载(见下文),除了YouTube上。

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

(到视图用户运行ADB壳点列表中的用户) 这是一种方法,以消除/卸载(不是从手机,因为它回来了恢复出厂设置)差不多的所有的应用,而无需根,包括系统应用程序(暗示,更新您的电话线恼人的更新程序,或不可以通过grepping为 “CCC”)中找到

其他提示

这些建议为我工作,因为Android的被追加一个序列号给包名,产生最终的APK文件名无。在较新版本的Android(奥利奥和PIE)的,不可预测的随机字符串追加。下面的命令序列是什么工作了我的无根设备在:

1)确定的应用程序,例如的包名称“com.example.someapp”。如果跳过这一步 你已经知道包名称。

adb shell pm list packages

去翻包名称的列表,并设法找到有问题的应用程序和包名称之间的匹配。这通常是容易的,但要注意的是,包名称可以是完全无关的应用程序名称。如果你不能从包名称的列表识别应用程序,请尝试使用浏览器找到该应用程序在谷歌播放。在谷歌Play中的应用URL中包含包名称。

2)获取所需的包的APK文件的全路径名。

adb shell pm path com.example.someapp

在输出看起来像点击    包:/data/app/com.example.someapp-2.apk 结果 或点击    包:/data/app/com.example.someapp-nfFSVxn_CTafgra3Fr_rXQ == / base.apk

3)从第2步使用的全路径名,从Android设备APK文件拉至显影盒。

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

<强>无需根

此代码将获得第三方软件包的路径与名称,以便您可以轻松地识别您的APK

adb shell pm list packages -f -3

的输出将是

  

包:/data/app/XX.XX.XX.apk=YY.YY.YY

现在使用以下代码拉该包:

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

如果上述CMD C:>\执行,那么你会发现,包那里。

我已经看到了这个问题的许多解决方案或者你在手机Root权限,或者您必须安装的应用程序。然后经过一番google搜索我得到了非植根/植根手机这个解决方案。

要列出哪些程序你有这么远。

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

这一切后,你所要做的就是提取焦油含量和它的完成。

希望工程为你们

C:\Users\xyz>adb shell pm list packages -f | findstr whatsapp
package:/data/app/com.whatsapp-1/base.apk=com.whatsapp

C:\Users\xyz>adb pull /data/app/com.whatsapp-1/base.apk Desktop
/data/app/com.whatsapp-1/base.apk: 1 f.... 13.8 MB/s (32803925 bytes in 
2.269s)

一个衬里,其适用于所有的Android版本:

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

完成@Yojimbo的答案,这是我做的(的Linux / Mac上只,将无法正常工作了Windows上的盒子......也许在Git的bash shell中):

for i in $(adb shell pm list packages -f -3 | cut -d= -f 1 | cut -d ":" -f 2); do adb pull $i; done

这是难看的bash,但工作原理:)

编辑: 它不再适用于AndroidM:所有文件都在另一个目录名为“base.apk”。应该是“平凡的”来修复。

Unix系统上的,你可以试试这个功能:

function android_pull_apk() {
    if [ -z "$1" ]; then
        echo "You must pass a package to this function!"
        echo "Ex.: android_pull_apk \"com.android.contacts\""
        return 1
    fi

    if [ -z "$(adb shell pm list packages | grep $1)" ]; then
        echo "You are typed a invalid package!"
        return 1
    fi

    apk_path="`adb shell pm path $1 | sed -e 's/package://g' | tr '\n' ' ' | tr -d '[:space:]'`"
    apk_name="`adb shell basename ${apk_path} | tr '\n' ' ' | tr -d '[:space:]'`"

    destination="$HOME/Documents/Android/APKs"
    mkdir -p "$destination"

    adb pull ${apk_path} ${destination}
    echo -e "\nAPK saved in \"$destination/$apk_name\""
}
  • : android_pull_apk com.android.contacts
  • 注意到:识别程序包: adb shell pm list packages

步骤来从设备下载到APK桌面

A)确保您运行(仿真/真实设备)。为了检查使用该命令

adb devices

<强> B):选择全部安装在设备中的可用的包列表。您可以使用grep命令来选择您要下载特定的软件包。

adb shell pm list packages
adb shell pm list packages -f -3

输出(可用软件包的列表)

package:/data/app/com.example.mytestapplication-sOzKi5USzfbYLPNDmaaK6g==/base.apk=com.example.mytestapplication
package:/data/app/com.example.myapplication-nd1I4FGnTZnQ9PyRbPDHhw==/base.apk=com.example.myapplication

<强> C)复制的包(你喜欢下载)从上述链接。构成了我们的情况下,我选择了这个(com.example.myapplication)封装

Syntex: adb shell pm path [your_package_name]
Command: adb shell pm path com.example.myapplication

输出

package:/data/app/com.example.myapplication-nd1I4FGnTZnQ9PyRbPDHhw==/base.apk

<强> d)最后,若要从(模拟器/真实设备下载APK)

Syntex: adb pull /data/app/[your_package_name]-1/base.apk  [your_destination_path]
Command: adb pull /data/app/com.example.myapplication-3j4CVk0Tb2gysElgjz5O6A==/base.apk /Users/$(whoami)/Documents/your_apk.apk

例:试图拉这个CertInstaller.apk文件在本地计算机(Mac)中

adb pull /system/app/CertInstaller/CertInstaller.apk /Users/$(whoami)/Documents/APK/download_apk/

E)确认您的本地目录

ls -la /Users/$(whoami)/Documents/

如以上所述,可以通过在亚行使用拉命令获取APK。

由于,你在谈论你安装的应用程序,继续前进,看看在 /数据在Android文件系统/应用目录。你会发现APK的存在。

然后使用ADB命令 - ADB拉/data/data/appname.apk

这里所概述的程序不为Android 7(牛轧糖)的工作[和可能的Android 6,但我无法验证。你可以不拉的apk文件,直接下牛轧糖(除非根模式,但是这需要一个植根电话)。但是,你可以使用亚行外壳.apk文件复制到手机上的备用路径(比如/ SD卡/下载),那么你可以从备用路径做一个亚行拉。

试试这个衬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的脚本.我只是重新命名的所有资料相关联到他们的软件包的名称,用于解决问题 elcuco的脚本, 我.e同 base.apk 文件复盖在安卓6.0"棉花糖"和以上。

请注意,该命令份只有3方的应用程序,因为我没有看到这一点的备份内的应用程序。但如果你想备份系统应用程序,只是忽略 -3 选项。

下面是你如何做到这一点:

下载,然后在你的设备上安装APK提取。它是免费的,而且是在几乎所有的Android设备兼容。另一种加点是,它甚至不要求根或其他类似的工作。 当你安装它,启动它。在那里,你会看到它的应用程序在你的设备,其中包括你后来安装的应用程式,与系统应用一起列表。长按要提取任何应用程序(可以一次选择多个或所有应用程序),并单击您在顶部看到提取选项。您也将通过蓝牙或短信的选项份额。 你做,你会看到所提取的应用为AppName_AppPackage_AppVersionName_AppVersionCode.apk,将被保存在路径/ SD卡/ ExtractedApks /默认。

有关的详细描述为如何提取在机器人,请访问: http://appslova.com/how-to -extract-APK-文件功能于机器人/

所有这些答案需要用于从该装置检索的每个apk文件多个步骤。 1.确定包名,2查找文件,和3下载。我建了一个简单的 apk_grabber python脚本为匹配给定的正则表达式,然后反编译的任何应用程序做到这一点的apk成jar文件。

我还没有使用代码的拉。apk文件的移动,但我已经使用的软件来提取。apk文件的移动和软件我已经使用了以下与谷歌玩的链接:

  1. ES文件管理文件管理
  2. 天文云和文件经理 3.软件,数据电缆

希望这可以帮助你。

想非常,非常舒适1分钟溶液?

只是你这个程序 https://play.google的.com /商店/应用/细节?ID = com.cvinfo.filemanager (从谷歌播放智能文件管理器)。

抽头“应用程序”中,选择一个和抽头“备份”。它最终会在app_backup文件夹中的文件系统上;)

没有根本和不亚行所需的工具的方法。安装 它几乎是不可能的 应用程序。

我有一个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)

又一个bash脚本(即将作为最基于unix系统)。基于上 答案由佩德罗*罗德里格斯, 但是稍微容易使用。

改进佩德罗的版本:

  1. 原始的方法并没有为我工作上的安卓7: adb pull 直抱怨 no such file or directory 同时 adb shell 可以访问该文件。因此,我使用的不同办法,临时文件。
  2. 在启动时没有争论,我的剧本会只是列出所有可用的软件包。当部分包名称提供,它将试图猜测的充分包名。就会抱怨,如果有几种可能的扩展。
  3. 我不硬编码的目的地的路径;而不是资料相关联是保存以前的工作目录。

保存这种可执行的文件:

#!/bin/bash
# Obtain APK file for given package from the device connected over ADB

if [ -z "$1" ]; then
    echo "Available packages: "
    adb shell pm list packages | sed 's/^package://'
    echo "You must pass a package to this function!"
    echo "Ex.: android_pull_apk \"com.android.contacts\""
    exit 1
fi

fullname=$(adb shell pm list packages | sed 's/^package://' | grep $1)
if [ -z "$fullname" ]; then
    echo "Could not find package matching $1"
    exit 1
fi
if [ $(echo "$fullname" | wc -l) -ne 1 ]; then
    echo "Too many packages matched:"
    echo "$fullname"
    exit 1
fi
echo "Will fetch APK for package $fullname"

apk_path="`adb shell pm path $fullname | sed -e 's/package://g' | tr '\n' ' ' | tr -d '[:space:]'`"
apk_name="`basename ${apk_path} | tr '\n' ' ' | tr -d '[:space:]'`"

destination="${fullname}.apk"

tmp=$(mktemp --dry-run --tmpdir=/sdcard --suffix=.apk)
adb shell cp "${apk_path}" "$tmp"
adb pull "$tmp" "$destination"
adb shell rm "$tmp"

[ $? -eq 0 ] && echo -e "\nAPK saved in \"$destination\""

简单的一种是: 在手机中安装“ShareIt”应用程序。 现在安装在电脑或其他手机shareIt应用。 现在,从手机,安装了应用程序,打开ShareIt和发送。 对其它电话或PC,开放ShareIt和接收。

  1. 打开你的愿望来提取超您的手机上。
  2. 获得当前打开的应用程序:

    adb shell dumpsys activity activities | grep mFocusedActivity
    
  3. 让路径包名称

    adb shell pm path <packagename.apk>
    

4.拷贝的路径你得到的文件目录

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

5.拉该应

    adb pull /sdcard/base.apk

我真的很喜欢所有这些问题的答案。最脚本到出口,并重新命名,他们都写在庆典。我做了一个小Perl脚本不相同(它应该在Perl windows和linux,只有测试Ubuntu).

download-apk.pl

#!/usr/bin/perl -w
# Automatically export all available installed APK's using adb
use strict;
print "Connect your device...\n";
system("adb", "wait-for-device");
open(my $OUT, '-|', 'adb', 'shell', 'pm', 'list', 'package', '-f');
my @list = split(/\s*/, `adb shell pm list packages -f`);
my $count = 0;
while(my $line = <$OUT>) {
        $line =~ s/^\s*|\s*$//g;
        my ($type, $path, $package) = $line =~ /^(.*?):(.*)=(.*)$/ ? ($1,$2,$3) : die('invalid line: '.$line);
        my $category = $path =~ /^\/(.*?)\// ? $1 : 'unknown';
        my $baseFile = $path =~ /\/([^\/]*)$/ ? $1 : die('Unknown basefile in path: '.$path);
        my $targetFile = "$category-$package.apk";
        print "$type $category $path $package $baseFile >> $targetFile\n";
        system("adb", "pull", $path);
        rename $baseFile, $targetFile;
}
  1. 确保adb(.exe)是在你的道路或同一目录下
  2. 连接你的电话
  3. 运行download-apk.pl

输出是类似的东西:

# ./download-apk.pl
Connect your device...
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
package system /system/app/YouTube/YouTube.apk com.google.android.youtube YouTube.apk >> system-com.google.android.youtube.apk
5054 KB/s (11149871 bytes in 2.154s)
package data /data/app/com.ghostsq.commander-1/base.apk com.ghostsq.commander base.apk >> data-com.ghostsq.commander.apk
3834 KB/s (1091570 bytes in 0.278s)
package data /data/app/de.blinkt.openvpn-2/base.apk de.blinkt.openvpn base.apk >> data-de.blinkt.openvpn.apk
5608 KB/s (16739178 bytes in 2.914s)
etc.

这人谁是寻找一个非技术答案

将帮助

这是简单的

下载从谷歌Play商店应用App Share/Send Pro。选择您要发送的方法发送应用程序的应用程序。

我通常使用蓝牙发送应用程序我的电脑或另一部手机。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top