aclib #8 - SDL2.0版のインストール(Android 7.0以上)

  • (by K, 2020.09.16)

(1) はじめに

  • ここで紹介する方法は、Android上でclangとSDL2.0を利用した方法です。
  • PCなどでAndroid用のアプリをクロス開発するようなやり方ではなく、Android上でTermuxを動かして、Androidの中だけで開発が完結するやり方です。
  • そしてこれが思ったよりも快適なのです。ぜひ一度体験してみてください。
    • というか安価なAndroid機で実行も開発もできてしまうなんて、夢のようです。私はすごく感動しました。
    • CPUは64bitはもちろんのこと、32bitでも問題なく動きます。Androidのバージョンが7.0以上でありさえすれば。

  • まずこれに先立って、Bluetoothキーボードを用意して、Android機に接続しておくことをお勧めします。これがあるのとないのとではかなりの差があります。
    • ちなみに私はBluetoothキーボードがあっても、ソフトウェアキーボードをOFFにはしません。なぜなら全角・半角の切り替えはソフトウェアキーボードじゃないとうまくできないときがあるからです。もちろんたいていはソフトウェアキーボードは邪魔なのでたたんでおきますが。
  • なおBluetoothキーボードが用意できないときは,次善の策として「Hacker's Keyboard」というキーボードアプリ(ソフトウェアキーボード)をインストールしておくといいらしいですが、私はまだ試していません。

(2) Termuxとclangのインストール

  • 私は以下の順番でインストールしました。
  • [1]GooglePlayから「Termux」をインストール。
  • [2]Termuxのインストールが完了したら、早速起動して、
    $ pkg update
    $ pkg upgrade
    $ pkg install clang
  • で、clangをインストールしました。途中で「容量こんぐらいだけどインストールしていいか?」みたいに聞かれたときは、すべて「y」で答えました。

  • (以下は少し脱線です)
  • この段階でもうnanoを使ってテキストベースのプログラムを作って実行することができます。
    $ nano hello.c
  • でnanoを起動して、
    #include <stdio.h>
    int main()
    {
        printf("hello, world\n");
        return 0;
    }
  • を入力して、^Xで保存&終了して、
    $ clang hello.c -o hello
    $ ./hello
    hello, world
  • のように実行してみて、うまく動いているなーと確認できます。
  • なお、
    $ pkg list-all
  • とするとインストール可能なパッケージがたくさん出てきます。Termuxはすごいです。

  • [Android機の性能についての補足]
    • 厳密な比較はないみたいなのですが、以下の大雑把な比較だけでも参考になります。
    • clang コンパイル時間比較 https://dench.flatlib.jp/linux/compilebench
    • これを見ていると、Google Pixel 3 は Core-i7 機に匹敵しているように見えます。値段は全然違うのに!

(3) SDL2.0のインストール

  • [3]GooglePlayから「XServer XSDL」をインストール。
  • [4]Termux側で以下のものをインストール。
    $ pkg install x11-repo
    $ pkg install sdl2
    $ pkg install xfwm4
  • [5]そしてAndroidの設定画面を出して、TermuxとXServer XSDLの二つのアプリに関して、バックグラウンドに入っても停止させないように設定します。
    • うちのAndroidタブレットはそれでうまくいきました。
    • ちなみに、Androidのバージョンによって設定が違うみたいで、うちのスマートフォンではアプリごとの設定はできず、すべてのアプリに対してバッググラウンドになっても停止しないように設定する必要がありました。
    • この設定をやらないと、SDL2.0を使ったプログラムが1分もしないうちに固まってしまうようになります(SDLの実行画面を表にしているときは、Termux側がバッググラウンドになってしまうため)。
    • そもそもそういう設定がない(=設定する必要がない)機種もあるようです。
  • そして後の説明のために以下を実行して、ダウンロードフォルダに簡単にアクセスできるようにしておきます。
    $ termux-setup-storage

(4) aclライブラリのダウンロードとインストール

  • Android内のブラウザからこのページにアクセスして、以下をダウンロードします。
  • そしてそれをunzipで解凍してください。
    $ unzip ~/storage/downloads/acl00f_sdl2.zip -d ~
  • これでaclライブラリのインストールは完了です。

(5) 起動手順

  • [6]ここからは起動です。まずTermuxとXServer XSDLの両方を起動します。起動順序はたぶん重要じゃないです。XServer XSDLのほうは起動に少し時間がかかります。
  • [7]XServer XSDLの画面を見ると、export設定に関する表示が2行出ているはずなので、それをメモして、Termux側に移って、
    $ export DISPLAY=192.168.0.24:0
    $ export PULSE_SERVER=tcp:192.168.0.24:4713
  • とやったあとに(これらの内容は先のメモに従ってください)、
    $ xfwm4 &
  • とやります。これでSDL2.0を使った表示の準備ができました。

(6) aclライブラリのテスト

  • コンパイル&リンクは次のようにします。
    $ cd ~/acl00f_sdl2/acl_sdl2/sample/
    $ clang -I ~/acl00f_sdl2/acl_sdl2 grd.c -o grd -DAARCH_AARCH64 -lm -lSDL2
  • これだけでgrdという実行ファイルができます。
    • なおここではARMの64bitのCPUの場合を書きましたが、32bitの場合は、-DAARCH_ARM32としてください。
  • 実行は、
    $ ./grd
  • とします。きっとXServer XSDLのほうの画面に出ていますので、切り替えて確認してください。
  • 他にも mandel.c, kcube.c, invader.c がありますので、それぞれテストしてみてください。

こめんと欄


コメントお名前NameLink

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2020-09-22 (火) 22:05:46 (64d)