iOS でのソース コードでのインストルメント

この章では、iOS でソース コードを使用してアプリをインストルメントする方法について説明します。

tipp icon

注意

ソース コードによるインストルメントは、iOS 開発者のみがおこなうことを推奨します。

tipp icon

注意

Ranorex Studio をバージョンアップした場合 (つまり、より新しいオートメーション ライブラリおよび Ranorex Service App を使用する場合)、アプリを再度インストルメントしてください。再インストルメントをおこなわないと、意図しない動作となる場合があります。

Mac 上で、”Mobile Download Archive” から、Automation Library をダウンロードします。

Note icon

メモ

Ranorex Automation Library のファイル サイズは約 30MB です。しかしその結果、ユーザーのアプリが 自動的に 30MB を超えるサイズになるわけではありません。Automation Library はユニバーサル ライブラリであり、ユーザーのアプリに必要な部分のみが、アプリのコンパイル時に動的に追加されます。

テスト対象アプリの Xcode プロジェクトを開きます。

インストルメントされたアプリを顧客に送らないようにするために、テスト対象アプリ用に個別のターゲットを作成することをおすすめします。プロジェクト ファイルを選択して既存のターゲットを複製してください。

新規に作成されたターゲットの名前を変更します。

Note icon

メモ

Xcode では、必要なファイルの一部が自動的に更新されないため、それらのファイルの名前を手動で更新する必要があります。ターゲット自体、ターゲットの .plist ファイル (ワークスペース、および Build Settings > Packaging)、ターゲットのプロジェクト名 (Build Settings > Packaging)、およびスキーム名 (Product > Manage Schemes) を変更する必要があります。

ダウンロードした Automation Library を、新規作成したターゲットに追加します。

Add new file to project

Choose the lib file and specify the target, i.e. where the lib will be added

この操作をおこなうと、Automation Library が、テスト ターゲットの ‘Build Phases’ ペインにある ‘Linked Binary With Libraries’ リストに表示されます。

This is the caption of the image

CFNetwork Framework をリストに追加します。

Add CFNetwork.framework

Added automation lib and network framework

Note icon

メモ

iOS 8.3 では、さらに IOKit.framework を追加する必要があります。

テストの ‘Build Settings’ ペインで、スイッチ ‘-ObjC -all_load’ をオプション ‘Other Linker Flags’ に追加します。

Set the switches ‘-ObjC’ and ‘-all_load’

‘Info’ ペインで、Bundle Display Name (CFBundleDisplayName) を指定します。
RxServiceApp や Ranorex Studio から、インストルメントした IPA を起動できるように、アプリの設定に URL Schema を追加する必要があります。以下は URL Schema の例です。

<key>CFBundleURLTypes</key>
<array>
      <dict>
  <key>CFBundleTypeRole</key>
    <string>Editor</string>
  <key>CFBundleURLName</key>
    <string>ranorex.your.application.name</string>
  <key>CFBundleURLSchemes</key>
    <array>
          <string>ranorex.your.application.name</string>
    </array>
      </dict>
</array>
tipp icon

注意

アプリ開発者が、アプリを起動するための Schema を抑制するための、Apple API を実装している場合には、RxServiceApp や Ranorex Studio から、インストルメントした IPA を起動できません。

RxServiceApp を起動し、バックグラウンドにします。次に、インストルメントした IPA を起動し、同様にバックグラウンドにします。これにより、インストルメントしたアプリが RxServiceApp に認識されます。

インストルメントしたアプリが、RxServiceApp のリストや、Ranorex Studio に表示されるようになるはずです。

ここまでの手順を実行したら、ユーザーの iOS デバイスおよびシミュレーター用に新規作成されたターゲットとスキームを使用してプロジェクトをビルドできます。

Note icon

メモ

コンソール ペインのデバッグ出力 ‘RxAutomationEngine init‘ で、アプリのインストルメントが成功したかを確認できます。

Successfully instrumented app

Note icon

メモ

  • Ranorex Automation Library は非公開の API を使用しています。そのため、Ranorex でインストルメントしたアプリを App Store に送信しないよう注意してください。アプリがリジェクトされ、一定期間、アプリを App Store に送信することができなくなる可能性があります。
  • WiFi 接続でデバイスを追加するには、iOS デバイスまたはシミュレーター上でテスト対象アプリケーションが起動されている必要があります。
  • テスト用には、開発用プロビジョニング プロファイルを使用する必要があります。配布用プロビジョニング プロファイルは使用しないでください。
  • テスト対象アプリのオブジェクト認識を向上させるには、コントロールのアクセシビリティ ラベル属性を設定してください。
  • Apple API の制限により、RxServicesApp がバックグラウンドモードになっているときに、Ranorex Studio からインストルメント済みの IPA を実行できないことがあります。インストルメント済みの IPA をフォアグラウンドにしてテスト実行することをお勧めします。