AndroidStudio 利用する Java (JDK) の選択・設定の方法

AndroidStudio 上でプロジェクトテンプレートの「KMM Application」を動かそうとすると以下のようにコケる。


An exception occurred applying plugin request [id: 'com.android.application']
> Failed to apply plugin 'com.android.internal.application'.
   > Android Gradle plugin requires Java 11 to run. You are currently using Java 1.8.
     You can try some of the following options:
       - changing the IDE settings.
       - changing the JAVA_HOME environment variable.
       - changing `org.gradle.java.home` in `gradle.properties`.

* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 509ms
Command PhaseScriptExecution failed with a nonzero exit code

** BUILD FAILED **


The following build commands failed:
PhaseScriptExecution Run\ Script
/Users/maochanz/AndroidStudioProjects/KMM/build/ios/iosApp.build/Debug-iphoneos/iosApp.build/Script-7555FFB524251A00829871.sh (in target 'iosApp' from project 'iosApp')
(1 failure)

先程のビルドエラーのメッセージにもあるように、Java 11 (JDK) を IDEである AndroidStudio に認識させる方法として、3つが挙げられている。

- IDE設定の変更
- 環境変数 JAVA_HOME の変更
- gradle.properties の org.gradle.java.home の変更

この3つのうち、どれを変更すればいいのか。

 

■ IDE設定の変更

AndroidStudio には、以下でビルド時のJDKを選択できる。


[Preferences]

  ↓

[Build]

  ↓

[Build Tools]

  ↓

[Gradle JDK]

embed jdk

現在の AndroidStudio には、「openjdk version "11.0.10" 2021-01-19」 が同梱されており、それを選択することもできるし、別に自分でインストールしているものも選択可能になっている。

しかし、IDEA製品では、自分で入れたJDKを使うほうが良さそう。


インストールしたら、パスを確認しておきましょう。


❯ /usr/libexec/java_home -V
Matching Java Virtual Machines (1):
    11.0.18 (x86_64) "Homebrew" - "OpenJDK 11.0.18" /usr/local/Cellar/openjdk@11/11.0.18/libexec/openjdk.jdk/Contents/Home
/usr/local/Cellar/openjdk@11/11.0.18/libexec/openjdk.jdk/Contents/Home

影響範囲: AndroidStudio 上のすべてのプロジェクト

 

■ 環境変数 JAVA_HOME の変更

利用するユーザーの環境変数の JAVA_HOME に設定する。

先程、確認した同梱JDKのパスをセットします。


❯ vi .zshrc
...
export JAVA_HOME=$(/usr/libexec/java_home -v11)
export PATH="$JAVA_HOME/bin:$PATH"

❯ source .zshrc

❯ echo $JAVA_HOME
/usr/local/Cellar/openjdk@11/11.0.18/libexec/openjdk.jdk/Contents/Home

❯ java -version
openjdk version "11.0.18" 2023-01-17
OpenJDK Runtime Environment Homebrew (build 11.0.18+0)
OpenJDK 64-Bit Server VM Homebrew (build 11.0.18+0, mixed mode)


この環境変数を利用して AndroidStudio は、JDK の位置を認識します。

しかし、ユーザー単位の環境変数なので、これを利用した他のアプリケーションにも影響するかもしれません。

AndroidStudio の再起動で反映されます。

影響範囲: OS上 JAVA_HOME 利用アプリケーションたち

 

■ gradle.properties の org.gradle.java.home の変更

gradle.properties は、AndroidStudio 上のプロジェクトの gradle 設定ファイルです。

以下のように追記します。


org.gradle.java.home=/usr/local/Cellar/openjdk@11/11.0.18/libexec/openjdk.jdk/Contents/Home

AndroidStudio 上部メニューから [Build] → [Rebuild Project] で反映されます。

Build - Rebuild project

影響範囲: AndroidStudio上 該当プロジェクト

 

■ まとめ

KMM Application


❯ ./gradlew -version

------------------------------------------------------------
Gradle 7.6
------------------------------------------------------------

Build time:   2022-11-25 13:35:10 UTC
Revision:     daece9dbc5b79370cc8e4fd6fe4b2cd400e150a8

Kotlin:       1.7.10
Groovy:       3.0.13
Ant:          Apache Ant(TM) version 1.10.11 compiled on July 10 2021
JVM:          11.0.18 (Homebrew 11.0.18+0)
OS:           Mac OS X 13.1 x86_64


ビルド自体は、JAVA_HOME の変更か、gradle.properties の変更、のどちらか一つで通り、生成されたアプリも問題ないようにみえる、が正しくはどうなのか。

上記の設定で改善されない場合は以下で。


👉 Mac に Homebrew で OpenJDK11 を インストール する hatena-bookmark
👉 JetBrains Toolbox で Android Studio の Stable/Beta/Canary が同時に管理できる? hatena-bookmark
👉 Android Studio と JDKバージョン 


Android12でアイコンを四角にする方法

Android11 では、フォントやアイコン形状などはシステムUIのテーマとしてカスタマイズできていました。

Android11 custom theme icons

👉 Android 12 is missing font and icon shape customization 

しかし、Android12では、

android12 dynamic theme

フォント変更
→ できない。

アイコンの形状変更
→ できない。

👉 Android 12 Beta 3 Changelog: All the new features and changes! 

ということで、

Android12ではアイコンは丸型だけ。四角には変更できない。

ということになります。

このことについては、上記XDAデベロッパーサイトのコメントやGoogle Issue Tracker でも悲しみのコメントが多く寄せられています。

👉 Custom Styles missing from Wallpaper and Style menu [193775634] - Visible to Public - Issue Tracker 

しかし、Google 社員がコメントしているように、

“The custom style features (font, icon shape, icon pack, and accent color) in R are being replaced by the new dynamic theming feature that we are introducing in S. We see the new dynamic theming feature as more modern and intelligent. A simple and delightful experience that we hope all users can get to enjoy.”

「カスタムスタイル機能は、Android12ではダイナミックテーマ機能に置き換えられています。よりモダンでインテリジェントなものと見なされています。すべてのユーザーにシンプルで楽しい体験をお届けします。」

と、新しいダイナミックテーマ機能は、

- モダン
- インテリジェント
- シンプル
- 楽しい

ということなので心配ないようです。

使いづらくなっただけかと思ってびっくりしていましたが、

- モダン
- インテリジェント
- シンプル
- 楽しい

ということです。

よろしくおねがいいたします。

👉 アイコンの形は四角のほうが使いやすい 


Jake Wharton さん「Android12、ロック画面 / 常時表示の時計が良い。」

Android12について何かつぶやいています。


Android 12にアップグレードしたばかり。システムUIの使いやすさと実用性の急激な低下傾向が続いています。通知ペインは、コンテンツを表示するためのエリアですが、実際のコンテンツの2倍のネガティブスペースがあります。システムUIのピークは、時計が動く前のAndroid8でした。

でも、ロック画面や常時表示はとても気に入っています。大きな時計がいい。さらに、今回は時間と分のフォントが同じ太さになっています。

Android12 always show clock and info

 

「ロック画面」とか?

スマホを利用したあと、

電源ボタンを押したり、

一定時間経過後に、

画面が変化していきます。


スリープ画面 (画面消灯)

 ↓ 再度画面をオン

ロック画面

スリープ画面 (時間と情報を常に表示時 ※設定は後に記述)
Android12 消灯画面クロック表示

ロック画面
Android12 lock screen clock

 

各画面への条件や操作設定

利用画面から スリープ画面(画面消灯) へ遷移するには、

一定時間経過させるか、電源ボタンで消灯。


設定

 ↓

ディスプレイ

 ↓

画面消灯

Android12 画面消灯時間設定

この スリープ画面(画面消灯)時にも、

ロック画面のように、時計などが表示できる。


設定

 ↓

ディスプレイ

 ↓

ロック画面

 ↓

時間と情報を常に表示

Android12 時計と情報を常に表示する

さらに、ロック画面 へ遷移するには、

さらに、そこから、

一定時間経過させるか、電源ボタンでロック。


設定

 ↓

セキュリティ

 ↓

画面ロック 歯車アイコン

 ↓

画面消灯後からロックまでの時間

電源ボタンですぐロックする

Android12 画面ロック

うん、確かに見やすいし、使える。

しかしこの、

スリープ常時時計表示は、

暗闇で、

「OK、グーグル 今何時?」 とか言わなくても良いのだが!

👉 Android12 が来たので新機能を使ってみました。 | #android ファショ通 
👉 【Android12】「At a Glance」が壊れてる件