インターネット非接続環境でのAndroid Studioセットアップ¶
本件は現在調査中です。
SDKの構成¶
インターネットに接続されていない環境では、SDKが構成されません(エラーメッセージが表示される)。
手動で構築するには、エミュレータなし(実機を接続して実行)の場合で次が必要です。
- Android SDK Platform
対象Androidバージョン(APIレベル)に対応するSDK Platform - Android SDK Platform-Tools
- Android SDK Build-Tools
- Android SDK Tools
現時点でこれらをすべてダウンロードするには、ダウンロードURLを何らかの手段で把握する必要があります。
インターネット接続したマシンにインストールしたAndroid Studioから情報を取得¶
インターネット接続したマシンでAndroid StudioとSDKがインストールされた環境で調べる方法です。
[Tools]メニュー > [SDK Manager] で「Settings for New Projects」画面にAndroid SDK設定ペインが表示されます。
右側ペインで[SDK Update Sites]タブをクリックし、[Android Repository]行の右側URL欄に記載されているURLをメモし、WebブラウザでURLを開きます。
このXMLの中を調べてダウンロードするURLを把握します。
2020年8月時点で、Android RepositoryのURLは次となっています。
https://dl.google.com/android/repository/repository2-1.xml
このファイルの中から調べたダウンロード先は次です。
display-name | 必須 | url | 備考 |
---|---|---|---|
Android SDK Platform 29 | ✔ | platform-29_r05.zip | |
Android SDK Build-Tools 30.0.1 | ✔ | build-tools_r30.0.1-windows.zip | Linux, macosxのURLは省略 |
Android SDK Command-line Tools | commandlinetools-win-6604631_latest.zip | Linux, macosxのURLは省略 | |
Android SDK Platform-Tools | ✔ | platform-tools_r30.0.4-windows.zip | Linux, macosxのURLは省略 |
Android Emulator | emulator-windows-6755297.zip | Linux, macosxのURLは省略 | |
Android SDK Tools | ✔ | sdk-tools-windows-4333796.zip | Linux, macosxのURLは省略 |
上述の表中のurlは、XMLファイルのある場所からの相対パスとなるので、次の様にダウンロードします。
D:\work> curl -O https://dl.google.com/android/repository/platform-29_r05.zip
2020年8月時点で、エミュレータ用のイメージ(Android System Image)のURLは次となっています。
https://dl.google.com/android/repository/sys-img/android/sys-img2-1.xml
このファイルの中から調べたダウンロード先は次です。
display-name | url | 備考 |
---|---|---|
Intel x86 Atom_64 System Image | x86_64-29_r07-windows.zip | Linux, macosxのURLは省略 |
ダウンロードしたファイルの展開と設定¶
インターネット接続マシンで展開されたディレクトリ構成と照らし合わせながらダウンロードしたファイルを展開します。
なお、インターネット接続マシンでは、デフォルトのSDK配置場所がユーザー固有ディレクトリ(%LOCALAPPDATA%\Android\Sdk)となっていますが、今回は複数ユーザーで同じSDKを使えるよう別な場所をSDK配置場所としています。(例、C:\tools\android\sdk)
platform-29_r05.zip¶
SDK配置場所の下に platforms
ディレクトリを手動作成し、その中にzipファイル中のandroid-10を配置
このAndroid SDK Platformを配置すると、SDKマネージャーがそれが含まれるディレクトリをSDK配置場所として認識できます。
- 「Welcome to Android Studio」画面の右下[Configure] > [Settings] で「Settings for New Projects」画面を開く
- 左側ペインで [Appearance & Behavior] > [System Settings] > [Android SDK]を選択する
- 右側ペインで [Android SDK Location]欄の右端にある[Edit]をクリック
- 「SDK Setup」画面で下右側 [Android SDK Location]欄の右端にあるフォルダアイコンをクリックし、上述のSDK配置場所(例、C:\tools\android\sdk)を指定する
- Emulatorがないと警告の画面がでるが、[Finish]をクリックすると、SDK Platform に[Android 10.0 (Q)]が Installed として表示される
build-tools_r30.0.1-windows.zip¶
SDK配置場所の下に build-tools
ディレクトリを手動作成し、その中にzipファイル中のandroid-11を配置、さらにandroid-11のディレクトリ名を30.0.1に変更します。
platform-tools_r30.0.4-windows.zip¶
SDK配置場所の下に zipファイル中のplatform-toolsを配置します。
sdk-tools-windows-4333796.zip¶
SDK配置場所の下に zipファイル中のtoolsを配置します。
- 注)SDK Managerの表示には、SDK toolsは表示されないようです。
プロジェクトの構成¶
オフラインでプロジェクトを構成¶
新規作成したプロジェクトがオフラインではビルドできない理由¶
新規に作成したプロジェクトで使用するビルドツールのGradleは、デフォルトでは次の設定となっています。
- 理由1)gradle wrapper を使用し、ビルド実行時にgradleをダウンロードしにいくため
- 理由2)依存するライブラリをインターネット上のリポジトリからダウンロードして使用するため
それぞれ設定の詳細を確認します。
gradle wrapperの設定¶
プロジェクトで生成されるgradle wrapperのファイル群は次です。
<プロジェクト基点ディレクトリ> +-- gradle +-- wrapper +-- gradle-wrapper.jar +-- gradle-wrapper.properties
gradle wrapperの設定ファイルの記述内容は次です。
- gradle-wrapper.properties
#Sat Aug 22 16:16:45 JST 2020 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists distributionUrl=https\://services.gradle.org/distributions/gradle-6.1.1-all.zip
ここで、distributionUrlにあるgradleをダウンロードしようします。
対処方法は、gradle wrapperを使用せず、マシンにローカルインストールしたgradleを使用します。
依存ライブラリのリポジトリ設定¶
非インターネット接続環境で新規プロジェクトを生成すると、インターネット上の必要なリポジトリにアクセスできないため、GradleのSyncが失敗します。
具体的には、生成されたbuild.gradleに次の記述があります。
allprojects {
repositories {
google()
jcenter()
}
}
google および jcenter は、インターネット上に設けられたリポジトリで、ビルドにおいて使用する依存コンポーネント(ライブラリ)はこのリポジトリから取得します。
そのため、非インターネット接続環境では、これらリポジトリへのアクセスができないため、ビルドができません。
対処方法は凡そ次の2つあります。
- リポジトリのローカルコピーを用意し、Gradleにローカルコピーをリポジトリとして参照するよう設定
- リポジトリを利用せず、依存コンポーネントをローカルに配置して参照する
オフライン設定¶
Gradle設定¶
ローカルマシン上にGradleをインストールし、そのGradleを使用する設定に変更します。
[File]メニュー > [Settings]で「Settings」画面を開き、左側ペインで [Build, Execution, Deployment] > [Gradle]を選択します。
右側ペインで [Use Gradle from]欄の選択肢から[Specified location]を選択します。右端にファイルパスを設定する入力項目が表われるのでフォルダアイコンをクリックします。
Gradleをインストールしたディレクトリ(例、C:\Program Files\Java\gradle)を指定します。
No cached version of com.android.tools.build:gradle:4.0.1 available for offline mode¶
Android Studio 4.0.1で生成したプロジェクトのbuild.gradleには次の記述があります。
dependencies { classpath "com.android.tools.build:gradle:4.0.1"
次の項で入手するオフラインコンポーネントには、現時点では com.android.tools.build.gradle のバージョンが3.0.0~3.4.0となっており、4.0.1が含まれていません。そのため、インターネットへの接続を試みるためオフラインではエラーとなります。
googleのmavenリポジトリから、直接ライブラリを取得してみます。これを、次の項のオフラインコンポーネントのディレクトリに追加しましたが、エラーは解消されませんでした。(今後要調査)
https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle/4.0.1/gradle-4.0.1.jar
https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle/4.0.1/gradle-4.0.1-javadoc.jar
https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle/4.0.1/gradle-4.0.1-sources.jar
https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle/4.0.1/gradle-4.0.1.pom
オフライン化は一時中断
コンポーネントのダウンロードと設定¶
ネットワーク接続なしでビルドする場合の対処の一つとして、依存コンポーネントをダウンロードしてローカルに展開したものを利用します。
次のドキュメントに記載があります。
オフラインコンポーネント
上述サイトから、Google Maven dependencies を入手します(容量が少々大きく3GB弱ほどあります)。
offline-gmaven-stable.zip
USERPROFILE\.android\manual-offline-m2 ディレクトリを作成し、その中に上述zipアーカイブファイルのgmaven_stableの中を展開します。
%USERPROFILE\ +-- .android +-- manual-offline-m2 +-- android +-- androidx +-- com +-- io +-- org
USERPROFILE\.gradle\init.d ディレクトリを作成し、その中に offline.gradleファイルを作成し設定を記述します。
def reposDir = new File(System.properties['user.home'], ".android/manual-offline-m2")
def repos = new ArrayList()
reposDir.eachDir {repos.add(it) }
repos.sort()
allprojects {
buildscript {
repositories {
for (repo in repos) {
maven {
name = "injected_offline_${repo.name}"
url = repo.toURI().toURL()
}
}
}
}
repositories {
for (repo in repos) {
maven {
name = "injected_offline_${repo.name}"
url = repo.toURI().toURL()
}
}
}
}