很多同学在使用 appium 做自动化测试时会遇到 appium 自动对 apk 包打 debug 签名的现象
通常会带来两个问题:
一个是执行时间变长。
二是如果应用中的防篡改校验,新打的 debug 签名会认为应用被篡改,而报错退出。

通常我们所用的 apk 都是有签名的,而 appium 自身不需要 debug 签名的限制,
因此关闭 appium 的自动打 debug 签名的功能就比较实现。

以下是以 appium 1.0.0.3 的版本说明,其它版本会有所变化,仅供参考。
appium_home\Appium\node_modules\appium\lib\devices\android\adb.js
修改源文件中的 490 行和 494 行

// returns true when already signed, false otherwise.
ADB.prototype.checkApkCert = function (apk, pkg, cb) {
  if (!fs.existsSync(apk)) {
    logger.debug("APK doesn't exist. " + apk);
    return cb(null, false);
  }

  if (this.useKeystore) {
    return this.checkCustomApkCert(apk, pkg, cb);
  }

  var verifyPath = path.resolve(helperJarPath, 'verify.jar');
  var resign = 'java -jar "' + verifyPath + '" "' + apk + '"';
  logger.debug("Checking app cert for " + apk + ": " + resign);
  exec(resign, { maxBuffer: 524288 }, function (err) {
    if (err) {
      logger.debug("App not signed with debug cert.");
      //return cb(null, false);//当apk不是debug签名时,不打debug签名跳出,继续执行。
    }
    logger.debug("App already signed.");
    this.zipAlignApk(apk, function (err) {
      //if (err) return cb(err);//当apk不是debug签名时,不打debug签名跳出,继续执行。
      cb(null, true);
    });

  }.bind(this));
};


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