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


当前回答

最简单的是: 在手机上安装“ShareIt”应用。 现在在PC或其他手机上安装shareIt应用程序。 现在,在安装了应用程序的手机上,打开ShareIt并发送。 在其他手机或电脑上打开ShareIt并接收。

其他回答

在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列表包

这对那些寻求非技术性答案的人很有帮助

这是一个简单的hack

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

我通常使用蓝牙将应用程序发送到我的电脑或其他手机上。

使用亚行。当设备连接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”找到)

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)包

Syntax : 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

Syntax : 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/

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

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

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