【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をインストールする
注記
インストールする
まずは、Android Studioをダウンロードします。
Android Developers( https://developer.android.com/ )にアクセス。
「Android Studio のダウンロード」をクリック。
「Download Android Studio Giraffe」をクリック。
(クロームブックからアクセスしているので、ChromeOSとなってます)
利用規約を読み、問題ないようなら、チェックする。
「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」アイコンをクリックしても、今度はローディング状態のアイコンすら表示されない。
●調査
メッセージからして「ディレクトリ権限」の問題かと思われる。
クロームブックでは 「︙」 - 「非表示のファイルを表示」で隠しファイルを表示出来る。
がしかし、権限の表示や変更までは出来ないので、その辺りはターミナルを使う。
$ 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アプリ開発環境を構築出来るのだから、便利な時代になったものです。
予算に余裕のある人は、ストレージ「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月時点での最新技術をぎっしりと詰め込んであるので、アプリ開発に参画するエンジニアの人は、是非ともご覧になって頂ければと思います📱
この記事が参加している募集
この記事が気に入ったらサポートをしてみませんか?