iOS Plugin
1. Overview
T-Plan iOS Pluginは、iOS version 12 and higher上でiOS Mirror接続を使用したiOSアプリケーションのテストを可能にします。これは、自動化したいiOSアプリケーションに追加する必要があるライブラリです。
このライブラリプラグインは、static形式とdynamic形式の両方で提供されます:
-
static library(.a形式)は、Xcodeプロジェクトに追加する必要があり、アプリケーションのソースコードに2行のコードを追加して更新する必要があります。この方法は、アプリケーションのソースコードにアクセスでき、AUTを自社でビルドすることが許可されているQA組織に適しています。また、キーチェーンAPIに依存するアプリケーションにもこの方法が推奨されます。詳細は静的ライブラリのリンクの章を参照してください。
-
dynamic library(.dylib形式)は、.ipa形式の既存のAd-HocまたはEnterpriseアプリケーションに注入できます。この方法は、アプリケーションのソースコードやビルドプロセスにアクセスできないQA組織に適しています。詳細は動的ライブラリのリンクの章を参照してください。
2. 静的ライブラリのリンク
静的ライブラリの使用は簡単です:
-
最新の静的ライブラリをダウンロードします
-
Xcodeとアプリケーションプロジェクトがあるお使いのMac OS Xマシンに解凍します。
-
XcodeプロジェクトビューでFrameworksフォルダを右クリックし、"Add Files To ..."を選択して、libTPlanTestLib.aファイルを追加します。
-
アプリケーションデリゲートクラスを見つけます。コードに詳しくない場合は、プロジェクトの最上位ノードを右クリックし、"Find in Selected Groups"を選択して、"didFinishLaunchingWithOptions"または"AppDelegate"を含むクラスを検索してください。見つかったら:
-
プロジェクトビューでその親フォルダを右クリックし、"Add Files To ..."を選択して、TPlanTestLib.hファイルを追加します。
-
エディタでアプリデリゲートクラスを開き、ヘッダーにimport句を挿入します:
#import "TPlanTestLib.h" -
didFinishLaunchingWithOptionsメソッドを見つけ、その本体の先頭にsetup_tplan()関数の呼び出しを追加します:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
setup_tplan();
<...other code>
}
-
-
アプリケーションをビルドし、通常の方法でデバイス上で起動します。詳細な手順についてはApplication Automationの章を参照してください。
3. 動的ライブラリのリンク
dynamic library packageは、ライブラリバイナリ(.dylib)とinjector scriptで構成されています。これにより、ソースコードを変更したりXcodeで再ビルドしたりすることなく、iOSのAd-Hocアプリケーション(*.ipa)にライブラリを追加できます。動作の流れは次のとおりです:
-
アプリケーションアーカイブが解凍され、そこにライブラリがコピーされます。
-
このスクリプトは、アプリケーション実行可能ファイルのMach-Oヘッダーにライブラリを追加します。これにより、アプリケーションの起動時にライブラリが確実に読み込まれます。この操作はアプリケーションコードを含む実行可能ファイルの部分に触れないため、一般的に安全で低侵襲的であると考えられています。
-
アプリケーションパッケージへのいかなる変更もその署名を無効にするため、アプリケーションはお使いの配布証明書で再署名され、.ipa形式にパックし直されます。
1. 動的リンクを有効にする
動的リンクを有効にするには、Mac OS Xマシンを用意し、以下のように設定します:
-
最新のXcodeとCommand Line Toolsがインストールされていることを確認してください。確認方法:
-
Xcode->Preferencesを選択し、Downloadsボタンをクリックします。"Command Line Tools"がComponentsセクションに表示されている場合は、インストールしてください。
要件:
-
Mac OS X 10.7(Mountain Lion)以降。
-
Apple Developer Account。
-
Xcode(v5.x以降が必要)が、Command Line Toolsパッケージとともにインストールされていること。ツールをインストールするには:
-
Xcodeを起動し、メニューでXcode->Preferencesを選択します。
-
Downloadsタブに切り替えます。
-
Installを、Command Line Toolsパッケージの横で選択します。
2. ライブラリと環境をセットアップする
動的ライブラリを取得し、環境を確認するには:
-
最新の動的ライブラリパッケージをダウンロードします
-
名前にスペースを含まないパスのハードドライブに解凍します。
-
ターミナルを開き、パッケージディレクトリに移動します。
-
Pythonが正しく設定されているかを確認するには、以下を実行します:
./test_python.sh
-
Pythonが"ImportError: No module named pkg_resources"のようなエラーで失敗する場合は、setuptoolsをインストールしてください:
Sudo curl https://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py | python
-
Pythonが"pkg_resources.DistributionNotFound: altgraph>=0.10"または"pkg_resources.VersionConflict: altgraph 0.9"のようなエラーで失敗する場合は、altgraphライブラリをアップグレードしてください:
/Library/Frameworks/Python.framework/Versions/2.7/bin/easy_install --upgrade altgraph
-
別のPythonインスタンスを呼び出したい場合は、test_python.shを編集し、PYTHON変数を目的のpythonコマンドに設定してください。
3. プロビジョニングプロファイルと証明書をセットアップする
プロビジョニングプロファイルを取得し、以下の手順1と2で説明されているとおりに配布証明書をローカルキーチェーンにインポートします。
注: 配布証明書の名前は後で必要になるため、覚えておいてください。Mac OSのApplications->Utilities->Keychain Accessツールからも取得できます。
手順1: プロビジョニングプロファイルを作成します
-
Provisioning Profilesセクションに切り替えます。
-
"+"ボタンをクリックして新しいプロファイルを作成します:
-
"Ad Hoc"プロファイルタイプを選択します。
-
Xcode iOS Wildcard App IDを選択します。
-
適切な配布証明書を選択します。
-
サーバーの実行を許可するデバイスを選択します。少なくとも1台のデバイスを追加する必要があります。
-
例えば"T-Plan Server"のようにプロファイル名を入力し、Generateを選択します。
-
Downloadを選択して、"T-Plan Server.mobileprovision"ファイルをローカルファイルシステムにダウンロードします。
-
手順2: 証明書を取得します
-
Member Center->Certificates, Identifiers & Profilesに移動し、Certificatesリンク(iOS Appsグループ内)を選択します。
-
iOS(iPhone)配布証明書をダウンロードします。
-
DownloadsまたはFinderから証明書を開きます。これによりキーチェーンにインポートされます。次にMy Certificates画面(Keychain Accessウィンドウ内)で証明書を確認し、名前をメモします。名前は"iPhone Distribution: <name>"のような形式になっているはずです。
環境のセットアップが完了したら、以下を通じてアプリケーションを変更できます:
./add_dylib_and_resign.sh <application>.ipa <profile>.mobileprovision "<distribution_certificate_name>"
スクリプトが正常に実行されると、<application>-modified.ipaという名前の新しいパッケージが作成されます。詳細な手順についてはApplication Automationの章を参照してください。
重要: このプロセスは、Ad-HocまたはEnterprise配布用にビルドされたアプリケーションでのみ機能します。Apple Storeからダウンロードしたアプリケーションは、Appleによって署名されDRMで保護されているため変更できません。スクリプトはそれらを拒否します。