2021年8月1日日曜日

Linux Mint20.2 で python3-kivy + buildozer 環境を作ってみた

※22年8月14追記。現在は以下の方法では環境を作る事はできません。Buildozer のホームページの Installation の項目を参照してください。

 いや、長かった。
Android で python-kivy のソースを動かすには kivy launcher に流すという方法もあるのですが、16年から Play Store 上で更新が無い為、動作しないものも多いのですよね。

Buildozer というのは Android 用の実行ファイル apk を作るツールのようなんですが… debian 系≒ ubuntu 系インストーラ(.deb ファイル)が無いのですよ。
なもんで、依存関係を調べて自分で必要なファイルを片っ端から入れないとインストールできないし、コンソール(文字コマンド入力ベース)でインストールするのですが apt だ pip だ docker だと方法も煩雑な訳ですよ。
何回か失敗しまして、自分にはハードル高いなあと思って諦めていたのですが…
このたび、公式で ubuntu20.04 用のインストール方法が公開になってまして、恐らく20.04 ベースの mint 20.2 も行けるだろうと試してみた所、一応成功しました。

ただまあ、トラブルも多かったので備忘録を残そうかなと。

  • 前提として、私は geany+kivy で環境を作っています
当ブログで使用している開発環境は Geany でございますので…以下の2つをインストール。
geany で py ファイルを開く。
ちなみにこのファイルは中身が空でも構わないので、「ドキュメントの生成」→「空のファイル」で作ったファイルでファイル名を dummy.py とでもしておけばOK。
ビルド→ビルドコマンドを設定で python と書かれている部分を python3 に書き換える。
これにて python3-kivy での開発環境は完成。


  • 後は公式のページに書かれているコマンドを流すだけなのですが…
以前作ったディレクトリー検索をビルドしてみた所エラーが。
LT_SYS_SYMBOL_USCORE 未定義

ネットで探した所

$sudo apt install libltdl-dev

とコマンド流して解決。…公式の英文がほとんど読めてないので、どこか見逃したのかもしれないですね。


  • その他よく有るエラー集
シンボリックリンクが作れません

…原因は作業フォルダの権限ですが、私の場合はリムーバブルディスク(USBメモリ)で作業をしようとして起きました。素直にフォルダを作りましょう。


_Ctypes モジュールが定義されていない

素直に環境を作る前の試行錯誤段階で出たエラー

$sudo apt install libffi-dev

を流すのですが、コレを流した場合、その後にインストールし直しになるソフトが出てくるため、 apt update が終わったら流しておいた方が無難っぽい。


公式には openjdk-8-jdk と書いてある
java 開発キットの jdk はいろいろとバージョンがあって現在8以降のバージョンもあるのですが、どうも互換性が微妙な模様。
素直に8を入れておくのが現状では良いようです。


  • デバッグモードでビルドは終わったが…
出てきた apk ファイルのサイズが 13.1MB。GUI 用のグラフィックデータが組み込まれているにしてもでかすぎる気が…。

リリースモードでビルドすると、次のようなエラーが
リリースしようとしているのにステータスが org.test になっているぞ。というエラー。
グーグル先生に翻訳してもらったら

パッケージドメインが  org.test になっている場合、文字通りテスト版だからリリースできない。又、リリースをしたら変更はできないと出ている。

…製品版リリースしてからこっそり再リリースはできないって事かな。
…昔プログラマーやっていた時に、共同のソースコードのアップ時間を過ぎてソースコードを上げてバグを出すって頻発したなあと(自分がやっていないとは言えない)

ただ、最後になんかしらミスった場合は

export BUILDOZER_ALLOW_ORG_TEST_DOMAIN=1

コマンドを流して環境変数を設定すれば強制ビルドできるって書かれていますね。


リリース版は 12.8MB …フロッピー10枚分(NEC フォーマット)と言われるとかなりデカいと思うのは前世紀の人間だからでしょうか?

あと、以前 Android 6.0 辺りを境にフォルダの表示ができないと書いたのですが…スマホに入れて動作確認した所 apk でもやっぱり無理。
以前は kivy launcher で表示できなかったので Python2 系が駆動しないのかと思っていましたが、python3 系でビルドしても表示できない事から、そもそもフォルダ表示の権限が Android 6.0 から変更になったのでは?という疑問にシフト。
ファイルアクセスの許可を求めるオプションでも入れれば行けるようになるのでしょうか?課題が尽きません。

0 件のコメント:

コメントを投稿