2021年8月19日木曜日

Python で Android アプリ開発 (もどきに戻る)

今までのあらすじ:
・Android で Python/kivy スクリプトを動かしたい
・スクリプトを実行するためには Pydroid 3 起動,スクリプトをエディタで開く,実行 の 3ステップが必要でめんどい
・apk 化したら起動は楽だがスクリプトの利点が削がれる ←いまここ


で Github を色々探してみると,Kivy-Launcher というアプリ発見.これは Python スクリプトのリストを表示して,選択・実行できる.これも Python/kivy/buildozer で実現されており,ということはこの環境でストレージ上の Python スクリプトを実行する手段はあるということ.

次に,buildozer でビルドしたアプリに暗黙的インテント (Windows で言うところの拡張子関連付けみたいな情報をアプリ側に持たせる) を追加する手段があるか探してみたところ,あったよ... この時点で勝利を確信ヽ(´ー`)ノ

というわけで以下を実施.
・Kivy-Launcher を fork
・暗黙的インテントを追加
・起動直後のインテント解析等を行う python スクリプト (main.py) は,このままだと apk に内蔵されてしまい修正がめんどくさいので,main.py から SD カード上の main.py を呼ぶように修正し,起動後のスタートアップ処理は後者で処理する

適当なアプリで Python スクリプトへのショートカットを作り,これをタップするだけでスクリプト起動した.

更に main.py を SD カード上に置いたことにより色々やりやすくなり,例えば標準だと Python のエラーメッセージは adb logcat でしか見れない (PC と 要 USB 接続) が,main.py で try~exception でエラーをキャッチしてメッセージを画面上に表示することで,スマフォ単体でエラーが確認できるとか,色々改良しやすい.

やっとことさ理想の環境を手に入れたよヽ(´ー`)ノ

2021年8月18日水曜日

Python で Android アプリ開発 (もどきではない)

前回の記事で「Python + kivy で普通の Android アプリも開発できそう」と書いたけど,自分が知らなかっただけで,それは割と普通のことらしい.つまり Python スクリプトを apk 化する buildozer なるツールもあって,これを使えば Python スクリプト起動の手間の問題は解決する.ただ自分が Python を使いたいのはそういう apk ビルドの手間・ビルド環境の構築を省きたいからであって,ちょこっとスクリプトを修正して実行確認,みたいに手軽にやりたい.

ここで,Github Actions を使えば手間は減らせるんじゃね? 思った.Python 開発・デバッグは PC 上で行い,完了したらどのみち Github には push するので,それをトリガに Github に自動で apk ビルドをさせると.
というわけでやってみた.

・.github/workflows/build.yml をここからもらってくる
・buildozer.spec をここからもらってくる
・上記を適当に修正する
・SD カードアクセス等の,必要なパーミッションを追加する
・git push する

たったこれだけで出来たヽ(´ー`)ノ 普通の apk と何ら変わりなくインストール・起動も出来て,動作は apk 化する前と全く同じ.

普通の Android アプリを Java で書くのは色々めんどくさいけど Python + kivy はほんとにお手軽で書きやすい.しかもこれだけの労力・学習コストで「俺 Android アプリ作って公開してるんだぜ(ドヤァ」って言えるのはすごいwww

これからは特に問題ない限り,Android アプリは Python + kivy で開発しようと思った.

2021年8月15日日曜日

Python で Android アプリ開発もどき

出先で Android で GPS ログフォーマットを変換したい.処理的に大したことなくまた PC でも使いたいので perl とかで書きたいが,問題はスクリプト起動時に Android でコマンドライン入力するのは地獄.
なのでファイル選択やオプション選択などを GUI で操作したいが,そんな事ができる Android アプリがないか探してみたところ,Pydroid 3 というアプリ発見.
基本的には Python 実行環境だが,kivy という GUI を構築できるフレームワーク(?) が内蔵されていて,これを使って簡単な GUI アプリが構築できる.

というわけで作ってみた.→GitHub
画面の要素としてはファイル選択とリストボックス,ボタンと簡易.見た目はしょぼいが実用性は十分.Python + kivy 自体はそこそこ実用的で,Android ハードにバリバリアクセスするようなアプリでなければ普通のアプリでも開発できてしまうと思う.

あと,kivy 自体はクロスプラットフォームなので,全部 PC 上で開発・デバッグ後 Andoid で運用する,等もできるので,開発効率はよい.

ただ残念なのは,例えばホーム画面に Python スクリプトのショートカットを置いて直接スクリプトを起動できれば,使い勝手的に普通の Android アプリと遜色ないのだが,残念ながらそれができない.いちいち Pydroid 開いてスクリプトをエディタで open して run しないといけない.うーん,ここだけがほんとに残念.