前几天看见有同学发帖,ADB install 显示进度条,感觉挺有意思,顺便贴一个 Node.js 的实现。

自己试试

macaca-adb 是 Macaca 测试工具中 Android 驱动部分的核心模块。当然,一个 Node.js 模块不仅可以当做依赖模块,稍加配置就可以当做独立的工具使用,也就是说你可以单独使用 macaca-adb

# install
$ cnpm i macaca-adb -g
# print help
$ macaca-adb -h
# install test
$ macaca-adb install path/to/your/apk

效果

贴代码

const apkPath = path.resolve(args[1]);
const baseName = path.basename(apkPath);
const fullSize = fs.statSync(apkPath).size;

ADB.getDevices()
  .then(devices => {
    return devices[0];
  })
  .then(device => {
    adb.setDeviceId(device.udid);

    const timer = setInterval(() => {
      adb
        .shell(`ls -l /data/local/tmp/${baseName}`)
        .then(d => {
          d = d.match(/\s+\d+\s+/)[0].trim();
          const rate = parseInt((parseInt(d, 10) / fullSize) * 100, 10);
          print(`file trans process: ${rate}%`);

          if (rate === 100) {
            clearInterval(timer);
            print('file installing...');
          }
        });
    }, 100);

    return adb.install(apkPath);
  })
  .then(out => {
    print(`${out}${EOL}`);
  });

最后

这里简单写个 sample 说明 Node.js 开发体验上便捷,感谢 TesterHome 提供思路,欢迎使用 macaca-adb 模块或者其他 Macaca 的模块做二次开发,会有很多有意思并且提效的火花。

欢迎讨论,互相学习。

微博: http://weibo.com/xudafeng
Github: https://github.com/xudafeng


↙↙↙阅读原文可查看相关链接,并与作者交流