【问题标题】:Android ADB: How to push multiple files, into an emulator?Android ADB:如何将多个文件推送到模拟器中?
【发布时间】:2019-05-12 13:18:37
【问题描述】:

我正在使用 ADB 将文件从我的桌面复制到我的模拟器上的文件夹中。

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

这很好用,但是我有很多文件要复制,我不想对每个文件都重复这个命令。如何“推送”整个目录的内容?

编辑:我的 Android 工作室的截图:

【问题讨论】:

    标签: android adb


    【解决方案1】:

    要上传整个目录,最简单的方法是使用 Android Studio 中的设备文件管理器。

    从右下角的工具栏中打开它,然后导航到设备中要上传数据的目录。

    右击上传,上传文件或目录。

    注意:仅适用于 Android Studio 3.0 及更高版本

    【讨论】:

    • 我正在使用最新的 Android 工作室,但在任何地方都找不到那个东西。我没有那个项目:视图 > 工具窗口 > 设备文件资源管理器,或右下角的任何图标。
    • Windows版本中可能没有这个吗?
    • 我用的是windows
    • 添加截图
    • 根据此 SO 帖子:stackoverflow.com/a/49574244/9636037 minSdkVersion 必须为 16 或以上。 (我发现这无关紧要)你的 minSdkVersion 是多少?
    【解决方案2】:

    要推送当前目录中的所有内容,可以尝试:

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

    【讨论】:

      【解决方案3】:

      您可以使用 tar 将所有文件放入一个存档中:

      tar -cvf all.tar .
      

      然后将该存档推送到设备:

      adb push all.tar  /sdcard 
      

      最后在设备中解压你的 tar 文件:

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

      【讨论】:

        【解决方案4】:

        我找不到解决方案,所以我做了一个:

        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

        测试于:Win 8.1 上的 Python3.7.9

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-01-15
          • 1970-01-01
          • 1970-01-01
          • 2012-05-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多