问题描述
- 因为我需要在docker里面调用设备来执行自动化测试,因此我需要通过adb connect IP:PROT来链接设备,但是因为STF执行这个命令的时候,需要手动授权接受才可以在远程电脑上授权使用,否则不可以使用。
- 因此我通过debug发现来授权步骤实际在socket里面的,因此做了以下修改.
- 文件地址:
lib/units/websocket/index.js#adb keys confirm
- 删除socket.emit(‘adb keys confirm’,{})
- 然后复制
user.keys.adb.accept
的代码到这里来,实现默认授权 - 完整代码:
.on(wire.JoinGroupByAdbFingerprintMessage, function(channel, message) {
log.info('adb keys confirm 张沛', message)
log.info('adb keys user 张沛', user)
var data = {
title: message.comment
, fingerprint: message.fingerprint
}
log.info('接受user.keys.adb.accept data', data)
return dbapi.lookupUsersByAdbKey(data.fingerprint)
.then(function(cursor) {
return cursor.toArray()
})
.then(function(users) {
log.info('接受users', users)
if (users.length) {
log.info('接受users.length data', users.length)
throw new dbapi.DuplicateSecondaryIndexError()
}
else {
log.info('接受adbkey', user.email)
log.info('接受data.title', data.title)
log.info('接受key.fingerprint', data.fingerprint)
return dbapi.insertUserAdbKey(user.email, {
title: data.title
, fingerprint: data.fingerprint
})
}
})
.then(function() {
socket.emit('user.keys.adb.added', {
title: data.title
, fingerprint: data.fingerprint
})
})
.then(function() {
push.send([
user.group
, wireutil.envelope(new wire.AdbKeysUpdatedMessage())
])
})
.catch(dbapi.DuplicateSecondaryIndexError, function() {
// No-op
})
})