很多同学在使用 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));
};