Androidモバイルアプリのラッピング

ここでは、Citrix Endpoint Managementの管理者がサードパーティ製のエンタープライズアプリをラップする方法と、開発者がISVアプリをラップする方法について説明します。Androidモバイルアプリをラップするには、MDX Toolkitを使用します。MDX Toolkitには、macOSグラフィカルユーザーインターフェイスツールとJavaコマンドラインツールが含まれます。コマンドラインツールにはカスタマイズのオプションがあり、アプリのラッピングプロセスを自動化するスクリプトから参照でき、MDXポリシーを事前設定できます。

ラップされたアプリのファイルタイプは.mdxです。.mdxファイルをEndpoint Managementコンソールにアップロードし、このコンソールでEndpoint Management Storeが適用する特定のアプリの詳細およびポリシー設定を構成します。ユーザーがサインオンすると、アプリストアにアプリが表示されます。ユーザーはアプリをサブスクライブし、ダウンロードして、デバイス上にインストールできます。

以下の図は、MDX Toolkitのインストールから業務用モバイルアプリのテストまで、アプリをラップする手順の概要です。図の下の一覧は、関連するトピックです。

Androidアプリのアプリラッピングフロー

番号1について詳しくは、以下を参照してください。

番号2について詳しくは、以下を参照してください。

重要:

アプリのラップに使用されるMDX Toolkitのバージョンと互換性があるSecure Hubのバージョンでユーザーデバイスを更新してください。更新しない場合、互換性がないことを示すエラーメッセージが表示されます。詳しくは、「Endpoint Managementの互換性」を参照してください。

GUIを使ったISVアプリラッピング

以下の手順は、Google Play Storeから展開するISVアプリのラッピングに関する一般的なプロセスです。

  1. ツールキットを使用してアプリをラップする前に、必要な場合に元に戻すことができるよう、アプリの元のバージョンのバックアップを作成します。

  2. iOSアプリケーションフォルダーからMDX Toolkitを開始して、[Independent Software Vendors(ISVs)] を選択し、[Next] をクリックします。

    MDX Toolkitウィザードの画像

  3. アプリストア画面の [Deploy] でアプリを選択して [Next] をクリックします。

  4. アプリストアURLがある場合、[User Settings] 画面に入力します。URLがない場合は、https://play.google.com/store/apps/details?id=com.citrixのようなプレースホルダーを入力します。URLは後から更新できます。

    Premiumアプリの場合は、[MDX apps] を選択します。Generalアプリの場合は [App Store apps] を選択します。

    MDX Toolkitユーザー設定画面の画像

  5. [Verify App Details] 画面で必要な詳細を更新します。

  6. キーストアを参照して [Create] をクリックします。

    MDX Toolkit App Store URLオプションの画像

  7. アプリを保存します。

    MDXオプション保存の画像

    GUIツールによるアプリのラップが終了すると、アプリケーションファイル名は「_andr」が付加されています。

コマンドラインを使ったAndroidのエンタープライズアプリラッピング

エンタープライズアプリラッピングを使ってカスタム(インハウス)アプリおよび一部のサードパーティ製アプリをラップできます。サードパーティ製のアプリはアプリケーションのベンダーから直接購入する必要があります。エンタープライズアプリラッピングの場合、Androidアプリケーション(.apk)から始めます。ツールキットを使用してアプリをラップする前に、必要な場合に元に戻すことができるよう、アプリの元のバージョンのバックアップを作成します。

次の例は、デフォルトの設定を使った基本的なアプリラッピングコマンドを示しています。アプリは指定のキーストアで署名されます。キーストアは、Androidアプリの署名に使用される証明書を含むファイルです。キーストアに複数の秘密鍵が含まれる場合、キーエイリアスを指定できます。キーストアを1回作成します。 次に、作成したキーストアを使用してラップするアプリに署名します。以前に展開したアプリの新しいバージョンをラップする時に違うキーストアを使用すると、このアプリのアップグレードは機能しなくなります。ユーザーは新しいバージョンをインストールする前に、古いバージョンを手動で削除する必要があります。

特定のシステムについて、太字の情報を変更します。末尾のバックスラッシュは、コマンドが次の行に続いていることを意味しています。コマンドを実行する前に、これらの記号を削除してください。

注:

/Applications/ディレクトリは制限されているため、スーパーユーザーモードで次のコマンドを実行する必要があることがあります。これを実行するには、コマンドの前にsudoを追加します。この制限されたディレクトリから実行する場合は、コンピューターのパスワードが求められます。

java -jar /Applications/Citrix/MDXToolkit/ManagedAppUtility.jar \
wrap \
-in ~/Desktop/SampleApps/Sample.apk \
-out ~/Desktop/SampleApps/Sample.mdx \
-keystore ~/Desktop/MyCompany.keystore \
-storepass MyKeystorePassword \
-keyalias MyCompanyKeyAlias \
-keypass MyKeyAliasPassword
<!--NeedCopy-->

以下は、太字の情報を変更した後で、前述のコマンドに追加できるオプションの例です。

  • -appName “ラップされたサンプルアプリ”
  • -appDesc “これは新しくラップされたAndroidアプリです。”

また、展開中リリースキーストアが使用できない場合、次のコマンドを使用して使用中のキーで署名されたモバイルアプリのリテールビルドを作成します。

java -jar /Applications/Citrix/MDXToolkit/ManagedAppUtility.jar \
wrap \
-in ~/Desktop/SampleApps/Sample.apk \
-out ~/Desktop/SampleApps/Sample.mdx \
-keystore ~/Desktop/MyCompany.keystore \
-storepass MyKeystorePassword \
-keyalias MyCompanyKeyAlias \
-keypass MyKeyAliasPassword \
-createCert
<!--NeedCopy-->

このオプションについて詳しくは、「コマンドオプション」を参照してください。インラインドキュメントを表示するには、–helpオプションを使用します。

コマンドラインを使ったAndroid ISVアプリラッピング

ツールキットを使用してアプリをラップする前に、必要な場合に元に戻すことができるよう、アプリの元のバージョンのバックアップを作成します。Android用のラップされたISVアプリケーションを生成するには、次の基本的ラッピングコマンドから始めます。

java -jar /Applications/Citrix/MDXToolkit/ManagedAppUtility.jar \
wrap \
-in ~/Desktop/SampleApps/Sample.apk \
-out ~/Desktop/SampleApps/Sample.mdx \
-keystore ~/Desktop/MyCompany.keystore \
-storepass MyKeystorePassword \
-keyalias MyCompanyKeyAlias \
-keypass MyKeyAliasPassword \
-createCert
<!--NeedCopy-->

アプリをISVアプリケーションとしてラップするには、-apptypeパラメーターを次のように設定する必要があります:

  • Premium:管理対象外のユーザーにもCitrixポリシーを適用するPremiumアプリとしてアプリをラップするには、次のオプションを追加します。-apptype Premium
  • General:Citrixポリシーの適用がないGeneralアプリとしてアプリをラップするには、次のオプションを追加します。-apptype General

ラップされた.apkファイルをGoogle PlayストアまたはWebサーバーにアップロードする必要があり、ラップ時にURLがわかる場合、-storeURLオプションを追加します。apptypeパラメーターを確実に設定してください。

-storeURL "https://play.google.com/store/apps/details?id=com.zenprise"

ラップ時にURLがわからない場合は、次のコマンドを使って後から.mdxファイルを変更できます。

java -jar /Applications/Citrix/MDXToolkit/ManagedAppUtility.jar \
setinfo \
-in ~/Desktop/SampleApps/Sample.mdx \
-out ~/Desktop/SampleApps/wrapped/Sample.mdx \
-storeURL \
“https://play.google.com/store/apps/details?id=com.zenprise”
<!--NeedCopy-->

ポリシーファイルをカスタマイズする場合、変更されたファイルを参照することを確認します。

-policyxml /Applications/Citrix/MDXToolkit/data/policy_metadata.xmlこのオプションについて詳しくは、「コマンドオプション」を参照してください。インラインドキュメントを表示するには、–helpオプションを使用します。

コマンドオプション

wrapコマンド

  • Help: このコマンドのヘルプを表示します。
  • In: 必須。ラッピングするアプリのパスおよびファイル名です。
  • Out: 任意。出力される.mdxファイルのパスおよびファイル名です。このオプションを省略すると、入力ファイルと同じパスおよびファイル名と、mdx拡張子が使用されます。
  • AppType: 任意。デフォルトはMDXOnlyです。ISVアプリを生成するには、GeneralまたはPremiumを使用します。
  • KeyStore: キーストアファイルへのパス。.apkファイルに署名する場合に必要です。
  • StorePass: キーストアのパスワードです。.apkファイルに署名する場合に必要です。
  • KeyAlias: キーストア内の特定のキーの名前です。.apkファイルに署名する場合に必要です。
  • KeyPass: 特定のキーのパスワードです。.apkファイルに署名する場合に必要です。
  • SigAlg: 任意。署名時に使用するアルゴリズムです。
  • AppName: 任意。アプリから取得したアプリ名(可能な場合)。
  • AppDesc: 任意。アプリから取得したアプリの説明(可能な場合)。
  • MinPlatform: 任意。サポートされる最小SDKレベルです。デフォルトは空白です。
  • MaxPlatform: 任意。サポートされる最大SDKレベルです。デフォルトは空白です。
  • ExcludedDevices: 任意。アプリの実行が許可されていないデバイスの種類一覧です。デフォルトは空白です。
  • PolicyXML: 任意。置換用のXMLポリシー定義ファイルとパスです。デフォルトは組み込みポリシー定義です。例:

    -policyxml/Applications/Citrix/MDXToolkit/data/policy_metadata.xml

    詳しくは、次の「AndroidアプリのMDXポリシーの事前設定」を参照してください。

  • StoreURL: ISVアプリの場合、Google App StoreのアプリのURL デフォルトは空白です。

signコマンド

  • Help: このコマンドのヘルプを表示します。
  • In: 必須。ラッピングするアプリのパスおよびファイル名です。
  • Out: 任意。出力される.mdxファイルのパスおよびファイル名です。このオプションを省略すると、入力ファイルと同じパスおよびファイル名と、mdx拡張子が使用されます。
  • KeyStore: 必須。キーストアファイルへのパス。
  • StorePass: 必須。キーストアのパスワードです。
  • KeyAlias: 必須。キーストア内の特定のキーの名前です。
  • KeyPass: 必須。特定のキーのパスワードです。
  • SigAlg: 任意。署名時に使用するアルゴリズムです。

setinfoコマンド

  • Help: このコマンドのヘルプを表示します。
  • In: 必須。変更するアプリのパスおよびファイル名です。
  • Out: setinfoの出力パスまたはファイル名は入力時と異なるものを使用する必要があります。
  • AppType: 任意。デフォルトはMDXOnlyです。ISVアプリを生成するには、GeneralまたはPremiumを使用します。
  • KeyStore: キーストアファイルへのパス。.apkファイルに署名する場合に必要です。
  • StorePass: キーストアのパスワードです。.apkファイルに署名する場合に必要です。
  • KeyAlias: キーストア内の特定のキーの名前です。.apkファイルに署名する場合に必要です。
  • KeyPass: 特定のキーのパスワードです。.apkファイルに署名する場合に必要です。
  • SigAlg: 任意。署名時に使用するアルゴリズムです。
  • AppName: 任意。アプリから取得したアプリ名(可能な場合)。
  • AppDes: 任意。アプリから取得したアプリの説明(可能な場合)。
  • MinPlatform: 任意。サポートされる最小SDKレベルです。デフォルトは空白です。
  • MaxPlatform: 任意。サポートされる最大SDKレベルです。デフォルトは空白です。
  • ExcludedDevices: 任意。アプリの実行が許可されていないデバイスの種類一覧です。デフォルトは空白です。
  • StoreURL: ISVアプリの場合、Google App StoreのアプリのURL デフォルトは空白です。
  • PolicyXML: 任意。置換用のXMLポリシー定義ファイルとパスです。デフォルトは組み込みポリシー定義です。例:

    -policyxml /Applications/Citrix/MDXToolkit/data/policy_metadata.xml

    詳しくは、次の「AndroidアプリのMDXポリシーの事前設定」を参照してください。

AndroidアプリのMDXポリシーの事前設定

MDX Toolkitコマンドラインツールでラップするアプリには、MDXポリシーを事前設定できます。アプリを追加する場合は、Citrix Endpoint Managementコンソールでポリシーを構成することもできます。

  1. ポリシーXMLファイルでポリシー値を更新します。

    MDX Toolkitインストーラーがポリシーファイルを作成します。Applications/Citrix/MDXToolkit/data/policy_metadata.xml

    注:

    ポリシーファイルは、iOSおよびAndroidで異なりますので注意してください。両方のプラットフォームのポリシーを事前設定するには、それぞれのポリシーXMLファイルを更新する必要があります。

  2. コマンドラインでアプリをラップする時は、次を含めます。

    -policyxml /Applications/Citrix/MDXToolkit/data/policy_metadata.xml

Androidアプリのラッピングエラーの識別

Androidアプリをラップしようとしてエラーが発生する場合は、MDX Toolkitのログを使ってエラーを識別できます。MDX Toolkitのログを確認するには、管理者権限が必要です。

MDX Toolkitを実行すると、ツールにより次の場所にログファイルが自動的に保存されます。Applications/CitrixMDXToolkit/Logs/Citrix.log。デフォルトでは、ツールによって警告およびエラーがログに保存されます。

コマンドラインからログを収集する

  1. Android Developer WebサイトからAndroid Debug Bridgeをインストールします。詳しくは、「Android Debug Bridge」を参照してください。
  2. 次のコマンドを入力して、既存のログをクリアします。“adb logcat -c”
  3. 問題を再現します。
  4. 次のコマンドを入力して、ログをファイルにキャプチャします。adb logcat -d > Name_of_Log_File.txt
Androidモバイルアプリのラッピング