Comments (5)
可以提供下可复现的代码吗?
from gidevice.
//GiDeviceService
type GiDeviceService struct {
//todo 后面改成sync.Map
list map[string]bool
}
//NewGiDeviceService
func NewGiDeviceService() *GiDeviceService {
list := make(map[string]bool)
return &GiDeviceService{
list: list,
}
}
//MonitorPhoneList 监控手机连接情况
func (s *GiDeviceService) MonitorPhoneList() {
time.Sleep(time.Second * 1)
usbmux, err := giDevice.NewUsbmux()
if err != nil {
return
}
var devices []giDevice.Device
devices, err = usbmux.Devices()
if err != nil {
return
}
// if len(devices) == 0 {
// glog.Info("==没有设备连接==")
// }
for _, device := range devices {
_, ok := s.list[device.Properties().SerialNumber]
if !ok || !s.list[device.Properties().SerialNumber] {
if len(device.Properties().SerialNumber) == 40 {
glog.Info("新建连接", device.Properties().SerialNumber)
s.list[device.Properties().SerialNumber] = true
go s.xctest(device, utils.ConfGetString("info.WDAbundleID"))
}
}
}
}
func (s *GiDeviceService) xctest(ID giDevice.Device, bundleID string) {
out, cancel, err := ID.XCTest(bundleID)
if err != nil {
glog.Error("链接异常 - ID", ID.Properties().SerialNumber, " - error", err.Error())
s.list[ID.Properties().SerialNumber] = false
return
}
done := make(chan os.Signal, 1)
signal.Notify(done, os.Interrupt)
go func() {
for msg := range out {
has := strings.Contains(msg, "Using singleton test manager")
if has {
s.list[ID.Properties().SerialNumber] = true
glog.Info("连接成功", ID.Properties().SerialNumber)
}
}
done <- os.Interrupt
}()
<-done
glog.Info("连接断开:", ID.Properties().SerialNumber)
s.list[ID.Properties().SerialNumber] = false
cancel()
}
然后 main.go
主函数调用
go InitGiDeviceService()
//InitGiDeviceService 手机监控
func InitGiDeviceService() {
//监控
list := gideviceservice.NewGiDeviceService()
for {
list.MonitorPhoneList()
}
}
from gidevice.
ubuntu20 环境
from gidevice.
你的代码似乎会重复对一个设备启动 xctest
func (s *GiDeviceService) xctest(ID giDevice.Device, bundleID string) {
out, cancel, err := ID.XCTest(bundleID)
if err != nil {
glog.Error("链接异常 - ID", ID.Properties().SerialNumber, " - error", err.Error())
s.list[ID.Properties().SerialNumber] = false
return
}
+ log.Println(ID.Properties().SerialNumber, "xctest start!")
done := make(chan os.Signal, 1)
signal.Notify(done, os.Interrupt)
go func() {
for msg := range out {
has := strings.Contains(msg, "Using singleton test manager")
if has {
s.list[ID.Properties().SerialNumber] = true
glog.Info("连接成功", ID.Properties().SerialNumber)
}
}
done <- os.Interrupt
}()
<-done
glog.Info("连接断开:", ID.Properties().SerialNumber)
s.list[ID.Properties().SerialNumber] = false
cancel()
}
from gidevice.
好的我检查下 感谢
from gidevice.
Related Issues (20)
- undefined: io.ReadAll HOT 2
- gidevice 和 gwda 如何在一个项目里配合使用呢? HOT 2
- XCTest 异常如何监测 HOT 2
- 同学,您这个项目引入了9个开源组件,存在2个漏洞,辛苦升级一下 HOT 1
- XCTest multiple-start fail HOT 2
- iOS 15.0 MountDeveloperDiskImage failed HOT 13
- How to get value with domain? HOT 2
- device.InstallationProxyBrowse() 获取结果不全 HOT 1
- 运行时偶现 panic HOT 7
- receive packet: plist: type mismatch: tried to decode plist type `array' into value of type HOT 7
- iOS15.5 xctest err: dtx: get result: timeout after 30.0002822s HOT 16
- [feat] WebInspector
- [Q] xctest貌似会偶断 HOT 17
- panic: runtime error: invalid memory address or nil pointer dereference HOT 11
- I need to get the IMEI information?
- com.apple.instruments.server.services.coreprofilesessiontap,返回的数据异常 HOT 3
- iOS 16.1系统,Mount Image时报错:ImageMountFailed HOT 1
- Can you add ioregistry query?
- 支持网络吗,部分设备没usb口
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from gidevice.