4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Android Studio】導入初期段階でつまづいた件

Posted at

はじめに

現在参画中のプロジェクトでシステムの保守開発をしています。
その中で、スマホ向け新機能のフロントエンド実装を担当することになりました。
Android Studio をインストールし、エミュレーターで動作確認をしながら開発を進めようとしたのですが……さっそくエラーに阻まれ、なかなか前に進めません。

ネット検索をしたり、同僚の方々に助言をいただきながら試行錯誤しましたが、結論として根本的な解決には至りませんでした。

それでも多くの学びがあったので、備忘録として整理しました。
どなたかの参考になれば幸いです。

前提条件

PC の環境および使用したしたソフトウェアのバージョンは次のとおり。
※自社環境ではなく、顧客先環境

カテゴリ バージョン
OS Windows 11
OpenJDK 21
Gradle 8.12.1
Android Studio 2025.1.3.7 exe版(記事作成時点の最新版)
Android SDK Command-Line Tools commandlinetools-win-13114758_latest.zip
SDK Platform-Tools 36.0.0
Android Emulator 36.2.9.0

発生状況・エラー内容

すべてデフォルトでインストール。
image.png

image.png

いきなりエラーが出ましたが、とりあえず進めます。
まずはエミュレータが起動できるかを確認すべく、Welcome 画面で [More Actions] をクリックして [Virtual Device Manager] を開こうとしたものの、ボタンが非活性化されており選択できず。

image.png

※本来であれば、[Virtual Device Manager] をクリックするとこの画面が出てくるはず。
image.png

それならば、[New Project] で AVD の作成から始めようとしましたが、今度は SDK 未設定で以下の警告が表示されました。
image.png

では、SDK を設定しよう!
ネットに沢山転がっている設定手順の Android SDK の画面と何かが違う…
[SDK Platforms] [SDK Tools] [SDK Update Sites] になにも表示されません。
image.png

とりあえず進めよう。[Android SDL Location] の [Edit] をクリックし、Android SDK の設定画面で指定されるフォルダがセットされた状態で [Next] ボタンをクリック。
image.png
image.png
image.png

空のフォルダを用意しておくのはどうか。
C:\Users\<ユーザ名>\AppData\Local\Android\Sdk

[Next] ボタンをクリックとまたしても同じエラー。
エミュレーターのフォルダを用意しても、エミュレーターをダウンロードして配置しても変わりませんでした。


なぜですか!!😢

試したこと

1. 手動で各パッケージをインストール

Android SDK コマンドラインツール、SDK プラットフォームツールをダウンロード。
zip を解凍してフォルダに配置。
ユーザ環境変数 PATH に cmdline-tools と platform-tools を追加。

C:\Users\<ユーザ名>\AppData\Local\Android\Sdk\cmdline-tools\latest\bin
C:\Users\<ユーザ名>\AppData\Local\Android\Sdk\platform-tools

コマンドプロンプトで以下2つのコマンドを実行し、PATH が正しく通っているかを確認します。

まずはadbのバージョン。

adb --version

こちらは問題ないですね。
image.png

ですが、sdkmanagerのバージョンは…

sdkmanager --version

エラーが出ましたね。
image.png

ちなみに、以下を実行すると

java --version

image.png

Javaのバージョンは確かに21であるにもかかわらず、17以上を要求されている!?


2. Windows のユーザ環境変数に Open JDK のパスを追加

Android Studio が別の JDK を参照しているのかも。環境変数を新規作成。

キー
JAVA_HOME Open JDKのパス

コマンドプロンプトで sdkmanager のバージョンを確認するも、またもやJava version 17 or higher is required. のエラーが発生。


3. Gradle JDK の設定変更

Gradle JDK が古いのかも。
⚙ > [Settings] > [Appearance & Behavior] > [Build, Execution, Deployment] > [Build Tools] > [Gradle] > [Default Gradle JDK] をインストール済みのものに変更。

再びコマンドプロンプトで sdkmanager のバージョンを確認するも、エラーは変わらず。


4. 社内ネットワークのプロキシ設定を変更

“プロキシ環境下では SDK を取りに行けない”という記事を発見。
⚙ > [Settings] > [Appearance & Behavior] > [System Settings] > [HTTP Proxy] > [Manual proxy configuration] でプロキシを設定してみます。
image.png

試しに [Check Connection] にhttps://developer.android.comをセットして接続確認したところ、503エラー。
image.png

[No Proxy] にしても変わらず…

分かったこと・解決できたエラー

エラー:Java version 17 or higher is required. について

1. 原因

ダウンロードした codline-tools の中にある sdkmanager.bat をメモ帳で開いてみました。
74行目の分岐に引っかかっているためにエラーが出ていたようです。

if !version! lss 170 if "%SKIP_JDK_VERSION_CHECK%" == "" (
echo Java version 17 or higher is required.
echo To override this check set SKIP_JDK_VERSION_CHECK
goto :eof
)

Javaのバージョンの計算方法はそのすぐ上に記述されています。

@rem check whether we have the right version of java
setlocal enabledelayedexpansion
for /f "tokens=3" %%a in ( '""%JAVA_EXE%" -version 2>&1 |findstr "version""' ) do (
for /f "tokens=1,2 delims=." %%b in ( 'echo %%a' ) do (
set versionWithQ=%%b%%c
)
)
set version=!versionWithQ:"=!

どういうことかというと、例えば、バージョンの表記が 21.0.8 の場合、最終的に version=210 となります。
また、最後の set version=!versionWithQ:"=! でダブルクオーテーションは削除されるため、バージョンの表記が "21" の場合は最終的に version=21 となります。

バージョンの表記
Oracle JDK:x.x.x
Open JDK:"x"

つまり、

  • Oracle JDK
    21.0.8 → version=210
    ⇒ if !version! lss 170 をパスできる

  • Open JDK
    "21" → version=21
    ⇒ 170 より小さい と判定されてしまう

その結果、Open JDK だと本来条件を満たしているのにエラーが出てしまっていたようです。

2. 解決方法

74行目を以下のとおりに修正するだけです。

if !version! lss 17 if "%SKIP_JDK_VERSION_CHECK%" == "" (

たったこれだけで
image.png

簡単ですね…

ちなみに、この時点でもう一度 SDK の設定を試みますが、うまくいきませんでした。
ただ、エミュレーターに関する警告は消えています。

image.png


プロキシの問題

Java バージョンのエラーを解決したので、次は怪しいプロキシ周りを確認しました。
顧客先環境では SDK のインストールにプロキシ経由でのアクセスが必要です。
Android Studioでの設定は不発に終わりましたが、今度はコマンドプロンプトのほうでプロキシの設定をしてみました。

インストール済みで利用可能なパッケージのリストを表示するsdkmanager のコマンドに直接プロキシを指定するオプションを付けてみます。

sdkmanager --list --proxy=http --proxy_host=[ユーザ名]:[パスワード]@[IPアドレス] --proxy_port=[ポート番号]

はい、やはりエラーです。

image.png

21
Warning: Failed to resolve host [ユーザ名]:[パスワード]@[IPアドレス]
Failed to create settings

おそらくこういうこと。

  • SDK の配布は GitHub 上で行われている。
    ⇒ 認証必須環境ではダウンロード不可
  • --proxy_host--proxy_port は指定可能だが、ユーザ認証は引数でサポートされていない。

さらに、Android Studio 経由の HTTPS リクエストも User-Agent の影響でプロキシから 503 が返却される可能性があります。

結論

いくつかのエラーは解決できたものの、顧客先の社内ネットワークの認証プロキシに引っかかってしまい、結局 SDK のインストールは断念しました。
sdkmanager 自体がユーザ認証付きプロキシをサポートしていないため、突破は難しそうです。

一方、自社環境のPCでは何の問題もなく エミュレーターがすいすい起動。
あっけないくらいでした。

今回の調査・対応にあたっては、ご協力いただいた先輩方に大変感謝しています。

自己開発の際には積極的に活用したいと思います!

4
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?