Açıklama Yok

tomriddly a6b6c35d15 tool/afcclient: Fix local file name error on pulling folder from device 9 ay önce
.github ac617a8f52 Updated ax_python_devel.m4 4 ay önce
3rd_party bcced6c4f6 Fix attempts to detect Windows using _WIN32 4 ay önce
common 9bc95a0c30 Fix compilation on MSVC 4 ay önce
cython 68df374762 Add support for iOS 17+ Personalized Developer Disk image mounting 10 ay önce
docs ba829e6f1a tools: Add --insecure option to idevicenotificationproxy tool 5 ay önce
include 9bc95a0c30 Fix compilation on MSVC 4 ay önce
m4 ac617a8f52 Updated ax_python_devel.m4 4 ay önce
src 9bc95a0c30 Fix compilation on MSVC 4 ay önce
tools a6b6c35d15 tool/afcclient: Fix local file name error on pulling folder from device 1 ay önce
.gitattributes 5b8c9a825d [github-actions] Windows: Prevent -dirty suffix in version string by disabling CRLF conversion 3 yıl önce
.gitignore d2374c3997 .gitignore: Ignore build target for afcclient 11 ay önce
AUTHORS a902a9a24f Update AUTHORS from git history 13 yıl önce
COPYING 47d60e2b9f Added documentation and licensing information. 16 yıl önce
COPYING.LESSER 47d60e2b9f Added documentation and licensing information. 16 yıl önce
Makefile.am 5f083426b4 automake: Prevent `dist` or `distcheck` when uncommitted changes are present 1 yıl önce
NEWS 15f8652126 Update NEWS with latest changes 4 yıl önce
README.md 12c1c5ec56 Updated README 6 ay önce
autogen.sh 8cf167710b Apply changes towards a project wide common "autogen.sh" file 4 yıl önce
configure.ac c8cdf20fe2 configure: Remove unused check 4 ay önce
doxygen.cfg.in 63bbac545e Move LIBIMOBILEDEVICE_API to public headers 1 yıl önce
git-version-gen 860ffb707a git-version-gen: Prevent multiple lines of output 2 yıl önce

README.md

libimobiledevice

A library to communicate with services on iOS devices using native protocols.

Features

libimobiledevice is a cross-platform software library that talks the protocols to interact with iOS devices.

Unlike other projects, it does not depend on using any existing proprietary libraries and does not require jailbreaking.

Some key features are:

  • Interface: Implements many high-level interfaces for device services
  • Implementation: Object oriented architecture and service abstraction layer
  • Cross-Platform: Tested on Linux, macOS, Windows and Android platforms
  • Utilities: Provides various command-line utilities for device services
  • SSL: Allows choosing between OpenSSL, GnuTLS, or MbedTLS to handle SSL communication
  • Network: Supports network connections with "WiFi sync" enabled devices
  • Python: Provides Cython based bindings for Python

The implemented interfaces of many device service protocols allow applications to:

  • Access filesystem of a device
  • Access documents of file sharing apps
  • Retrieve information about a device and modify various settings
  • Backup and restore the device in a native way compatible with iTunes
  • Manage app icons arrangement on the device
  • Install, remove, list and basically manage apps
  • Activate a device using official servers
  • Manage contacts, calendars, notes and bookmarks
  • Retrieve and remove crashreports
  • Retrieve various diagnostics information
  • Establish a debug connection for app debugging
  • Mount filesystem images
  • Forward device notifications
  • Manage device provisioning
  • Take screenshots from the device screen (requires mounted developer image)
  • Simulate changed geolocation of the device (requires mounted developer image)
  • Relay the syslog of the device
  • Expose a connection for WebKit remote debugging

... and much more.

The library is in development since August 2007 with the goal to bring support for these devices to the Linux Desktop.

Installation / Getting started

Debian / Ubuntu Linux

First install all required dependencies and build tools:

sudo apt-get install \
	build-essential \
	pkg-config \
	checkinstall \
	git \
	autoconf \
	automake \
	libtool-bin \
	libplist-dev \
	libusbmuxd-dev \
	libimobiledevice-glue-dev \
	libtatsu-dev \
	libssl-dev \
	usbmuxd

NOTE: libtatsu (and thus libtatsu-dev) is a new library that was just published recently, you have to build it from source.

If you want to optionally build the documentation or Python bindings use:

sudo apt-get install \
	doxygen \
	cython

Then clone the actual project repository:

git clone https://github.com/libimobiledevice/libimobiledevice.git
cd libimobiledevice

Now you can build and install it:

./autogen.sh
make
sudo make install

If you require a custom prefix or other option being passed to ./configure you can pass them directly to ./autogen.sh like this:

./autogen.sh --prefix=/opt/local --enable-debug
make
sudo make install

By default, OpenSSL will be used as TLS/SSL library. If you prefer GnuTLS, configure with --with-gnutls like this:

./autogen.sh --with-gnutls

MbedTLS is also supported and can be enabled by passing --with-mbedtls to configure. If mbedTLS is not installed in a default location, you need to set the environment variables mbedtls_INCLUDES to the path that contains the MbedTLS headers and mbedtls_LIBDIR to set the library path. Optionally, mbedtls_LIBS can be used to set the library names directly. Example:

./autogen.sh --with-mbedtls mbedtls_INCLUDES=/opt/local/include mbedtls_LIBDIR=/opt/local/lib

Usage

Documentation about using the library in your application is not available yet. The "hacker way" for now is to look at the implementation of the included utilities.

Utilities

The library bundles the following command-line utilities in the tools directory:

Utility Description
idevice_id List attached devices or print device name of given device
idevicebackup Create or restore backup for devices (legacy)
idevicebackup2 Create or restore backups for devices running iOS 4 or later
idevicebtlogger Capture Bluetooth HCI traffic from a device (requires log profile)
idevicecrashreport Retrieve crash reports from a device
idevicedate Display the current date or set it on a device
idevicedebug Interact with the debugserver service of a device
idevicedebugserverproxy Proxy a debugserver connection from a device for remote debugging
idevicediagnostics Interact with the diagnostics interface of a device
ideviceenterrecovery Make a device enter recovery mode
ideviceimagemounter Mount disk images on the device
ideviceinfo Show information about a connected device
idevicename Display or set the device name
idevicenotificationproxy Post or observe notifications on a device
idevicepair Manage host pairings with devices and usbmuxd
ideviceprovision Manage provisioning profiles on a device
idevicescreenshot Gets a screenshot from the connected device
idevicesetlocation Simulate location on device
idevicesyslog Relay syslog of a connected device
afcclient Interact with device filesystem via AFC/HouseArrest

Please consult the usage information or manual pages of each utility for a documentation of available command line options and usage examples like this:

ideviceinfo --help
man ideviceinfo

Contributing

We welcome contributions from anyone and are grateful for every pull request!

If you'd like to contribute, please fork the master branch, change, commit and send a pull request for review. Once approved it can be merged into the main code base.

If you plan to contribute larger changes or a major refactoring, please create a ticket first to discuss the idea upfront to ensure less effort for everyone.

Please make sure your contribution adheres to:

  • Try to follow the code style of the project
  • Commit messages should describe the change well without being too short
  • Try to split larger changes into individual commits of a common domain
  • Use your real name and a valid email address for your commits

We are still working on the guidelines so bear with us!

Links

License

This library and utilities are licensed under the GNU Lesser General Public License v2.1, also included in the repository in the COPYING file.

Credits

Apple, iPhone, iPad, iPod, iPod Touch, Apple TV, Apple Watch, Mac, iOS, iPadOS, tvOS, watchOS, and macOS are trademarks of Apple Inc.

This project is an independent software and has not been authorized, sponsored, or otherwise approved by Apple Inc.

README Updated on: 2024-10-22