paloma blog

NWエンジニアやってます。主に自宅環境のお遊びを書きます。Pythonもちょっと。タイトルは好きなカクテルから。

pythonでAndroidの野良アプリを作りたい3 スマホにインストール編

自作apkファイルを自分のスマホにインストールしてみます。
Andoridシミュレータが準備できなかったので実機勝負でいきます。
とはいっても一応サブのスマホで行います。

ファイル移動は割愛してダウンロードディレクトリに持ってきました。

インストール

野良アプリの様にタップすればインストールできます。

警告が出ましたが勝手知ってる自分のアプリなので続行。

インストール出来ました!

起動

他のアプリと同じように起動できます。
(余談ですが壁紙はAgents of mayhemというゲームの主人公チームのロゴです。かっこいいでしょ)

起動はしましたがスマホ画面で見るとPCより比率がおかしいですね。改良しないとです。

映画タイトルの取得

タイトル取得は動くはずなのでGET infoに進みます。

取得したい年を入力してsubmitを押下。
インプットのフィールドもスマホだと小さいですね。見切れてしまいました。

取得できました!やったー。
このスクショ時は1回目で取れていたソプラノズ視聴前なので取得できてなくてOKです。

起動までのトラブル

上記の動作が出来るまで途中でアプリが落ちてしまい4回ほど再ビルド、再インストールし直しました。

とはいってもkivy上は動いていたのでbuildozerかAndroidの問題っぽいです。

デバッグをしてみました。
AndroidデバッグはUSBデバッグがいいらしいのですがどうやるんだろ?

色々調べてやっと出来ました。
1. 開発者向けオプションでUSBデバッグ有効化
2. ubuntuにabdをインストール
3. abd起動 (フィルタかけなくて大量に出たのでファイルにリダイレクトしました)

$ adb logcat

これでログがワーッと出ます。
4. Androidを動かす
という手順で出来ました。
アプリ終了のメッセージを見つけたので周辺をたどって原因が発見出来ました。

エラーメッセージ

エラーで終了した際のメッセージです。
全部buildozer.specの修正で対処できたのでビルド時の問題だったみたいです。

  • ライブラリ読み込み失敗
07-03 16:50:05.155   459   505 I python  :  ModuleNotFoundError: No module named 'requests'
07-03 16:50:05.155   459   505 I python  : Python for android ended.

07-03 17:02:35.551  2322  2342 I python  :  ModuleNotFoundError: No module named 'urllib3'
07-03 17:02:35.551  2322  2342 I python  : Python for android ended.
  • デバッグ用のローカルファイル読み込み失敗
07-03 17:28:15.595  9604  9684 I python  :  FileNotFoundError: [Errno 2] No such file or directory: 'movietext.txt'
07-03 17:28:15.595  9604  9684 I python  : Python for android ended.
  • permission不足によるAPIとのConnectエラー
07-03 17:33:02.171 10301 10466 I python  :  tweepy.errors.TweepyException: Failed to send request: HTTPSConnectionPool(host=
'api.twitter.com', port=443): Max retries exceeded with url: /1.1/statuses/user_timeline.json?count=200&page=1 (Caused by Ne
wConnectionError('<urllib3.connection.HTTPSConnection object at 0x7bfe6a3b80>: Failed to establish a new connection: [Errno 
7] No address associated with hostname'))
07-03 17:33:02.171 10301 10466 I python  : Python for android ended.

abdがなかったらデバッグもままならず本記事は書けていなかったことでしょう。

まとめ

デザインの改良やバグ取りのタスクがたくさん残っていますが実機で野良アプリとして動かせるまでたどりつきました。
期間的には仕事しつつ遊びつつで2ヶ月かかりましたが実働では2週間もかからなかったと思います。

クオリティもさることながら完全自分用アプリでAPIキーごとビルドしているのでストアには出せません。
しかしスマホ用アプリ作成のノウハウができたのでいいものが思いついたら公開できるようにしたいと思います。
(いつになることやら)

このアプリは飲み会等で映画の話題になったら出してみようと思いますw

私は本業はインフラエンジニアなのでアプリ開発の勝手は詳しくありませんが、ソフトウェア会社はこういうのを難なくこなしていると思うとすごい業界だなと思います。