見出し画像

【Androidアプリ開発】1:クロームブック(Chromebook)にAndroid Studioをインストールする


本記事の概要

概要

Android Studio』 は、Androidアプリ開発のIDE(統合開発環境)です。
本記事では、クロームブックにインストールしていきます。
※作業ログ的なものであり、きちんと纏めている訳ではありません。

前提条件/検証環境

●前提条件
・Linuxコンテナは導入済みとする
Crostini(ChromeOSのLinux仮想環境)
・バックアップを取っておく

インストールの過程において、Linux環境が壊れれてしまう事も想定し、バックアップは必ず取っておくこと。

●インストール検証環境
ハードウェア環境:C425TA
OSのバージョン:Google ChromeOS 116.0
Linux環境:Debian 11 (bullseye)

なお、Linuxコンテナの導入と日本語入力対応については、下記の記事を参考にしてください。

●検証時期
本記事の検証時期は2023年秋頃となります。
少し以前のものとなりますが、途中まで書いて公開しないのも勿体ないので、今現在ブラッシュアップだけしての公開となります。

クロームブックにAndroid Studioをインストールする

注記

本記事の検証時期は2023年秋頃なので「Android Studio Giraffe」と古いバージョンでの表記になります。
現時点(2024年6月)での最新バージョンは「Android Studio Iguana」となります。
よって、本記事の最後の方に著書『 プログラマーにおくるAndroidアプリ開発の入門書 』の方は『Iguana』を前提とした内容になる予定です。
また、クロームブックではなく「macOS」を前提とし執筆します。
なお、本記事の範疇においてはバージョン間の差はほとんどありません。

本記事は無料なので、時間の都合上「赤枠で囲む」等はしてませんが、入門書の方では見やすく仕上げてます。

本記事での掲載内容は、ANDROID STUDIO公式の「日本語版」となりますが、それだと古いバージョンになる場合があります。
最新にするため『英語版』ページよりダウンロードした方が良いでしょう。

インストールする

まずは、Android Studioをダウンロードします。

Android Developers( https://developer.android.com/ )にアクセス。
「Android Studio のダウンロード」をクリック。

Download Android Studio Giraffe」をクリック。
(クロームブックからアクセスしているので、ChromeOSとなってます)

※ 本記事の検証時期は2023年秋頃なので「Android Studio Giraffe」と古いバージョンでの表記。現時点では最新は『Iguana』。
また記事では「日本語版」ページですが、最新にするため『英語版』ページからの方が良いでしょう。

利用規約を読み、問題ないようなら、チェックする。

「Download」ボタン押下。

「Android Studio ユーザーバッジ」の獲得はログインが必要となる。
どちらでもインストール出来るので、ここでは特に獲得しないものとします。

891MBあります。

検証時点では android-studio-2022.3.1.20-cros.deb となる(時期/環境によって異なります)。

(事前にLinux環境は立ち上げておいた方が良いかと思います)
ダウンロードした、DEBファイルをダブルクリック。

「インストール」ボタン押下。

「OK」ボタン押下。

少し待ちます。
環境によりますが、4分ほど掛かりました。

メニュー - Linuxアプリに「Android Studio」アイコンが出来る。
アイコンをクリックする。

前のAndroid Studioから設定を引き継ぐかの選択画面。
ここでは「Do not import settings」を選択し、「OK」ボタン押下。

「Android Studio使用状況の収集に匿名で協力するか?」のダイアログ。
ここでは「Dont’t send」ボタン押下。

「Next」ボタン押下。

「Standard」を選択し、「Next」ボタン押下。

ダーク/ライトのテーマ選択。
どちらか好みの方を選びます。

「Next」ボタン押下。

android-sdk-license を選択して、問題ないようなら「Accept」をクリック。

android-sdk-preview-license を選択して、問題ないようなら「Accept」をクリック。

「Next」ボタン押下。

「Finish」ボタン押下。

【補足】
青文字のリンクはエミュレーターの実行速度改善のアクセラレーションについてです。

Android Emulator のハードウェア アクセラレーションを設定する
http://developer.android.com/r/studio-ui/emulator-kvm-setup.html
環境によりけりなので、公式にて各自で確認してください。

具体例は後で説明します。(本記事の目次「ハードウェア アクセラレーションの設定」)

コンポーネントのダウンロードが始まります。

普通はこの後、起動画面が表示されると思うのですが、いつの間に消えてしまいました。

よって、再びメニューから「Android Studio」アイコンをクリック。

【誤解編】インストールエラー及び調査

しかし、下部バーにて、いつまで経ってもローディング状態。

試しに、ローディング状態アイコンをダブルクリックすると、メッセージ一覧が出る。


The IDE cannot create a temporary file in the directory.
Possible reason: parent directory is read-only or the user lacks necessary permissions.
If you have modified the 'idea.system.path' property, please make sure it is correct, otherwise, please re-install the IDE.
Location: /home/test/.cache/Google/AndroidStudio2022.3/tmp


「IDE はディレクトリに一時ファイルを作成できません」


The IDE cannot create a temporary file in the directory. Possible reason: parent directory is read-only or the user lacks necessary permissions.
If you have modified the 'idea.config.path' property, please make sure it is correct, otherwise, please re-install the IDE.
Location: /home/test/.config/Google/AndroidStudio2022.3


などが出てしまう。

試しに、もう一度「Android Studio」アイコンをクリックしても、今度はローディング状態のアイコンすら表示されない。

●調査
メッセージからして「ディレクトリ権限」の問題かと思われる。

/home/test/.cache/Google/AndroidStudio2022.3
/home/test/.config/Google/AndroidStudio2022.3
/home/test/.cache/Google/AndroidStudio2022.3/tmp

クロームブックでは 「︙」 - 「非表示のファイルを表示」で隠しファイルを表示出来る。
がしかし、権限の表示や変更までは出来ないので、その辺りはターミナルを使う。

$ ls -ld /home/test/.cache/Google/AndroidStudio2022.3
$ ls -ld /home/test/.config/Google/AndroidStudio2022.3
$ ls -ld /home/test/.cache/Google/AndroidStudio2022.3/tmp

「グループ」と「その他」の書き込み権限が無い模様。

$ chmod 777 /home/test/.cache/Google/AndroidStudio2022.3
$ chmod 777 /home/test/.config/Google/AndroidStudio2022.3
$ chmod 777 /home/test/.cache/Google/AndroidStudio2022.3/tmp

権限はよく吟味する必要があるが、個人のPCだし、どう見ても「w」が足りないだけだし。
て事で、困ったときの『 777 』

もう一度「Android Studio」アイコンをクリック

いつまで経ってもローディング状態。

まてよ、先程のエラーメッセージで「アンインストール」て事は権限変更したディレクトリも削除されるのかな?
そうなっては変更した意味が無いように思えるのだが。

いずれにせよ、再起動してもう一度試してみたい。
Linuxコンテナではなく、クロームブック自体を再起動してみた。

で、再度「Android Studio」アイコンをクリック.
またもやローディング状態が続き。

今度はエラーが4つに増えている。
まあ、どれも似たようなものだが。

【正解編】インストールエラー及び調査

よく見ると、ダイアログの右側にスクロールバーがあるじゃないですか。


The IDE cannot create a temporary file in the directory.
Possible reason: parent directory is read-only or the user lacks necessary permissions.

If you have modified the 'idea.config.path' property, please make sure it is correct,
otherwise, please re-install the IDE.
Location: /home/test/.config/Google/AndroidStudio2022.3
java.io.IOException: No space left on device


それを下にずらすと最終行に
java.io.IOException: No space left on device
のメッセージが❗

権限問題だと勘違いしてたが、容量の問題だったという …


The IDE cannot create a temporary file in the directory.
Possible reason: parent directory is read-only or the user lacks necessary permissions.

If you have modified the 'idea.system.path' property, please make sure it is correct,
otherwise, please re-install the IDE.

Location: ?/.cache/Google/AndroidStudio2022.3/tmp
java.io.IOException: No space left on device


これは別のメッセージ
Location: ?/.cache/Google/AndroidStudio2022.3/tmp
ていうか『 ? 』って何ですか。


Internal error. Please refer to https://code.google.com/p/android/issues

java.io.IOException: No space left on device
at java.base/sun.nio.ch.FileDispatcherImpl.write0(Native Method)
at java.base/sun.nio.ch.FileDispatcherImpl.write(FileDispatcherImpl.java:62)
at java.base/sun.nio.ch.IOUtil.writeFromNativeBuffer(IOUtil.java:132)
at java.base/sun.nio.ch.IOUtil.write(IOUtil.java:97)
at java.base/sun.nio.ch.IOUtil.write(IOUtil.java:67)
at java.base/sun.nio.ch.FileChannelImpl.write(FileChannelImpl.java:288)
at java.base/java.nio.channels.Channels.writeFullyImpl(Channels.java:74)
at java.base/java.nio.channels.Channels.writeFully(Channels.java:96)
at java.base/java.nio.channels.Channels$1.write(Channels.java:171)
at java.base/java.nio.file.Files.write(Files.java:3517)
at com.intellij.idea.SocketLock$lockAndTryActivate$1.invokeSuspend(SocketLock.kt:131)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
at kotlinx.coroutines.internal.LimitedDispatcher.run(LimitedDispatcher.kt:42)
at kotlinx.coroutines.scheduling.TaskImpl.run(Tasks.kt:95)
at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:570)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:677)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:664)
Your JRE: 17.0.6+0-17.0.6b829.9-10027231 amd64 (JetBrains s.r.o.)
/opt/android-studio/jbr


4つのエラーダイアログを閉じた後に出た、さらなるエラーログ。

Linux環境が微妙に壊れる

●ファイルの中身が吹っ飛ぶ
しかもLinux環境内で、編集中のファイルの中身が吹っ飛ぶ。
サイズも突如「0バイト」

●ログインユーザーも吹っ飛ぶ。

「Linuxファイル」のディレクトリが空っぽになってます。

今までは、「test」ユーザーの中身が表示されていたのですが、いつの間に、「Linux環境に作成されていたChromeOSログインユーザー名」のものが表示されるようになっていて、「test」ユーザーにはアクセスしません。

※ Linuxコンテナインストール時に決めるデフォルトユーザーとして「test」を作成していた。

しかも紛らわしいことにターミナルは「test@penguin」のまま。

その後、Linuxコンテナ再起動すると、ターミナルにログインしているのは「ChromeOSログインユーザー名」に切り変わっているし。

『Linuxファイル』ディレクトリから、今までのように「test」ユーザーの中身にアクセス出来なくなってます。

都度、共有へのコピーとかで対処は出来るのですが、面倒くさく非常に不便です。
そして何より、Linux環境のユーザーが「test」ユーザーにならないのは、諸々の事情により致命的。

しかも「test」なんですけど、Linux再起動後でも /home/test ディレクトリ自体は残っているんですよね。
コマンド打って調べたけど、ユーザーとしてどこかに消えた感じ。

Linux環境の容量を増やす

10GBである

最低限のサイズのままだったのね(10GB)

クロームブック全体ではこんな感じ。
25.9GBの空きがあるので、このうち、さらに10GB(計20)をLinuxに割り当てても良いかな。

てことで調整し。

20GBにしてみる

起動しなおす


Launching vmshell failed: Error starting crostini for terminal: 58 (START_CONTAINER_TIMED_OUT)

何故かタイムアウトエラー。

少しして、もう一度試したら出来た。
コンテナの容量を増やしたことによる、処理に時間が掛かり、タイムアウトしたものと思われる。

$ df

ディスク使用率を確認

/dev/vbd のUse%は「50%」となってます。
これ、20GBにする前は「100%」だったんですよね。
(多分、Android Studioが原因)

ディスク使用率というのは、本来「90%未満」に抑えなければいけないもの。
容量オーバーしているのにインストール続ければ、そりゃあ可笑しくなるわな。

【番外編】『Crosh』を使ってみる

『Crosh』で「test」ユーザーの奪還を試みる。

「Crostini」と「Crosh」は似て非なるものである。

●Crostini
Chrome OSで使える「Linuxコンテナ」の事。
仮想Linux環境なので、簡単に丸ごとバックアップが取れ、全部やり直すことが出来る。
ユーザーランドはDebian 11 (bullseye) ※執筆時点

●Crosh
「Chrome OS」のシェルコンソール
Croshコマンドという特有のコマンド操作をする。
『Termina』というChrome OS搭載の仮想マシンが使える。
Chrome OS自体はLinuxベースだが、Croshで使えるLinuxコマンドはごく一部のみ(pingなど)
(※仮想環境『Termina』内は、普通にLinuxコマンドは使える)
先程の「Linuxコンテナ」の調整や、複数コンテナの導入をする際にも使う。

Croshは、ブラウザ上で「Ctrl + Alt + T」で起動する。

vmc list と打てば、仮想マシンの一覧が表示される。
この時点では『Termina』1つのみ。

vshコマンドで仮想マシン名を指定すれば入ることが出来る。
vsh terminaと打ち、『Termina』に入る。

そして『Termina』内ではLinuxコマンドを使うことが出来ます。
1つずつ階層をあげ表示をしてみたのですが、こうなっているのか。

/home/chronos/users なんですね。
て言うか、クロノスって時間の神様なのだが。
Googleさんも粋よのう〜。

『Termina』内で lxc list と打てばLinuxコンテナ一覧が出ます。

この penguin ってのが「Crostini」です。

STATEがRUNNINGとなっているので、Crostiniをシャットダウンして見ます、 (このRUNNINGがどう変わるかを見たい)

そしたら、何とびっくり『Termina』自体が落ちて追い出されるはめに。

入ろうと思っても入れない

ちなみに、Crostiniを起動したら、また入れるようになりました。

Crosh仮想環境である『Termina』は「Crostini」が起動していないと使えないという事。
うーむ、全然無関係かと思っていただけに、奥が深い。

で、肝心の「test」ユーザーの奪還だが、結構調べたが出てこない。
以前は「run_container.sh」なるものがあり、それのオプションで出来そうな気もするが、非推奨となったし見つからない。

でね、ここまで来たら、段々どうでも良くなってきたと言うか、Crostini自体を入れ直そうと言うか。
よくよく考えたら、色んなものごちゃごちゃ入れすぎたり、Web環境構築も色々とやってきて、そろそろクリーンにしたいと思っていた頃だ。

先程も触れたが、Crostiniのような仮想Linux環境の良いところは、簡単にリセットしてやり直しが出来る点にある。前環境のバックアップも容易だ。

よしっ、思い切って入れ替えるか❗

【解決編】『Crostini』を再インストールする

一旦、今のバックアップを取る。

他、ファイルなども別途移して置きました。

アンインストールをする。

さらばじゃ❗

インストールをしなおす。

何度も言うようだが、このように簡単にやり直しが出来るのが仮想環境の良いところ。

これこれ。

何度も出てきた「test」ユーザーとはこれの事。
デフォルトでは、Chrome OSのログイン名だが、それが嫌なので「test」としている訳です。

あと、ディスクサイズ。
推奨での10GBを選択していたが、これが諸悪の根源であった。
今回は、カスタムで20GBにしておく。

インストール設定は非常に重要。
その後の人生が決まる親ガチャのようなものである。

Crostini再インストール完了。

Crostiniインストール(20GB)直後はこんな感じ。

ディスク使用率は「8%」

Android Studioをインストールしてみると。
なんとここまで来ました🎉

多分、無事に出来たっぽい。

そして、ディスク使用率は「53%」

Crostini「20GB」にAndroid Studioをインストールと、ディスク使用率は「53%」になる。
そりゃ「10GB」じゃパンクしますわ。
これにエミュレーターやライブラリが追加されるのでさらに圧迫されることになる。

Android Studioの他にも、VSCodeやPinta(画像編集ソフト)など色んなものを入れることを考えると、もっと容量が欲しいぐらいだ。

ちなみに、このクロームブックの機種は『C425TA』でストレージは「64GB」。
この内、Crostiniに「20GB」割り当てている訳です。

ストレージ「64GB」は、クロームブックでは良くある容量。
これが「32GB」の機種であれば、Crostiniに「20GB」はちょっと無理。

つまり
クロームブックのストレージは「64GB」
Crostiniへのディスク容量は「20GB」
が最低条件である。

とは言え、2万円台のクロームブックに、Androidアプリ開発環境を構築出来るのだから、便利な時代になったものです。

※ただし、別の記事で書きますが、パワー不足でエミュレーターが上手く動かないので、結局はmacOSを使うことに。
この辺りは使うクロームブックのスペックによるのかも知れません。

予算に余裕のある人は、ストレージ「128GB」のハイエンド機種を買うと良いだろう。

ハードウェア アクセラレーションの設定

エミュレーターの実行速度改善のアクセラレーションについて見てみましょう。
(※ただし、先にも書きましたが、これをしてもクロームブックの使用機種のパワー自体が不足していると、結局は失敗します)

※ 以下、Android Developer公式の手順に沿って説明します。
( http://developer.android.com/r/studio-ui/emulator-kvm-setup.html )

●cpu-checker パッケージをインストール

$ sudo apt-get install cpu-checker

このように聞かれたら「y」を入力しEnter押下。

●cpuinfoをegrep

$ egrep -c '(vmx|svm)' /proc/cpuinfo

「1」以上が出れば、仮想化がサポートされているとの事。
「8」なのでOK🙆‍♀

もし「0」だった場合は、公式を参考にしてKVMをインストールすれば良いでしょう。
どうしても出来ない場合、プレビューや実機便りになるので、やや不便になるかと思います。

●おまけ( /proc/cpuinfo )

( ※ 中略 )

/proc/cpuinfo には、CPU情報が格納されている模様。

著書

プログラマーにおくるAndroidアプリ開発の入門書
2024年6月時点での最新技術をぎっしりと詰め込んであるので、アプリ開発に参画するエンジニアの人は、是非ともご覧になって頂ければと思います📱


この記事が参加している募集

この記事が気に入ったらサポートをしてみませんか?