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
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)// }}A code-free online store builder to turn views into revenue. Sell digital products, subscriptions, and merch, without fees or hassle.
Convert videos into awesome blog posts.
Fast Image AI instantly transforms your photos into stunning styles like Ghibli, Sketch, and Pixar. Effortlessly control image elements and create amazing effects with just one click.
AI-powered tool that transforms casual photos into professional LinkedIn headshots instantly. No photographer needed—just upload and download.
Crevas unifies Veo 3, Sora 2, Nano Banana and more into one intuitive canvas — so filmmakers can script, prompt, and generate cinematic stories without switching tools or losing consistency.
AI Foto Edit - Text to Image & Image Edit