問題描述
- 因爲我需要在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
})
})