コードを難読化し、クラッシュをモニタする場合は、ProGuard または DexGuard マッピングファイルをアップロードする必要があります。AppDynamics は、アプリケーションがクラッシュスナップショット用の人間が判読可能なスタックトレースを生成するために、マッピングファイルを必要とします。これを行う理由の詳細については、「人間が判読能なクラッシュスナップショットの取得」を参照してください。 

DexGuard は ProGuard 上に構築されているため、コントローラ UI と、マッピングファイルをアップロードするための REST API の一部は、ProGuard ファイルと DexGuard ファイルの両方の ProGuard を参照します。 

このページでは、マッピングファイルを手動でアップロードするための要件、使用可能なメソッド、および手順について説明します。

Gradle および build.gradle ファイルを使用して ProGuard または DexGuard マッピングファイルの自動アップロードを設定することをお勧めします。 

要件

マッピングファイルを手動でアップロードするには、以下を指定してマッピングファイルをアプリケーションの正しいバージョンに関連付ける必要があります。

  • アプリケーションの Android パッケージ名

  • AndroidManifest.xml ファイルまたは build.gradle ファイルのいずれかで指定された)そのアプリケーションのバージョンコード

メソッドのアップロード

その後は、コントローラ UI の Upload Missing ProGuard Mappings ダイアログを使用してマッピングファイルをアップロードすることも、特別な REST API を使用することもできます。提供している ProGuard マッピングファイルごとに、アップロードを個別に実行します。また、別の REST API を使用してアップロードを確認することもできます。

アプリケーションを更新する場合は、新しいバージョンのマッピングファイルをアップロードする必要があります。

コントローラ UI を使用したアップロード

  1. モバイル アプリケーション メニューから、[Configuration] をクリックします。
  2. [ProGuard Mappings ] をクリックします。
  3. Upload missing ProGuard Mapping  ダイアログで、次の操作を実行します。
    1. パッケージのバージョンコード(数字)を入力します。これは、このマッピングファイルが生成されたアプリケーションの AndroidManifest.xml ファイルまたは build.gradle ファイルのいずれかで指定された versionCode  プロパティです。
    2. Choose File.
      をクリックします。アップローダは .txt 拡張子を持つファイルを想定します。ファイルに mapping.txt という名前が付けられます。
    3. ファイルブラウザでマッピングファイルを見つけて選択し、Open をクリックします。
    4. Upload をクリックします。

REST API を使用したアップロード

API では HTTP 基本認証が使用されます。ユーザ名は AppDynamics EUM アカウント名で、パスワードは EUM ライセンスキーです。

マッピングファイルの送信

PUT リクエストの本文のテキストファイルとしてマッピングファイルを次の URL に送信します。

https://api.eum-appdynamics.com/v2/account/<MyAccountName>/<androidPackageName>/<versionCode>/proguard-mapping
BASH
https://fra-api.eum-appdynamics.com/v2/account/<MyAccountName>/<androidPackageName>/<versionCode>/proguard-mapping
BASH
https://syd-api.eum-appdynamics.com/v2/account/<MyAccountName>/<androidPackageName>/<versionCode>/proguard-mapping
BASH


次のパラメータが必要です。

  • MyAccountName:URL エンコードされたバージョンのアカウント名。
  • androidPackagename:このマッピングファイルが生成された Android パッケージの名前。
  • versionCode:このマッピングファイルが生成されたアプリケーションの AndroidManifest.xml ファイルまたは build.gradle ファイルのいずれかで指定された「versionCode」プロパティの文字列表現。 

リクエスト本文にマッピングファイルが含まれます。Content-Type ヘッダー、-H Content-Type:text/plain, 、アカウント名、およびライセンスキー/パスワードをコールに追加する必要があります。 

REST API を使用したリクエストと応答の例

これは、REST API を使用した要求と応答の例です。 

アップロードのリクエスト

次の例では、curl を使用して ProGuard マッピングファイルを送信します。同様のコマンドを使用すると、DexGuard マッピングファイルを送信できます。アカウント名は「Example account」であり、ライセンスキー/パスワードは「Example-License-Key-4e8ec2ae6cfe」です。アカウント名が URL エンコードされると、アカウント名のスペースはプラス記号に置き換えられます。Android アプリケーションのパッケージ名は「com.example.networklogger」です。マッピングファイルは、versionCode のバージョンに対応しています。

curl -v -H Content-Type:text/plain --upload-file mapping.txt --user Example+account:Example-License-Key-4e8ec2ae6cfe https://api.eum-appdynamics.com/v2/account/Example+account/com.example.networklogger/1/proguard-mapping
BASH
curl -v -H Content-Type:text/plain --upload-file mapping.txt --user Example+account:Example-License-Key-4e8ec2ae6cfe https://fra-api.eum-appdynamics.com/v2/account/Example+account/com.example.networklogger/1/proguard-mapping
BASH
curl -v -H Content-Type:text/plain --upload-file mapping.txt --user Example+account:Example-License-Key-4e8ec2ae6cfe https://syd-api.eum-appdynamics.com/v2/account/Example+account/com.example.networklogger/1/proguard-mapping
BASH
応答のアップロード 

例のリクエストの成功した出力は次のようになります。

curl -v -H Content-Type:text/plain --upload-file mapping.txt --user Example+account:Example-License-Key-4e8ec2ae6cfe https://api.eum-appdynamics.com/v2/account/Example+account/com.example.networklogger/1/proguard-mapping
BASH
curl -v -H Content-Type:text/plain --upload-file mapping.txt --user Example+account:Example-License-Key-4e8ec2ae6cfe https://fra-api.eum-appdynamics.com/v2/account/Example+account/com.example.networklogger/1/proguard-mapping
BASH
curl -v -H Content-Type:text/plain --upload-file mapping.txt --user Example+account:Example-License-Key-4e8ec2ae6cfe https://syd-api.eum-appdynamics.com/v2/account/Example+account/com.example.networklogger/1/proguard-mapping
BASH


REST API を使用してアップロードされたマッピングファイルの確認 

マッピングファイルが 2 つの REST API を使用して正常にアップロードされたことを確認できます。

  1. 最後にアップロードした 50 個のマッピングファイルの GUID のリストを取得します
  2. 特定のマッピングファイルがアップロードされているかどうかを確認します

最後にアップロードされた 50 個のマッピングファイルのリスト

proguardQuery メソッドを使用すると、最後にアカウントにアップロードされた最大 50 個のマッピングファイル(ProGuard または DexGuard)の GUID のリストを、アップロードされた時刻とともに取得することができます。その応答は、アップロード時刻が最新のものから、JSON 形式で表示されます。

  1. API を使用したアップロード」の説明に従って認証を設定します。

  • 次のようにフォームの GET リクエストを作成します。

    curl --user Example+account:Example-License-Key-4e8ec2ae6cfe https://<EUM_Cloud/EUM_Server_Host:port>/v2/account/<EUM_Account_Name>/crash-symbol-file-query/proguard


    - EUM_Cloud
    は、SaaS ベースの EUM クラウド URL を指します。完全なリストについては、「Cisco AppDynamics SaaS Domains and IP Ranges」を参照してください。 

    - EUM_Server_Host は、オンプレミス EUM サーバを指す URL を指します。

    - EUM_Account_Name は、EUM アカウント名です。

    - GUID_To_Check は、対象の ProGuard ファイルの GUID です。

Sample Request  


* About to connect() to api.eum-appdynamics.com port 443 (#0)
*   Trying ::1...
* connected
* Connected to api.eum-appdynamics.com  (::1) port 443 (#0)
* Server auth using Basic with user 'Example+account'
> PUT /v2/account/Example+account/com.example.networklogger/1/proguard-mapping HTTP/1.1
> Authorization: Basic SW50ZXJuYWwrdGVzdCthY2NvdW50OlRlc3RBY2N0LTFlMzktNDVkMy05MzAzLTRlOGVjMmFlNmNmZQ==
> User-Agent: curl/7.24.0 (x86_64-apple-darwin12.0) libcurl/7.24.0 OpenSSL/0.9.8y zlib/1.2.5
> Host: api.eum-appdynamics.com
> Accept: */*
> Content-Length: 4
> Expect: 100-continue
>
< HTTP/1.1 100 Continue
* We are completely uploaded and fine
< HTTP/1.1 200 OK
< Content-Length: 0
< Server: Jetty(8.1.4.v20120524)
<
* Connection #0 to host api.eum-appdynamics.com left intact
* Closing connection #0
BASH
* About to connect() to api.eum-appdynamics.com port 443 (#0)
*   Trying ::1...
* connected
* Connected to fra-api.eum-appdynamics.com  (::1) port 443 (#0)
* Server auth using Basic with user 'Example+account'
> PUT /v2/account/Example+account/com.example.networklogger/1/proguard-mapping HTTP/1.1
> Authorization: Basic SW50ZXJuYWwrdGVzdCthY2NvdW50OlRlc3RBY2N0LTFlMzktNDVkMy05MzAzLTRlOGVjMmFlNmNmZQ==
> User-Agent: curl/7.24.0 (x86_64-apple-darwin12.0) libcurl/7.24.0 OpenSSL/0.9.8y zlib/1.2.5
> Host: fra-api.eum-appdynamics.com
> Accept: */*
> Content-Length: 4
> Expect: 100-continue
>
< HTTP/1.1 100 Continue
* We are completely uploaded and fine
< HTTP/1.1 200 OK
< Content-Length: 0
< Server: Jetty(8.1.4.v20120524)
<
* Connection #0 to host fra-api.eum-appdynamics.com left intact
* Closing connection #0
BASH
* About to connect() to syd-api.eum-appdynamics.com port 443 (#0)
*   Trying ::1...
* connected
* Connected to syd-api.eum-appdynamics.com  (::1) port 443 (#0)
* Server auth using Basic with user 'Example+account'
> PUT /v2/account/Example+account/com.example.networklogger/1/proguard-mapping HTTP/1.1
> Authorization: Basic SW50ZXJuYWwrdGVzdCthY2NvdW50OlRlc3RBY2N0LTFlMzktNDVkMy05MzAzLTRlOGVjMmFlNmNmZQ==
> User-Agent: curl/7.24.0 (x86_64-apple-darwin12.0) libcurl/7.24.0 OpenSSL/0.9.8y zlib/1.2.5
> Host: syd-api.eum-appdynamics.com
> Accept: */*
> Content-Length: 4
> Expect: 100-continue
>
< HTTP/1.1 100 Continue
* We are completely uploaded and fine
< HTTP/1.1 200 OK
< Content-Length: 0
< Server: Jetty(8.1.4.v20120524)
<
* Connection #0 to host syd-api.eum-appdynamics.com left intact
* Closing connection #0
BASH

Sample Response
{"proguardFiles": [
{"packageName":"my_package_name1", "version":"1", "uploadTime":"mm/dd/yyyy 16:09:23","GUID":"my_build_id1"}, 
{"packageName":"my_package_name2", "version":"1", "uploadTime":"mm/dd/yyyy 16:09:23","GUID":"my_build_id2"}
]}
BASH


GUID による特定のマッピングファイルの確認 

checkForProguardFile メソッドを使用すると、GUID によって特定の ProGuard ファイルまたは DexGuard ファイルがアップロードされているかどうかを確認できます。アップロード時刻が応答で返されます。

    1. REST API を使用したアップロード」の説明に従って認証を設定します。
    2. 次のようにフォームの GET リクエストを作成します。

      curl --user Example+account:Example-License-Key-4e8ec2ae6cfe https://<EUM_Cloud/EUM_Server_Host:port>/v2/account/<EUM_Account_Name>/crash-symbol-file-query/proguard/guid/<GUID_To_Check>
      BASH


      - EUM_Cloud
      は、SaaS ベースの EUM クラウド URL を指します。完全なリストについては、「Cisco AppDynamics SaaS Domains and IP Ranges」を参照してください。 

      - EUM_Server_Host は、オンプレミス EUM サーバを指す URL を指します。

      - EUM_Account_Name は、EUM アカウント名です。

      - GUID_To_Check は、対象の ProGuard ファイルの GUID です。

      Sample Request 
      curl --user Example+account:Example-License-Key-4e8ec2ae6cfe  https://api.eum-appdynamics.com:443/v2/account/<EUM_Account_Name>/crash-symbol-file-query/proguard/guid/my_build_id1
      BASH
      curl --user Example+account:Example-License-Key-4e8ec2ae6cfe  https://fra-api.eum-appdynamics.com:443/v2/account/<EUM_Account_Name>/crash-symbol-file-query/proguard/guid/my_build_id1
      BASH
      curl --user Example+account:Example-License-Key-4e8ec2ae6cfe  https://syd-api.eum-appdynamics.com:443/v2/account/<EUM_Account_Name>/crash-symbol-file-query/proguard/guid/my_build_id1
      BASH

      Sample Response 
      {"packageName":"mypackagename","version":"1","uploadTime":"mm/dd/yyyy 16:09:23","GUID":"my_build_id1"}
      BASH