STF之复用ADB一里满足了设备复用的场景。
JAVA应用自己管理设备,只需要在使用时提前向STF申请占用即可。 参考这里的API: post-userdevices 只需要预设好足够的时间即可{serial: 'yyyy', timeout: 900000 }
使用完毕后,再使用 API: delete-userdevicesserial释放设备即可。
与之相对应的场景是,如果独占某一个具体的设备。比如只提供给Java应用使用,不在STF上显示出来。 思路为:指定的设备不进行初始化即可,在provider中找找(学习使用了3个月,又落下了2个月……真·三天打鱼两天晒网:()
lib/units/provider/index.js
中其实已经提供了一些过滤手段,只需要对应的添加一个额外的方法即可。例如——
// don't provider custome devices to stf.
function isCustomDevice(device) {
return device.id === '5dcee012'
}
添加到现有的逻辑中
// Helper for ignoring unwanted devices
function filterDevice(listener) {
return function(device) {
if (isWeirdUnusableDevice(device)) {
log.warn('ADB lists a weird device: "%s"', device.id)
return false
}
if (isCustomDevice(device)) {
log.warn('filter out custome devices: "%s"', device.id)
return false
}
if (!options.allowRemote && isRemoteDevice(device)) {
log.info(
'Filtered out remote device "%s", use --allow-remote to override'
, device.id
)
return false
}
if (options.filter && !options.filter(device)) {
log.info('Filtered out device "%s"', device.id)
return false
}
return listener(device)
}
}
这样,STF启动后,就不会再对这个设备进行初始化的动作——
2019-12-21 11:46:45 INF/provider 94447 [*] Subscribing to permanent channel "Z6vkYKLtRneJW2jDCd+t9A=="
2019-12-21 11:46:45 INF/provider 94447 [*] Sending output to "tcp://192.168.1.174:7116"
2019-12-21 11:46:45 INF/provider 94447 [*] Receiving input from "tcp://192.168.174:7114"
2019-12-21 11:46:45 INF/provider 94447 [*] Tracking devices
2019-12-21 11:46:45 WRN/provider 94447 [*] Filtered out remote device: "5dcee012"
comments powered by Disqus