尽可能使adb命令支持中文

背景

由于我为了成功给手机刷机,所以会安装不同的手机驱动。这导致我的手机并不能直接连接usb后在文件管理器中使用。只能领辟蹊径。而我在文件传输过程(手机to电脑、电脑to手机)中我用的方式有:

  • usb连接,文件管理器拖拽
  • 蓝牙连接(小文件、不能usb、wifi连不上等特殊场景,速度慢)
  • FTP(我电脑有比较好用的软件,手机又方便开ftp服务器,速度较快)
  • scp命令(不方便,主要原因是windows 和手机的用户名和ip不方便输入,手机要安装终端,速度快)
  • 网络工具(微信、qq、QQ邮箱、临时存储等互联网工具)
  • adb命令(我最喜欢,速度快,操作简单)

虽然adb命令传文件方便,但这是对手机路径熟悉、对各个app的存储路径有了解的情况下,才成立。

使用adb命令传文件需要手机打开调试(我一直开着)、电脑有adb环境,这时usb连接,输入adb命令就可以了。

经常使用后,会发现,adb命令对中文支持不是很友好。

解决

目标:使用adb pulladb push时,能保证中文正常显示。

治标不治本方式

既然adb不支持中文,那么我们可以将中文转换为英文。

  1. 构建中英文对照标;
  2. 分别在电脑端和手机端编写程序对目标进行转换,电脑端可以写好多种,不过我觉得bat脚本比较好,手机端写shell;
  3. 传输后,再进行转换;
  4. 可以对命令进行包装,这样就少一点步骤了。

这种方式是不是很好笑。虽然挺有趣的,但感觉不太好。

有效方式

对于大佬而言,对源码进行修改编译打包就好了。但对我们而言,虽然能完成当,要耗费一些时间。

我们应该知道,我们有奇思妙想,前人也有奇思妙想;我们有困难,前人同样有困难。所以我们可以站在巨人的肩膀上。如果心理有些过不去,可以简单实现一个轮子,再去使用大佬的轮子。

安装支持中文的adb

第一步

这一步的目标是找到大佬修改好的adb。如果你在百度搜索,大概率是会找到要积分的地方(我没说是csdn)。所以你可以在github或gtiee等地方搜索。

不要告诉我,你不知道搜索内容。直接搜索“adb 中文”。

第二步

这一步的目标是下载。下载的方式多种多样,总有你会的吧。只要它能到你电脑就行了。你可以使用很多下载工具。

比如,我找的地址是这个https://github.com/Wonfee/adb,由于他没有release ,所以我使用git工具用git clone

按理说,此时你已经可以在此文件夹下使用了

第三步

为了方便使用,可以配置环境变量,相信你会(不会,百度)。配置好后就可以丝滑使用了。

如果你想要保留你之前的和此次下载的adb,也可以。方法如下:

  1. 在PATH里相对引用一个变量,不如就叫"ADB"吧。(观察现有的,你就知道怎么引用了)

  2. 通过改变"ADB"变量的值就可以使用不同版本的adb了。(相信你知道这个值就是adb的路径)

  3. 为了简化改值操作,我们可以编写脚本。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    @echo off
    :: 变量延迟 虽然感觉此处不需要
    setlocal ENABLEDELAYEDEXPANSION

    :: 管理员权限
    %1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit
    cd /d "%~dp0"

    ::换成utf-8
    chcp 65001

    ::预设变量 可以直接制定,也可以将值存在环境变量中。我下面这样写是因为下面的if不知道为什么会失败,只要能动,我就不改了。
    set adb = %ADB%
    set adb_0 = "D:\Android\中文adb"
    set adb_1 = %ADB_1%

    ::交换,会换成绝对路径,要相对引用的话,可以用%%转义一个%,不过名字要改成环境变量的名字。
    if "%adb%" == "%adb_0%" (
    echo 换成adb1-当前最新
    SETX /M ADB %ADB_1%
    ) else (
    echo 换成adb0-支持中文
    SETX /M ADB %ADB_0%
    )

    rem pause
  4. 将脚本放在合适的位置,可以配置环境变量,这样使用时,也方便,不用找文件。

怎么样,我这算是把饭喂到嘴边了吧。