gidevice
Golang实现的跨平台工具库,用于与iOS设备通信,支持设备查询、应用管理、截图、定位修改等功能,无需越狱即可使用。
• Copy the embed code to showcase this product on your website
• Share on X to spread the word about this amazing tool
Sora Watermark Remover - Allows you to remove the watermark from Sora videos.Try Now
Golang实现的跨平台工具库,用于与iOS设备通信,支持设备查询、应用管理、截图、定位修改等功能,无需越狱即可使用。
• Copy the embed code to showcase this product on your website
• Share on X to spread the word about this amazing tool
Go Module 版本: https://github.com/electricbubble/gidevice`CLI` 版本: https://github.com/electricbubble/gidevice-cli## 项目说明使用 Golang 实现的的与 iOS设备 进行通信的跨平台工具库> 所有功能无需越狱> macOS 可直接使用> Windows 需要先安装 iTunes 或者 usbmuxd> Linux 或其他需先安装 usbmuxd已实现功能: - 设备列表查询 - 开发者镜像挂载 - App启/停/卸载/安装 - 端口转发 - 截图 - XCTest - Syslog - CrashReport - 沙盒文件访问 - 定位修改/恢复 - Pair### 部分 CLI 版本使用示例#### Devicesshell$ gidevice list#### DeveloperDiskImageshell$ gidevice mount -l# gidevice mount -l -u=39xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx7$ gidevice mount -d=/path/.../DeviceSupport/14.4/$ gidevice mount /path/.../DeviceSupport/14.4/DeveloperDiskImage.dmg /path/.../DeviceSupport/14.4/DeveloperDiskImage.dmg.signature#### Forwardshell# Default port local=8100 remote=8100$ gidevice forward$ gidevice forward -l=9100 -r=9100 -u=39xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx7### 部分 Go Module 版本使用示例#### Devicesgopackage mainimport (giDevice "github.com/electricbubble/gidevice""log")func main() {usbmux, err := giDevice.NewUsbmux()if err != nil {log.Fatalln(err)}devices, err := usbmux.Devices()if err != nil {log.Fatal(err)}for _, dev := range devices {log.Println(dev.Properties().SerialNumber, dev.Properties().ProductID, dev.Properties().DeviceID)}}#### DeveloperDiskImagegopackage mainimport ("encoding/base64"giDevice "github.com/electricbubble/gidevice""log")func main() {usbmux, err := giDevice.NewUsbmux()if err != nil {log.Fatal(err)}devices, err := usbmux.Devices()if err != nil {log.Fatal(err)}if len(devices) == 0 {log.Fatal("No Device")}d := devices[0]imageSignatures, err := d.Images()if err != nil {log.Fatalln(err)}for i, imgSign := range imageSignatures {log.Printf("[%d] %s\n", i+1, base64.StdEncoding.EncodeToString(imgSign))}dmgPath := "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport/14.4/DeveloperDiskImage.dmg"signaturePath := "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport/14.4/DeveloperDiskImage.dmg.signature"err = d.MountDeveloperDiskImage(dmgPath, signaturePath)if err != nil {log.Fatalln(err)}}#### Appgopackage mainimport (giDevice "github.com/electricbubble/gidevice""log""path/filepath")func main() {usbmux, err := giDevice.NewUsbmux()if err != nil {log.Fatalln(err)}devices, err := usbmux.Devices()if err != nil {log.Fatalln(err)}if len(devices) == 0 {log.Fatalln("No Device")}d := devices[0]bundleID := "com.apple.Preferences"pid, err := d.AppLaunch(bundleID)if err != nil {log.Fatalln(err)}err = d.AppKill(pid)if err != nil {log.Fatalln(err)}runningProcesses, err := d.AppRunningProcesses()if err != nil {log.Fatalln(err)}for _, process := range runningProcesses {if process.IsApplication {log.Printf("%4d\t%-24s\t%-36s\t%s\n", process.Pid, process.Name, filepath.Base(process.RealAppName), process.StartDate)}}}#### Screenshotgopackage mainimport (giDevice "github.com/electricbubble/gidevice""image""image/jpeg""image/png""log""os")func main() {usbmux, err := giDevice.NewUsbmux()if err != nil {log.Fatalln(err)}devices, err := usbmux.Devices()if err != nil {log.Fatalln(err)}if len(devices) == 0 {log.Fatalln("No Device")}d := devices[0]raw, err := d.Screenshot()if err != nil {log.Fatalln(err)}img, format, err := image.Decode(raw)if err != nil {log.Fatalln(err)}userHomeDir, _ := os.UserHomeDir()file, err := os.Create(userHomeDir + "/Desktop/s1." + format)if err != nil {log.Fatalln(err)}defer func() { _ = file.Close() }()switch format {case "png":err = png.Encode(file, img)case "jpeg":err = jpeg.Encode(file, img, nil)}if err != nil {log.Fatalln(err)}log.Println(file.Name())}#### SimulateLocationgopackage mainimport (giDevice "github.com/electricbubble/gidevice""log")func main() {usbmux, err := giDevice.NewUsbmux()if err != nil {log.Fatalln(err)}devices, err := usbmux.Devices()if err != nil {log.Fatalln(err)}if len(devices) == 0 {log.Fatalln("No Device")}d := devices[0]// https://api.map.baidu.com/lbsapi/getpoint/index.htmlif err = d.SimulateLocationUpdate(116.024067, 40.362639, giDevice.CoordinateSystemBD09); err != nil {log.Fatalln(err)}// https://developer.amap.com/tools/picker// https://lbs.qq.com/tool/getpoint/index.html// if err = d.SimulateLocationUpdate(120.116979, 30.252876, giDevice.CoordinateSystemGCJ02); err != nil {// log.Fatalln(err)// }// if err = d.SimulateLocationUpdate(121.499763, 31.239580,giDevice.CoordinateSystemWGS84); err != nil {// if err = d.SimulateLocationUpdate(121.499763, 31.239580); err != nil {// log.Fatalln(err)// }// err = d.SimulateLocationRecover()// if err != nil {// log.Fatalln(err)// }}Seedance 2 Delivers High Fidelity Motion and Audio Sync
Nano Banana AI Image Generator for Professional Image Creation with Nano Banana Pro Models
Create Cinematic AI Videos from Text or Images with Seedance 1.5
The Tatted AI Tattoo Generator is a tool that allows you to create beautiful custom tattoos within seconds.
Discover your PSL (Perceived Sexual Market Value) score with our AI-powered facial analysis
IPYNB to PDF Converter – Free & Secure