{"id":13524085,"url":"https://github.com/imkira/mobiledevice","last_synced_at":"2025-10-21T04:53:58.901Z","repository":{"id":2554765,"uuid":"3533404","full_name":"imkira/mobiledevice","owner":"imkira","description":"Command line utility for interacting with Apple's Private (Closed) Mobile Device Framework","archived":false,"fork":false,"pushed_at":"2018-09-11T08:54:37.000Z","size":66,"stargazers_count":680,"open_issues_count":7,"forks_count":134,"subscribers_count":28,"default_branch":"master","last_synced_at":"2025-10-19T19:55:34.289Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/imkira.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2012-02-24T06:41:13.000Z","updated_at":"2025-10-16T02:41:46.000Z","dependencies_parsed_at":"2022-07-16T14:18:20.569Z","dependency_job_id":null,"html_url":"https://github.com/imkira/mobiledevice","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/imkira/mobiledevice","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/imkira%2Fmobiledevice","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/imkira%2Fmobiledevice/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/imkira%2Fmobiledevice/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/imkira%2Fmobiledevice/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/imkira","download_url":"https://codeload.github.com/imkira/mobiledevice/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/imkira%2Fmobiledevice/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":280207194,"owners_count":26290616,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-21T02:00:06.614Z","response_time":58,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-01T06:01:06.852Z","updated_at":"2025-10-21T04:53:58.861Z","avatar_url":"https://github.com/imkira.png","language":"C++","funding_links":[],"categories":["Command Line","C++"],"sub_categories":["Dependency Management"],"readme":"[日本語はこちら](https://github.com/imkira/mobiledevice/blob/master/README_JP.md)\n\nmobiledevice\n============\n\n[![Build Status](https://travis-ci.org/imkira/mobiledevice.png)](https://travis-ci.org/imkira/mobiledevice)\n\nmobiledevice is a command line utility for interacting with Apple's Private\nMobile Device Framework.  It can be used for automating some tasks like\ninstalling and uninstalling apps on your iPhone/iPad without having to manually\ndo it via Xcode or iTunes.  You don't need a jailbroken device!\n\n## Requirements\n\n* iPhone 3G and above should work / iPad too (tested on iPhone 4, 5, 6).\n* Plug in your iPhone/iPad to your Mac via USB.\n* In order to install apps on the device, you need the iOS development\n  certificates previously installed.\n* Mac OS X 10.6 and above.\n* XCode 3 or above with iOS SDK installed.\n* You need to compile the tool and optionally install it.\n\n## Installation\n\n### Homebrew\n\nIf you use [homebrew](http://brew.sh), you can install mobiledevice by\nexecuting:\n\n```shell\nbrew update\nbrew install mobiledevice\n```\n\n### Manual\n\nTo compile mobiledevice, open a terminal console and type:\n\n```shell\ngit clone git://github.com/imkira/mobiledevice.git\ncd mobiledevice\nmake\n```\n\nTo install mobiledevice in your system, proceed with:\n\n```shell\nmake install\n```\n\n## Usage\n\n### Help\n\nAfter compiling/installing mobiledevice, open a terminal console.\n\nFor the usage screen, you can type\n\n```shell\nmobiledevice help\n```\n\nand the following will be displayed:\n\n```\nmobiledevice help\n  Display this help screen\n\nmobiledevice version [options]\n  Display program version.\n  Options:\n    -r: Include revision identifier\n\nmobiledevice list_devices [options]\n  Display UDID of each connected devices.\n  Options:\n    -t \u003ctimeout\u003e: Timeout (in ms) to wait for devices (default: 1)\n    -n \u003ccount\u003e : Limit the number of devices to be printed\n\nmobiledevice list_device_props [options]\n  List all property names of device.\n  Options:\n    -u \u003cudid\u003e : Filter by device UDID (default: first detected device)\n    -t \u003ctimeout\u003e: Timeout (in ms) to wait for devices (default: 1)\n\nmobiledevice get_device_prop [options] \u003cprop_name\u003e\n  Display value of device property with given name.\n  Options:\n    -u \u003cudid\u003e : Filter by device UDID (default: first detected device)\n    -t \u003ctimeout\u003e: Timeout (in ms) to wait for devices (default: 1)\n\nmobiledevice list_apps [options]\n  Lists all apps installed on device\n  Options:\n    -u \u003cudid\u003e : Filter by device UDID (default: first detected device)\n    -t \u003ctimeout\u003e: Timeout (in ms) to wait for devices (default: 1)\n\nmobiledevice list_app_props [options] \u003cbundle_id\u003e\n  List all property names of app with given bundle id.\n  Options:\n    -u \u003cudid\u003e : Filter by device UDID (default: first detected device)\n    -t \u003ctimeout\u003e: Timeout (in ms) to wait for devices (default: 1)\n\nmobiledevice get_app_prop [options] \u003cbundle_id\u003e \u003cprop_name\u003e\n  Display value of app property with given name.\n  Options:\n    -u \u003cudid\u003e : Filter by device UDID (default: first detected device)\n    -t \u003ctimeout\u003e: Timeout (in ms) to wait for devices (default: 1)\n\nmobiledevice install_app [options] \u003cpath_to_app\u003e\n  Install app (.app folder) to device\n  Options:\n    -u \u003cudid\u003e : Filter by device UDID (default: first detected device)\n    -t \u003ctimeout\u003e: Timeout (in ms) to wait for devices (default: 1)\n\nmobiledevice uninstall_app [options] \u003cbundle_id\u003e\n  Uninstall app with given bundle id from device\n  Options:\n    -u \u003cudid\u003e : Filter by device UDID (default: first detected device)\n    -t \u003ctimeout\u003e: Timeout (in ms) to wait for devices (default: 1)\n\nmobiledevice tunnel [options] \u003cfrom_port\u003e \u003cto_port\u003e\n  Forward TCP connections to connected device\n  Options:\n    -u \u003cudid\u003e : Filter by device UDID (default: first detected device)\n    -t \u003ctimeout\u003e: Timeout (in ms) to wait for devices (default: 1)\n\nmobiledevice get_bundle_id \u003cpath_to_app\u003e\n  Display bundle identifier of app (.app folder)\n```\n\nOn failure, all commands exit with status code set to a non-zero value, and\nsome print messages to stderr indicating the kind of error.\n\nOn success,  all commands exit with status code set to 0.\n\n### List devices\n\nTo list all connected devices, you can type\n\n```\nmobiledevice list_devices\n```\n\nAnd all devices will be listed by UDID like the following:\n\n```\naaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d\n7c211433f02071597741e6ff5a8ea34789abbf43\n0ab8318acaf6e678dd02e2b5c343ed41111b393d\n```\n\nIn the previous example, there are 3 connected devices.\nIf you want to limit the number of results you can pass the ```-n \u003ccount\u003e```\nflag as follows:\n\n```\nmobiledevice list_devices -n 1\n```\n\nThe output will be, as expected, trimmed to one device.\n\n```\naaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d\n```\n\n### List device properties\n\nTo list all properties about a device, you can type:\n\n```\nmobiledevice list_device_props\n```\n\nThe output should be something like:\n\n```\nActivationPublicKey\nActivationState\nActivationStateAcknowledged\nBasebandSerialNumber\nBasebandStatus\nBasebandVersion\nBluetoothAddress\nBuildVersion\nCPUArchitecture\nDeviceCertificate\nDeviceClass\nDeviceColor\nDeviceName\nDevicePublicKey\nDieID\n...\n```\n\nTo specify a different device, you can also append the ```-u \u003cudid\u003e``` flag as\nfollows:\n\n```\nmobiledevice list_device_props -u 7c211433f02071597741e6ff5a8ea34789abbf43\n```\n\nNotes:\n\n* If ```-u \u003cudid\u003e``` is not provided, the first detect device will be used.\n\n### Get device property value\n\nTo display the value of a device property with a given name, you can type:\n\n```\nmobiledevice get_device_prop property_name\n```\n\nFor example to get information on the product type of the device, you can use ```ProductType``` as property name:\n\n```\nmobiledevice get_device_prop ProductType\n```\n\nTo specify a different device, you can also append the ```-u \u003cudid\u003e``` flag as\nfollows:\n\n```\nmobiledevice get_device_prop -u 7c211433f02071597741e6ff5a8ea34789abbf43\nproperty_name\n```\n\nNotes:\n\n* If ```-u \u003cudid\u003e``` is not provided, the first detect device will be used.\n* On successful execution, the output consists of the value followed by a\n  newline character.\n\n### List applications\n\nTo get the list of installed apps, type:\n\n```\nmobiledevice list_apps\n```\n\nThe output should be something like:\n\n```\ncom.apple.VoiceMemos\ncom.apple.mobiletimer\ncom.apple.AdSheetPhone\ncom.apple.weather\ncom.apple.iphoneos.iPodOut\ncom.apple.mobilesafari\ncom.apple.Preferences\n...\ncom.mycompany.myapp1\ncom.mycompany.myapp2\n...\n```\n\nTo specify a different device, you can also append the ```-u \u003cudid\u003e``` flag as\nfollows:\n\n```\nmobiledevice list_apps -u 7c211433f02071597741e6ff5a8ea34789abbf43\n```\n\nNotes:\n\n* If ```-u \u003cudid\u003e``` is not provided, the first detect device will be used.\n\n### List application properties\n\nTo display the value of a device property with a given name, you can type:\n\n```\nmobiledevice list_app_props com.mycompany.myapp\n```\n\nThe output should be something like:\n\n```\nSBIconClass\nCFBundleInfoDictionaryVersion\nEntitlements\nDTPlatformVersion\nCFBundleName\nDTSDKName\nApplicationType\nUIViewControllerBasedStatusBarAppearance\nCFBundleIcons\nUIStatusBarStyle\nContainer\nLSRequiresIPhoneOS\nCFBundleDisplayName\nPrivateURLSchemes\nUIBackgroundModes\nDTSDKBuild\n...\n```\n\nTo specify a different device, you can also append the ```-u \u003cudid\u003e``` flag as\nfollows:\n\n```\nmobiledevice list_app_props -u 7c211433f02071597741e6ff5a8ea34789abbf43 com.mycompany.myapp\n```\n\nNotes:\n\n* If ```-u \u003cudid\u003e``` is not provided, the first detect device will be used.\n\n### Get application property value\n\nTo display the value of an application property with a given name, you can type:\n\n```\nmobiledevice get_app_prop com.mycompany.myapp property_name\n```\n\nFor example to get the path where Apple's Weather app is installed on the device, you can use ```Path``` as property name:\n\n```\nmobiledevice get_app_prop com.apple.weather Path\n```\n\nTo specify a different device, you can also append the ```-u \u003cudid\u003e``` flag as\nfollows:\n\n```\nmobiledevice get_app_prop -u 7c211433f02071597741e6ff5a8ea34789abbf43 com.mycompany.myapp Path\n```\n\nNotes:\n\n* If ```-u \u003cudid\u003e``` is not provided, the first detect device will be used.\n* On successful execution, the output consists of the value followed by a\n  newline character.\n\n### Install application\n\nTo install an app on the device, you can type:\n\n```\nmobiledevice install_app path/to/my_application.app\n```\n\nTo specify a different device, you can also append the ```-u \u003cudid\u003e``` flag as\nfollows:\n\n```\nmobiledevice install_app -u 7c211433f02071597741e6ff5a8ea34789abbf43 path/to/my_application.app\n```\n\nNotes:\n\n* If ```-u \u003cudid\u003e``` is not provided, the first detect device will be used.\n\n### Uninstall application\n\nTo uninstall an app from the device, pass in the bundle identifier and type:\n\n```\nmobiledevice uninstall_app com.mycompany.myapp\n```\n\nTo specify a different device, you can also append the ```-u \u003cudid\u003e``` flag as\nfollows:\n\n```\nmobiledevice uninstall_app -u 7c211433f02071597741e6ff5a8ea34789abbf43 com.mycompany.myapp\n```\n\nNotes:\n\n* If ```-u \u003cudid\u003e``` is not provided, the first detect device will be used.\n\n### Forward (tunnel) TCP connections from Mac to the device\n\nIf your app creates a TCP server by listening on some port, it may be useful to\nconnect to it via USB (no need for WiFi/3G connection). mobiledevice allows\nyou to create a tunnel between your Mac and your device, via a USB cable.\nIf you connect to your Mac (on localhost or 127.0.0.1) mobiledevice will\nforward that connection to the device on the specified port by typing something\nlike:\n\n```\nmobiledevice tunnel 8080 80\n```\n\nThe previous example attempts to illustrate a tunnel between your Mac's TCP\nport 8080 and the device's TCP port 80. The output would be something like:\n\n```\nTunneling from local port 8080 to device port 80...\n```\n\nFrom this point you can `telnet localhost 8080` and communicate with the server\nrunning at TCP port 80 on the mobile app!\n\nTo specify a different device, you can also append the ```-u \u003cudid\u003e``` flag as\nfollows:\n\n```\nmobiledevice tunnel -u 7c211433f02071597741e6ff5a8ea34789abbf43 8080 80\n```\n\nNotes:\n\n* If ```-u \u003cudid\u003e``` is not provided, the first detect device will be used.\n* Please note that if you keep the process open, it will keep forwarding\n  connections. If and when you decide to terminate it (for instance, by\n  pressing CTRL-C), it will terminate all currently tunnelled connections and\n  stop accepting more connections to it.\n* Also note that mobiledevice allows you to keep multiple connections open to\n  the same TCP port on the device (by running a single instance of\n  mobiledevice), or to different ports (by running multiple instances of\n  mobiledevice and specifying the ports for each).\n\n### Get the bundle identifier of an application\n\nThis is just an utility command, and is not related to the MobileDevice\nFramework.  To get the bundle identifier (e.g. com.mycompany.myapp) of an .app\nyou can type the following command (bear in mind it must be a valid .app\nfolder, not a .ipa!):\n\n```\nmobiledevice get_bundle_id path/to/my_application.app\n```\n\nNotes:\n\n* Please note that the previous path is on your local computer, not a path to the device.\n\n## Contribute\n\nFound a bug? Want to contribute and add a new feature?\n\nPlease fork this project and send me a pull request!\n\n### Contributors\n\n* ruudputs: Added initial support for multiple devices.\n* leopatras: Simplified obj-c string-related code and adoption of ARC.\n* 7bp: Fixed compilation issues.\n* k-yamada: Fixed usage screen typos.\n\nYou can check the [full list here](https://github.com/imkira/mobiledevice/graphs/contributors).\n\n## License\n\nmobiledevice is licensed under the MIT license:\n\nwww.opensource.org/licenses/MIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fimkira%2Fmobiledevice","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fimkira%2Fmobiledevice","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fimkira%2Fmobiledevice/lists"}