ProGuardマッピング

この記事では、コントローラ UI と REST API を使用して ProGuard マッピングをアップロードする方法について説明します。

Upload ProGuard Mappings in the Controller UI

  1. From the left-hand panel, click Configuration.
  2. Click ProGuard Mapping & NDK Symbol Files. This page lists the ProGuard Mapping uploads. Each upload has a unique Build ID.
  3. Click Add ProGuard File.
  4. From the Upload Missing ProGuard Mapping dialog:
    1. Enter the version code (a number) for the package. This is the versionCode property specified in either the AndroidManifest.xml file or the build.gradle file of the application for which this mapping file was generated.
    2. Click Choose File.
      The uploader expects a file with the .txt extension. The file is named mapping.txt.
    3. In the file browser, locate and select the mapping file and click Open.
    4. Click Upload.

REST API を使用した ProGuard マッピングのアップロード

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

注: この REST API を無効にし、トークンベースのアップロードを使用するコントローラ API を使用する場合は、Cisco AppDynamics サポートにお問い合わせください。Splunk AppDynamics

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

PUT リクエストの本文のテキストファイルとしてマッピングファイルを次の URL に送信します。
アメリカ地域
https://api.eum-appdynamics.com/v2/account/<EUM_Account_Name>/<androidPackageName>/<versionCode>/proguard-mapping
EMEA
CODE
https://fra-api.eum-appdynamics.com/v2/account/<EUM_Account_Name>/<androidPackageName>/<versionCode>/proguard-mapping
APAC
CODE
https://syd-api.eum-appdynamics.com/v2/account/<EUM_Account_Name>/<androidPackageName>/<versionCode>/proguard-mapping
EUM サーバーの場所の詳細については、「Splunk AppDynamics On-Premises ドメインと IP 範囲」を参照してください。

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

  • EUM_Account_Name: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 のバージョンに対応しています。
アメリカ地域
Android
CODE
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
iOS
CODE
curl -v -H Content-Type:text/plain --upload-file main.jsbundle.map" --user Example+account:Example-License-Key-4e8ec2ae6cfe https://api.eum-appdynamics.com/v2/account/Example+account/com.example.networklogger/1.0/iOS/jssource-mapping
EMEA
Android
CODE
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
iOS
CODE
curl -v -H Content-Type:text/plain --upload-file main.jsbundle.map" --user Example+account:Example-License-Key-4e8ec2ae6cfe https://fra-api.eum-appdynamics.com/v2/account/Example+account/com.example.networklogger/1.0/iOS/jssource-mapping
APAC
Android
CODE
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
iOS
CODE
curl -v -H Content-Type:text/plain --upload-file main.jsbundle.map" --user Example+account:Example-License-Key-4e8ec2ae6cfe https://syd-api.eum-appdynamics.com/v2/account/Example+account/com.example.networklogger/1.0/iOS/jssource-mapping

アップロードの応答

例のリクエストの成功した出力は次のようになります。
アメリカ地域
CODE
* 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
EMEA
CODE
* About to connect() to fra-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
APAC
CODE
* About to connect() to syd-api.eum-appdynamics.com port 443 (#0)
*   Trying ::1...
* connected
* Connected to syd.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

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

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

  1. 最後にアップロードした 50 個のマッピングファイルの GUID のリストを取得します
  2. 特定のマッピングファイルがアップロードされているかどうかを確認します
注: 各アップロードには一意のビルド ID があります。コントローラ UI でアップロードを表示することもできます。「ProGuard ファイルのアップロード」を参照してください。

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

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

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

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

    CODE
    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 を指します。完全なリストについては、「Splunk AppDynamics On-Premises ドメインと IP 範囲」を参照してください。

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

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

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

サンプルリクエスト

アメリカ地域
CODE
curl --user Example+account:Example-License-Key-4e8ec2ae6cfe  https://api.eum-appdynamics.com:443/v2/account/<EUM_Account_Name>/crash-symbol-file-query/proguard
EMEA
CODE
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
APAC
CODE
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

サンプル応答

JSON
{"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"}
]}

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

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

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

    CODE
    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>

    EUM_Cloud は、SaaS ベースの EUM クラウド URL を指します。完全なリストについては、「Splunk AppDynamics On-Premises ドメインと IP 範囲」を参照してください。

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

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

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

サンプルリクエスト

アメリカ地域
CODE
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
EMEA
CODE
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
APAC
CODE
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

サンプル応答

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

トークンを使用した REST API での ProGuard マッピングのアップロード

注: トークンベースのアップロードを使用するには、次のプロパティが有効になっていることを確認します。
CODE
MAPPING_FILE_UPLOAD_API_DISABLED: True

コントローラ API は、ProGuard マッピングをアップロードするためのトークンベースの認証をサポートしています。このアップロード方法では、生成されたトークンとアプリケーション ID がログイン情報とともに必要です。

ProGuard マッピングファイルをアップロードするには、次の手順を実行します。

  1. ファイルをアップロードするためのトークンを生成します。
    CODE
    curl -L -X GET -u <username>@<accountName>:<password> '<controller base url>/controller/restui/mobileRUMConfig/fileUploadToken'
  2. アプリケーション ID を取得します。
    CODE
    curl -L -X GET -u <username>@<accountName>:<password> '<controller base url>/controller/restui/mobileRUMConfig/getApplicationId/<App key>'
  3. ProGuard マッピングファイルをアップロードします。
    CODE
    curl -L -X POST -u <username>@<accountName>:<password> '<controller base url>/controller/restui/mobileRUMConfig/uploadProGuardFile/<applicationID>?token=<token>' -F 'fileData=@"<proguard file path>"' -F 'androidPackageName="<android Package Name>"' -F 'versionCode="<code version>"'