Shashlik --- Android(x86)アプリをLinux上でアプリの様に動かすソフトウェアを試してみた
Android x86が開発終了になるかも知れないという記事を書いていて、Android端末全体をシミュレートするのではなくてChrome上でAndroidアプリを動かすように、Androidアプリを異なるOS上で動かす仕組みは提供されていないのかと思い調べてみた。
Chromeは個人的に使いたくない。
ChromeでAndroidアプリを動かす仕組みはChromiumブラウザやChromiumOSでは使えない。
Googleで検索してみたところ、以下のようなものがあった。
Shashlik | Android Simulated Environment
The easiest way to run an Android app correctly is to simply run Android. It’s a linux base that we can nest inside our session. OpenGL and graphics are all rendered on the host ensuring fast performance.
Shashlik provides an incredibly stripped down Android base which boots directly into the loaded app, but with a running activity manager and daemons so that intents still work correctly.
エミュレーターと言えばエミュレーターなのだろうが、AndroidはLinuxなのでセッションの入れ子にすることで通常のエミュレーターよりも高速に、しかもOpenGLなどのグラフィックス機能も使うことができるようだ。
とは言っても、Android独自のライブラリなどが必要になる。
Shashlikではできるかぎり必要なファイル群を減らすなどしてファイルサイズを小さく削ぎ落しているそう。
名前のShashlik(シャシリク)というのはロシアやウクライナで食べられている肉の串焼きのことだそうだ。
中央アジアや中東、中国などで食べられている串焼き、ケバブと同じだろう。
導入方法としては、Gitのリポジトリを取得して自分でコンパイル、インストールすることもできるが、コメントを見るとどうも取得するファイル群が全体で2G以上あるらしい。
UbuntuまたはDebian用のdebパッケージ、Arch Linux用のAURパッケージがあるのでそれを使うことにする。
実は2016年3月2日に公開されたものでちょっと古い。
ちょっと心配だが、GitHubを見ると去年の9月あたりまでは更新されている。
How to install and run Android Apps (APKs) on Linux with Shashlik
英語だが上の記事に使い方が書いてある。
パッケージをインストールしたあと、どこかからAPKファイルを手に入れてくる。
APKファイルを適当な場所において端末を開き
/opt/shashlik/bin/shashlik-install name_of_apk_file
とすると、APKファイルをインストールできる。
そのAPKファイルそのものはインストール後は使わないようだ。
本体が/.local/share/shashlikディレクトリ以下にインストールされる。
多くのディストーションというかウィンドウマネージャの場合のメニューも作られる。
それがない場合
/opt/shashlik/bin/shashlik-run name_of_splash_png name_of_apk_file
で起動する。
スプラッシュの場所も指定しなくてはいけないのがちょっと面倒だ。
APKファイルをインストールすると/.local/share/shashlikディレクトリ以下にAPKファイルから抜き出されたスプラッシュ・スクリーン画像ができるのでそれを見ながら指定すると良い。
アンインストールの機能も無いようで、今できるのは/.local/share/applicationsにあるメニューファイルを手動で消すくらいらしい。
某サイトで「ねこあつめ」をダウンロードして、試してみた。
起動には少し時間がかかる。
ウィンドウはすぐ表示されるがAndroidアプリ自体の起動に時間がかかるのだ。
日本語か英語か選ぶ画面にはいけるのだが、その後「Nyaw Loading(Now Loading)」で止まってしまった。
また、動作中、shashlik-installのエラーがあったというダイアログが出た。
インストール自体が正しく完了できなかったのかも知れない。
残念だ。
Androidアプリにネイティブコードが含まれている場合、x86をサポートしているか、x86用のアプリをダウンロードして来なければ動作しないとのことだ。
「Microsoft Excel」はそれでインストール自体ができなかったのだろう。
「Angry Birds」は動くかと思ったが画面が真っ黒のままだった。
Linux環境でAndroidアプリを利用できるShashlikを試す | matoken's meme
のコメントにuserdata.imgの中のsystemディレクトリを削除すると解決するとあったのでやってみたところ、成功した。
縦置き、横置きはどうやって変えるのだろうか・・・。
音声も問題なく聞くことができ、遊ぶこともできた。
「ねこあつめ」も2度目の起動で真っ黒になることがあったので、shashlik-runで毎回消す必要があるのだろう。
しかし、fstabにuserdata.imgを書き込んだりするのはちょっと面倒だ。
「ねこあつめ」を何度も起動して試していたら「Nyaw Loading」のところでセーブデータを作るダイアログが出るが、その重ね合わせの処理がうまくいっていないために、動いていないように見えていたようだ。
辛うじて見えるダイアログの左側をクリックしたら、次の画面に移行した。
しかし、音が聞こえるものの画面は真っ黒だ。
systemディレクトリを消しても駄目だった。
色々、不具合があってちょっと使いこなすのは難しそうだ。
KVMでAndroid-x86を動かしたほうが多くのアプリが動くかも知れない。
qemu-kvmでRemix OS for PC(Android x86をベースに作られている複数のアプリをデスクトップのように動かすことができるOS)を動かしてみると、感覚であってデータではないがVirtualBoxよりも軽いようだ。
開発を続けて欲しい。