SDMMobileDevice
Table of Contents
What is this?
SDMMobileDevice is a framework that enables access to communicating with iOS devices. This framework serves as a public and documented way to interact with iOS devices and the services that exist on iOS devices.
SDMMobileDevice is a framework that can be used interchangeably with Apple's private framework MobileDevice.framework
What can this project do for me?
This framework gives access to a number of technologies that have previously been "off limits" to developers. Due to being a private and undocumented API, MobileDevice.framework has not been something that can be safely interacted with. This framework provides access to:
- Detecting attached iOS devices
- Querying iOS devices for software and hardware configurations
- Communication with device services
- Sandbox access to applications installed on iOS devices
- Installation of applications onto iOS devices
- File transfers
How do I use this?
SDMMobileDevice is an OS X framework and can be used in two ways:
Special Note: Entitlements
Bundled Framework
You are already almost done!
- Add SDMMobileDevice.framework as a linked library
- Add a new build phase that copies "SDMMobileDevice.framework" to the "Frameworks" directory of your app.
- Add "@loader_path/../Frameworks" to "Runtime Search Paths"
- Add
#include <SDMMobileDevice/SDMMobileDevice.h>
to your source code
Source Code
If you wish you use this as source code, it will require the following libraries:
- CoreFoundation.framework
- libcrypto.dylib
- libssl.dylib
- IOKit.framework
If you have trouble locating any of these, please look at the "-Framework" xcode project file to get the paths for these libraries.
Entitlements (where applicable)
See this file
FAQ
Q. Why do I get so many warnings when compiling?
A. The warnings are from the openssl and libcrypto calls that Apple has deprecated starting in 10.7, I am looking to replace these with CommonCrypto or bundling openssl and libcrypto so these errors don't happen.
Q. When is the Cocoa version coming?
A. Soon! I am working to provide a few more core features and keeping the whole thing compatible with MobileDevice and keeping it as a completely C library. The Cocoa wrapper for this will come as soon as I have finished the AFC implementation and have working wireless communication.
Q. How do I use this with MobileDevice.framework
A. For the most part SDMMobileDevice is cross-compatible with MobileDevice's function calls and object types. Function calls with matching names (remove the "SDMMD" prefix and underscores), will have matching parameters and types to what MobileDevice uses. Majority of the object types are reconstructed to match in internal layout.
Q. How can I contribute?
A. See the wiki for details on submitting pull requests.
Help
I have created a IRC room on freenode to serve as general discussion and research.
Server: irc.freenode.net
Room: #sdmmobiledevice
Quicklink: webchat