簡體   English   中英

Android ADB:如何將多個文件推送到模擬器中?

[英]Android ADB: How to push multiple files, into an emulator?

我正在使用 ADB 將文件從我的桌面復制到我的模擬器上的文件夾中。

adb push pic.jpg '/storage/emulated/0/DCIM/camera/

這工作正常,但我有很多文件要復制,而且我不想對每個文件重復此命令。 如何“推送”整個目錄的內容?

編輯:我的Android工作室截圖:

在此處輸入圖片說明

要上傳整個目錄,最簡單的方法是使用 Android Studio 中的設備文件管理器。

從右下角的工具欄打開它並導航到設備中要上傳數據的目錄。

設備文件管理器

右鍵單擊並單擊上傳以上傳文件或目錄。

注意:僅適用於 Android Studio 3.0 及更高版本

要推送當前目錄中的所有內容,您可以嘗試:

adb push * /storage/emulated/0/DCIM/camera/*

您可以使用tar將所有文件放入一個存檔中:

tar -cvf all.tar .

然后將該存檔推送到設備:

adb push all.tar  /sdcard 

最后在設備中解壓你的 tar 文件:

adb shell tar -xvf /sdcard/all.tar -C /sdcard

我找不到解決方案,所以我做了一個:

from ppadb.client import Client as AdbClient
import os
import glob

adb = AdbClient(host='127.0.0.1', port=5037)
devices = adb.devices()    #List of all connected devices


def send_over_adb(device,hostpath,devpath="/storage/emulated/0/"):      # Recursively send folder and files over adb
    if os.path.isfile(hostpath):
        devpath = os.path.join(devpath,hostpath).replace('\\','/') # optimization for windows
        device.push(hostpath, devpath)
    elif os.path.isdir(hostpath):
        for i in glob.glob(hostpath+'\*'):
            print(i)
            send_over_adb(device,i,devpath)
    device.shell('am broadcast -a android.intent.action.MEDIA_MOUNTED -d file:///mnt/sdcard')
    device.shell('am force-stop com.android.gallery3d') #force create thumbnails


hostpath='\path\to\folder\or\file\'
send_over_adb(devices[0],hostpath,devpath)

此函數遞歸發送文件夾和文件,同時保持文件夾結構並忽略空目錄。

限制:文件名不應包含正斜杠或反斜杠(idk,如果任何操作系統允許)

依賴:pure-python-adb

測試:Python3.7.9 on Win 8.1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM