インストール ガイド

このインストール ガイドでは、ArcGIS Runtime SDK for Android (バージョン 100.x) のインストールとセットアップ手順を紹介します。マップを表示する方法については「アプリの作成」のチュートリアルをご覧ください。

Gradle を使用して ArcGIS Runtime アプリケーションをビルドする場合、Maven リポジトリの URL が https://esri.jfrog.io/artifactory/arcgis であることに注意して下さい。旧 URL の https://esri.bintray.com/arcgis はサポートされていません。詳細は Announcement to developers using ArcGIS Runtime SDKs for Android and Java をご参照ください。

インストールとセットアップ

ArcGIS Runtime for Android をインストールする前に、開発マシンがシステム要件を満たしていることを確認してください。アプリを実行するすべてのターゲット デバイスには、Android API レベルの最小バージョンが必要です。詳細については、システム要件を参照してください。

Gradle を使用してインストールすることをお勧めします。これにより、Esri の Maven リポジトリから必要な依存関係と SDK バイナリがインストールされます。Gradle を利用できない場合は、代わりに SDK をダウンロードしてから、AAR ライブラリと依存関係アーティファクトを含めることでプロジェクトに依存関係を手動で追加できます。

注:制限された開発環境で作業していて、ユーザーディレクトリにファイルを書き込むためのオンラインアクセスまたは権限がない場合は、ダウンロードオプションを選択してください。

Gradle で API を取得する

既存の Android Studio プロジェクトか新しいプロジェクトを作成して、次のセットアップ手順を実行します。

  1. settings.gradle ファイルの repositories ブロック内で、Esri の Maven リポジトリ URL を追加します。Esri のリポジトリはオープンソースではないため、google() や mavenCentral() からは使用できないため、この URL を指定する必要があります。

    dependencyResolutionManagement {
    	repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    	repositories {
    		google()
    		mavenCentral()
    
    		// Esri の Maven リポジトリを追加します
    		maven {
    			url 'https://esri.jfrog.io/artifactory/arcgis'
    		}
    	}
    }
    
  2. module レベルの build.gradle ファイルの dependencies ブロック内で、ArcGIS Runtime SDK for Android の依存関係をアプリに追加します。

    注:この依存関係を、ArcGIS Runtime SDK for Android を使用する各モジュールに追加する必要があります。

    dependencies {
    	implementation 'com.esri.arcgisruntime:arcgis-android:100.15.1'
    	...
    }
    

    `

  3. module レベルの build.gradle ファイルの android ブロック内で、Java 8 の言語機能との互換性を設定するために、以下のディレクティブがあることを確認してください。

    android {
    	. . .
    	compileOptions {
        	sourceCompatibility JavaVersion.VERSION_1_8
        	targetCompatibility JavaVersion.VERSION_1_8
    	}
    . . .
    }
    

    `

  4. module レベルの build.gradle ファイルの android ブロック内に、ビュー バインディングを有効にするブロックがあることを確認します。ビュー バインディングの詳細については、ビュー バインディング を参照してください。

    android {
    	. . .
    	buildFeatures {
    		viewBinding true
    	}
    }
    
  5. module レベルの build.gradle ファイルの android ブロック内に、META-INFDEPENDENCIES ファイルの複製を除外する packagingOptions ブロックを追加します。この設定により、META-INF ディレクトリにある同じファイルを出力に複数回含めようとした場合に発生するコンパイラー エラーを防ぐことができます。パッケージング オプションの詳細については、PackagingOptions を参照してください。

    android {
    	. . .
    	packagingOptions {
    		exclude 'META-INF/DEPENDENCIES'
    	}
    }
    

API を手動で取得する

パブリック Gradle リポジトリを利用できない場合は、代わりに SDK をダウンロードし、ローカル AAR とすべての依存関係アーティファクトを含めることで、依存関係をプロジェクトに手動で追加できます。

  1. ArcGIS Developers にサインインします。

    サインインには ArcGIS 開発者アカウントが必要です。アカウントをお持ちでない場合は、サインアップ(無料)してください。アカウントの作成方法は「開発者アカウントの作成」をご覧ください。

  2. ダッシュボード上で、Download をクリックし、最新バージョンの ArcGIS Runtime SDK for Android を選択します。

  3. ダウンロードしたファイルを開発マシン上に解凍します。

依存関係を ArcGIS Runtime SDK for Android に手動で追加するか、ダウンロードに含まれる他のリソースを使用します。libs フォルダにある Android ライブラリ モジュール(.aar)には、API の jar ライブラリ arcgis-android-api とそのサードパーティの依存関係およびコア ネイティブ ライブラリが含まれています。

ArcGIS Android API がローカルの Maven リポジトリで動作するように設定する

以下のセットアップ手順では、インターネットから切り離された開発環境で作業していることを想定しています。たとえば、インターネット上でホストされている Maven リポジトリへのアクセスを許可しないファイアウォールの内側などです。インターネット アクセスを使用して開発している場合は、代わりに Gradle で API を取得する の手順に従ってください。以下の手順は、ローカルマシン上の Maven リポジトリでのセットアップを説明していますが、ネットワーク上に Maven サーバーをセットアップしている場合も同様に適用できます。

SDK およびその依存関係をコンピュータにデプロイする

  1. arcgis-runtime-sdk-android-100.15.1.zip ファイルをダウンロードします。

  2. アーカイブの内容をディスク上の任意の場所に解凍します。

  3. 解凍した場所から、libs/aar ディレクトリの内容をディスク上の以下の場所にコピーします。(ローカル Maven リポジトリは、ユーザー ディレクトリの .m2repository をルートとするディレクトリ ツリーであることに注意してください)。

    mac: /Users/[user-name]/.m2/repository/com/esri/arcgisruntime/arcgis-android/100.15.1/

    Windows: %USERPROFILE%\.m2\repository\com\esri\arcgisruntime\arcgis-android\100.15.1\

  4. ディレクトリのパスは以下のようになっているはずです。

    mac (2 ファイル):

    /Users/[user-name]/.m2/repository/com/esri/arcgisruntime/arcgis-android/100.15.1/arcgis-android-100.15.1.aar

    /Users/[user-name]/.m2/repository/com/esri/arcgisruntime/arcgis-android/100.15.1/arcgis-android-100.15.1.pom

    Windows (2 ファイル):

    %USERPROFILE%\.m2\repository\com\esri\arcgisruntime\arcgis-android\100.15.1\arcgis-android-100.15.1.aar

    %USERPROFILE%\.m2\repository\com\esri\arcgisruntime\arcgis-android\100.15.1\arcgis-android-100.15.1.pom

  5. これらの依存関係のリストと、それらをダウンロードできる URL は以下のとおりです。作業環境のセキュリティ対策と互換性のある方法でこれらを取得する必要があります。

  6. 前の手順でダウンロードした依存関係をデプロイします。Maven を使用して、ローカルの Maven リポジトリに依存関係をインストールします。

    • mvn maven ツールをインストールします。

      mac:

      brew install mvn

      Windows:

      https://maven.apache.org/guides/getting-started/windows-prerequisites.html を参照してください。

    • androidx の依存関係(browser と localbroadcastmanager)については、下記を実行してください。

      mvn install:install-file -Dfile=<aar ファイルのパス> -DgroupId=<グループ ID> -DartifactId=<アーティファクト ID> -Dversion=<バージョン> -Dpackaging=aar -DgeneratePom=true

    • 他のすべての依存関係については、下記を実行してください。

      mvn install:install-file -Dfile=<jar ファイルのパス> -DgroupId=<グループ ID> -DartifactId=<アーティファクト ID> -Dversion=<バージョン> -Dpackaging=jar -DgeneratePom=true

  7. ローカルの Maven リポジトリを設定する必要があります。次のセクションで、ローカルの Maven リポジトリを使用するようにビルド ファイルを変更します。

Gradle のビルド設定とスクリプトの編集

  1. プロジェクトの gradle.settings ファイルを編集して、ローカルの Maven リポジトリを参照する必要があります。これを行うには、次のように mavenLocal() を追加します。

    dependencyResolutionManagement {
    	repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    	repositories {
    		google()
    		mavenCentral()
    		mavenLocal()
    	}
    }
    

    `

  2. module レベルの build.gradle ファイルに以下の依存関係を追加します。

    dependencies {
    		...
    	implementation 'com.esri.arcgisruntime:arcgis-android:100.15.1'
    	implementation 'com.google.code.gson:gson:2.9.0'
    	implementation 'androidx.browser:browser:1.4.0'
    	implementation 'androidx.localbroadcastmanager:localbroadcastmanager:1.1.0'
    	implementation 'org.apache.httpcomponents.core5:httpcore5:5.0.4'
    	implementation 'org.apache.httpcomponents.core5:httpcore5-h2:5.0.4'
    	implementation 'org.slf4j:slf4j-api:1.7.32'
    	implementation 'commons-codec:commons-codec:1.15'
    	implementation 'org.conscrypt:conscrypt-openjdk-uber:2.2.1'
    	implementation 'net.spy:spymemcached:2.12.3'
    	implementation 'org.ehcache.modules:ehcache-api:3.4.0'
    }
    

    `

  3. module レベルの build.gradle ファイルの android ブロック内に、Java 8 言語機能との互換性を設定する次のディレクティブがあることを確認します。

    compileOptions {
    	sourceCompatibility JavaVersion.VERSION_1_8
    	targetCompatibility JavaVersion.VERSION_1_8
    }
    

    `

  4. module レベルの build.gradle ファイルの android ブロック内に、ビュー バインディングを有効にするブロックがあることをを確認します。ビュー バインディングの詳細については、ビュー バインディング を参照してください。

    android {
    	. . .
    	buildFeatures {
    		viewBinding true
    	}
    }
    
  5. module レベルの build.gradle ファイルの android ブロック内に、META-INFDEPENDENCIES ファイルの複製を除外する packagingOptions ブロックを追加します。この設定により、META-INF ディレクトリにある同じファイルを出力に複数回含めようとした場合に発生するコンパイラー エラーを防ぐことができます。パッケージング オプションの詳細については、PackagingOptions を参照してください。

    android {
    	. . .
    	packagingOptions {
    		exclude 'META-INF/DEPENDENCIES'
    	}
    }
    

必要な権限と機能

Android は、権限が分離されたオペレーティング システムです。アプリで使用する ArcGIS の機能によっては、マニフェストに権限を追加する必要がある場合があります。アプリに含まれていない機能の権限を含めないようにしてください。

アプリが Android API バージョン 22 以前で実行されている場合、インストール時にすべての権限が要求されます(許可または拒否)。アプリが Android API バージョン 23 以降で実行されている場合、アクセス許可が要求され、インストール時に自動的に付与されます。ただし、潜在的に危険な権限は実行時にリクエストする必要があり、そのためにはアプリにコードを追加する必要があります。まだ許可されていない場合は、Android フレームワークまたは Android サポート ライブラリが、権限を確認して要求するために使用されます。詳細については、アプリの権限を宣言するアプリの権限をリクエストするをご覧ください。

アクセス許可が必要な ArcGIS Runtime SDK for Android の機能:

  • インターネットへのアクセス(ほとんどのアプリはこれを必要とします):Android API 23 以降の標準の権限
  • デバイスの GPS にアクセスするには、FINE_LOCATION の権限が必要です:Android API 23 以降での危険な権限

次のコード例(AndroidManifest.xml ファイルの場合)には、これらの権限が含まれています。

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

Android のストレージと権限

Android API Level 30 では、すべてのアプリは Android デバイスのファイルシステムにアクセスするためにスコープ付きストレージを使用します。スコープ付きストレージを使用すると、アプリは (1)自身のファイル、および (2)メディア ストア内の共有ファイルにアクセスすることができます。下記のパーミッションの宣言は、サポートされていません。

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

Android のストレージは、API レベル 29 以降、劇的に変化しています。Android のストレージとパーミッションの詳細については、次のリンクを参照してください。

OpenGL ES バージョンの宣言

Android マニフェストに uses-feature 要素を追加すると、Play ストアでアプリを正しいタイプのデバイスで利用できるようになります。

MapView(2D)を使用するアプリには、最小でも OpenGL ES 2.x が必要です。

<uses-feature android:glEsVersion="0x00020000" android:required="true" />

SceneView(3D)を使用するアプリには、OpenGL ES 3.x が必要です。

<uses-feature android:glEsVersion="0x00030000" android:required="true" />

androidx の依存関係

DefaultAuthenticationChallengeHandler は、OAuth 認証の認証情報の入力をユーザーに求めるために、デフォルトで Chrome カスタムタブ を使用するようになりました。これにより、外部ブラウザ ウィンドウで資格情報の入力を求めるよりも優れたユーザーエクスペリエンスが提供されます。Chrome カスタムタブのサポートにより、androidx.browser:browser の新しい推移的依存関係が導入されました。 この依存関係は、gradle ビルドスクリプトから arcgis-android ライブラリを参照すると自動的に構成されます。API を手動でダウンロードする場合は、androidx の依存関係をサポートするように自分でプロジェクトを構成する必要があります。

プロジェクトが Google でサポートされていない Android サポート ライブラリに依存している場合は、androidx ライブラリでコンパイルまたはランタイムの問題が発生するため、プロジェクトを androidx に移行する必要があります。

追加のダウンロード

サンプル コード

ArcGIS Runtime アプリで実行できる、機能についてはサンプル コードを参照してください。

サンプル ビューアー アプリは、Google Play か、ArcGIS Online(.apk ファイル) からも入手できます。

ArcGIS Runtime SDK for Android Toolkit

ArcGIS Runtime SDK for Android Toolkit には、アプリの開発を簡略化するためのコントロールやユーティリティが含まれています。例えば、以下のようなものがあります。

  • ArcGISArView: SceneView を ARCore と統合し、拡張現実(AR)を実現します。
  • ブックマーク: ウェブ マップに保存されているブックマークを表示します。
  • コンパス: 北を指すコンパスのアイコンを表示して、マップやシーンの現在の向きを示します。
  • スケールバー: 地図上での正確な直線計測の表現を表示します。

スタンドアロンの開発者向けドキュメント

ダウンロード ページ から、開発者向けドキュメント(任意の ArcGIS Runtime SDK 用)をアーカイブとしてダウンロードできます。アーカイブには、ローカル Web サーバからドキュメントを提供する手順が含まれているため、インターネットに接続しなくてもドキュメントにアクセスできます。スタンドアロン ドキュメントには、開発者ガイド、API リファレンス、チュートリアル、およびサンプル ドキュメントが含まれています。このドキュメントは、ローカルのスタンドアロン コンピューターまたは内部ネットワーク上で実行するように設計されており、パブリックなインターネット上では実行できません。

ローカルでドキュメントを公開する方法:

  • 使用する ArcGIS Runtime SDK のドキュメントをダウンロードします。ダウンロードしたファイルは、.zip アーカイブ形式になっています。
  • アーカイブをローカル フォルダに解凍します。解凍されたアーカイブには、public と install という 2 つのサブフォルダがあります。
  • install フォルダ内の README.md ファイルを開き、選択した Web サーバーの指示に従います。

注:ライブ ドキュメント サイトはリリース時及びリリースの間に定期的に更新されますが、スタンドアロン ドキュメントは静的で、最初のリリース後は更新されません。

追加のデータ

グリッド ベースの地理座標変換を使用している場合は、ダウンロード ページからサポートする Projection Engine ファイルをダウンロードしてください。

航海用電子海図 (ENC) を使用する場合は、ダウンロード ページから hydrography directory をダウンロードします。