【发布时间】:2015-10-31 16:42:42
【问题描述】:
我是这方面的初学者,所以如果我问任何明显的问题,请注意。我正在尝试使用adb install apk.apk 将 apk 安装到我的设备上,但是 apk 大约有几百 MB 大,并且需要一些时间。我可以在命令窗口中实现某种进度条来显示进度吗?我见过 adb push/pull 的东西。我不确定它是否相同。我在 Windows 8.1 中运行它。我还设置了一个 adb 环境变量。
非常感谢。
【问题讨论】:
我是这方面的初学者,所以如果我问任何明显的问题,请注意。我正在尝试使用adb install apk.apk 将 apk 安装到我的设备上,但是 apk 大约有几百 MB 大,并且需要一些时间。我可以在命令窗口中实现某种进度条来显示进度吗?我见过 adb push/pull 的东西。我不确定它是否相同。我在 Windows 8.1 中运行它。我还设置了一个 adb 环境变量。
非常感谢。
【问题讨论】:
有点笨重,但如果您要求 ADB 这样做,它可能会变得冗长:
$ adb --help
...
$ADB_TRACE
comma-separated list of debug info to log:
all,adb,sockets,packets,rwx,usb,sync,sysdeps,transport,jdwp
例如,如果您在调用adb push 之前设置ADB_TRACE=all(例如,通过在一行中运行ADB_TRACE=all adb push path/to/app.apk,或者提前执行export ADB_TRACE=all),那么您会得到这样的结果:
...
adb D 01-02 15:41:36 41828 1867505 adb_io.cpp:81] readx: fd=3 wanted=72
adb D 01-02 15:41:36 41828 1867505 adb_io.cpp:97] readx: fd=3 wanted=72 got=72 535441320000000020fd000000000000 STA2.... ....... [truncated]
adb D 01-02 15:41:36 41828 1867505 adb_io.cpp:107] writex: fd=3 len=51 53454e442b0000002f646174612f6c6f SEND+.../data/lo [truncated]
adb D 01-02 15:41:36 41828 1867505 adb_io.cpp:107] writex: fd=3 len=65544 4441544100000100504b030400000000 DATA....PK...... [truncated]
adb D 01-02 15:41:36 41828 1867505 adb_io.cpp:107] writex: fd=3 len=65544 44415441000001002c7903adab89d6d5 DATA....,y...... [truncated]
adb D 01-02 15:41:36 41828 1867505 adb_io.cpp:107] writex: fd=3 len=65544 4441544100000100e570055c0957c1d5 DATA.....p.\.W.. [truncated]
adb D 01-02 15:41:36 41828 1867505 adb_io.cpp:107] writex: fd=3 len=65544 4441544100000100f94f47fe441a3fa6 DATA.....OG.D.?. [truncated]
adb D 01-02 15:41:36 41828 1867505 adb_io.cpp:107] writex: fd=3 len=65544 44415441000001007bf1fa1b58c33b89 DATA....{...X.;. [truncated]
adb D 01-02 15:41:36 41828 1867505 adb_io.cpp:107] writex: fd=3 len=65544 4441544100000100c6d8384d98f7b39d DATA......8M.... [truncated]
...
它粗略地实时显示了带有时间戳的 64k 块传输。
【讨论】:
如果您没有调用推送/安装操作(例如,Android Studio 正在为您执行此操作),您可以按如下方式查询推送状态(bash 脚本):
function check_push_progress(){
local push_to=$1 #path in the device
local push_from=$2 #path to local file
local current=0
local complete=1
while [ $current -ne $complete ]; do
current=`adb shell ls -l $push_to | awk '{print $5}'`
complete=`ls -l $push_from | awk '{print $5}'`
echo pushed $current bytes, out of $complete bytes, $((100*$current/$complete))%
sleep 1
done
}
【讨论】:
嗯,adb install apk.apk 只是一个美化的捷径:
adb push apk.apk /data/local/tmp
adb shell pm install /data/local/tmp/apk.apk
adb shell rm /data/local/tmp/apk.apk
因此,如果您很想看到上传进度条 - 请先 adb push -p 您的 apk,然后手动或使用简单脚本 adb shell pm install。
【讨论】: