IdbClient — way to control apple devices via kotlin library

Sergei Khramkov
2 min readMay 11, 2024

--

It is the way to get access to the idb programmatically, using kotlin/java. You can control Apple devices and simulators from your code with this client, which creates a connection to them by grpc. All you need to set up is to install the idb companion on your Mac and run it. You can use idb client connection from any architecture.

How to start?

Import library

<dependency>
<groupId>io.github.sergkhram</groupId>
<artifactId>idbclient</artifactId>
<version>0.0.7-RELEASE</version>
</dependency>

Create the controller object and use it to connect to idb companions

val idb = IOSDebugBridgeClient()
val udid = idb.connectToCompanion(TcpAddress("127.0.0.1", 10882))

Execute the request(eg send push notification)

idb.execute(
SendNotificationRequest(
iosAppBundleId, //application bundle
pushData //data for push
),
udid //apple device udid
)

What we have as the result?

When we create the client and connect to companion — we save the information about the host/port to idb companion started on target mac. During the request we create the grpc connection and do some actions, eg send the push data. We will see the push notification, that we send , using our client via grpc connection.

We store all connected companions data until we close the client or disconnect a certain companion.

IdbClient Commands:

App requests:

  • Install request
  • Launch request
  • List apps request
  • Terminate request
  • Uninstall request

Crash requests:

  • Crash delete request
  • Crash list request
  • Crash show request

Files requests:

  • Ls request
  • Mkdir request
  • Mv request
  • Pull request
  • Push request
  • Rm request
  • Tail request

Interaction requests:

  • Accessibility info request
  • Focus request
  • Hid request
  • Open url request
  • Send notification request
  • Set location request
  • Simulate Memory Warning request

Management requests:

  • Connect request
  • Debug server request
  • Describe request
  • Log request

Media requests:

  • Add media request
  • Record request
  • Screenshot request
  • Video stream request

Settings requests:

  • Approve request
  • Clear keychain request
  • Contacts update request
  • Get setting request
  • Get settings request
  • Revoke request
  • Setting request

Xctest requests:

  • Xctest install request
  • Xctest list bundles request
  • Xctest list tests request
  • Xctest run request

More info:

You can see more info about IdbClient in this page: https://github.com/SergKhram/IdbClient or by official documentation

https://sergkhram.github.io/IdbClient/

More links:

Idb: https://fbidb.io/docs/installation

Idb Commands: https://fbidb.io/docs/commands

--

--

Sergei Khramkov
Sergei Khramkov

Written by Sergei Khramkov

0 Followers

QA Automation Engineer

No responses yet