Giter Club home page Giter Club logo

Comments (5)

electricbubble avatar electricbubble commented on June 14, 2024

可以提供下可复现的代码吗?

from gidevice.

aichy126 avatar aichy126 commented on June 14, 2024
//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.

aichy126 avatar aichy126 commented on June 14, 2024

ubuntu20 环境

from gidevice.

electricbubble avatar electricbubble commented on June 14, 2024

你的代码似乎会重复对一个设备启动 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.

aichy126 avatar aichy126 commented on June 14, 2024

好的我检查下 感谢

from gidevice.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.