WSL+Ubuntu(+cygwin X/VcXsrv)+Android Studio for Win+ Android Studio for WSL
はじめに
Windows 10には WSL (Windows Subsystem for Linux) というものがあります。仮想機械を作らずに、LinuxのプロセスとWindowsカーネルをつなぐレイヤを差し込んでいるようなかんじではないかと(ちがうかも)。
UbuntuとかSUSEとかのディストリビューションごとにアプリとして提供されています。
ここで、WSL側からAndroid Studioが立ち上がるんじゃね?と考えました。
前提
これまでに作っている環境を駆使するので、普通とは違う部分があるかも知れません。次のことを前提としていることにご注意下さい。
- CygwinのXサーバを持っています。
- Windows用 Android SDKを持っています (Android Studioもあるけど、とりあえず関係ない)。
WSLの有効化 #1
PowerShellで次を入力します。
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
WSLの有効化 #2
「Windowsの機能の有効化または無効化」を開き、「Windows Subsystem for Linux」にチェックを入れます。
「Windowsの機能の有効化または無効化」を開くには、設定を開き(スタート→設定(歯車アイコン))、「プログラムと機能」(関連設定)を開き、「Windowsの機能の有効化または無効化」(左サイドバー)を開きます。
コルタナから「機能」で探すと出たので、個人的にはこちらから行きます。
一回目の起動
一回目の起動は、初期設定のため、数分程度の時間がかかるので、待ちます。
その後、インストールパッケージの更新を行います。
sudo apt-get update sudo apt-get upgrade
Windows側からWSL側のファイルを見る
%LocalAppData%\Packages\CanonicalGroupLimited.UbuntuonWindows_(ランダム文字列)\LocalState\rootfs
にあります。
%LocalAppData%\lxss にある、とされているのは、ストアからubuntuを入れるようになるより前に入れた場合のようです。
CygwinのXにクライアントが出ない
C:\cygwin64\bin\bash.exe --login -c "XWin.exe -multiwindow -clipboard"
としたショートカットを作って、ワンタッチでXを上げるようにしています。
ここで、WSL側でDISPLAYを設定してxtermを上げても、Xに表示されない。
https://superuser.com/questions/1180005/cygwin-x-and-windows-subsystem-for-linux に "-listen tcp"とつけているのを発見。ただし、XWin.exeでなく/usr/bin/startxwinとなっていました。とはいえものは試し。
C:\cygwin64\bin\bash.exe --login -c "XWin.exe -multiwindow -clipboard -listen tcp"
に書き換えてみると、うまくいきました。
なお、WSL側で、次のように環境変数 DISPLAY を設定したうえで、xterm等を起動する必要があります。
export DISPLAY=:0
VcXsrvの場合
https://sourceforge.net/projects/vcxsrv/ からダウンロード、インストールして、Xlaunchを起動します。
なお、リモートのXクライアントが動かない問題が発生しました。ローカル側の環境変数DISPLAYを ":0" でなく "localhost:0" にするとうまくいきました。
export DISPLAY=localhost:0 export LIBGL_ALWAYS_INDIRECT=1
理由不明。なんでなんやろ…。
(参考) 以前のJavaのインストール
https://www.linuxuprising.com/2018/04/install-oracle-java-10-in-ubuntu-or.html を参照しました。
次のコマンドを順次実行します。
sudo add-apt-repository ppa:linuxuprising/java sudo apt update sudo apt install oracle-java10-installer
Android Studio
https://qiita.com/TsutomuNakamura/items/ef4aeec32cdaaf9105cc を参照。
まずは、https://developer.android.com/sdk/index.html から、Linux用のAndroid Studioを落とします。
ダウンロードには wget が普通でしょうが、私は FireFox を使いました。
unzipして、自分のホームディレクトリ配下のどこかにおいて、android-studio/bin/studio.sh を実行します。
その際、勝手にSDKを $HOME/Android/Sdk に入れてくれます。
にパスを通す設定を .profile なりに入れておいた方がよろしいかと思います。
adbサーバはWindows側を使用
コマンドラインから実行するadbは、あれはCUIクライアントです。サーバがAndroidインスタンスと繋がっています。サーバの起動、停止はadbクライアントから制御できます。
WSL側からadbサーバを動かすと失敗しました。
Windows側から
adb.exe start-server
としてやって、Windows用のadbサーバを立ち上げます。そうすると、Windows側のadbクライアントはもちろん、WSL側のadbクライアントも正常に動作しました。adbクライアントを使っているAndroid Studioも、WSL側で動きました。
パスワード忘れた
https://linuxfan.info/wsl-password-reset 参照。
そのまま引き写します。
コマンドプロンプトで次を実行します。
ubuntu config --default-user root
これで、次にubuntuを開くときにはrootで開きます。
ubuntuをrootで開いて
passwd (ユーザ名)
で、パスワードを設定できます(rootからpasswdを行う際には、もとのパスワードは求められません)
ubuntuのウィンドウは閉じて、もう一度コマンドプロンプトを開き次を実行します。
ubuntu config --default-user (ユーザ名)