前回の続きです。
Android アプリ「Simple アナログ時計」は、2012年の公開後、「Alarm Manager の仕様変更」「Battery Optimization の導入」などに対応して安定動作させるため、改良を重ねてきたのでしたが、まだ続くようです。
Service の制限強化 (SDK Level 26)
私のアプリでは、安定して時計を動かし続け、また端末のスリープを検出して描画更新を止めることでバッテリーの無駄な消費を無くすため、Service によるバックグラウンド処理をしています、
ところが、Android
8.0 (SDK Level 26) から、この Service の使い方に制限が追加されたのです。具体的には、「Serviceを長時間動かし続ける場合は、通知バーにアイコンを表示する必要がある」というものでした。アイコンを表示せずに Service を開始すると、5秒程度で強制終了されてしまいます。
また、これに加えて「新たにアプリを公開・更新する場合には SDK Level 26 以上の制限への対応が必須」というルールも増えました。悪意ある常駐アプリを作れなくするためですね。
とはいえ、Service を使うアプリが突然使えなくなるのはユーザーも困るということで、救済措置として「既にストアで公開されているアプリであれば、通知バーアイコンを出さなくても従来どおり動作する」ということになっていました。
私のアプリも幸い、Android 8.0, 8.1 でも正常に動作しました。また、アップデートするには SDK Level 26 以上への対応にいろいろ改造する必要があったので、しばらくそのままにしていました。
ところが、2019年になり、Android 9.0 の端末が増えるに従い、「止まってしまう」という報告が増えてきました。どうやら、Android 9.0 で何か互換性に問題が出たようです。しかし前述のとおり、今度アップデートするには新しい SDK に合わせて Service の動作もいろいろ改造する必要があります。
当時は非常に多忙で時間が作れず、頻繁に届く「動かない」という報告と、下がって行く評価を、放置しておくことしかできなかったのが非常に辛かったです。
2020年2月になってようやく、Service の動作を変更し、Android 9.0 (SDK Level 28) に対応をして公開しました。公開後に「通知バーアイコンが邪魔だ!」というクレームが多数来てしまったものの、「動くようになった!」という喜びの報告をたくさん貰うことができました。下がっていた評価は徐々に戻り、一安心でした。
その後は1年以上、非常に安定しており、Android 11 でも特に問題は出ていませんでした。
原因不明 (SDK Level 29)
2021年6月に、時間があったので久しぶりに、いくつか機能追加と改良をしました。
前述のように、アプリの公開・更新にはSDK Level の制限があり、この時点では「Android 10 (SDK Level 29) 以上への対応必須」となっていました。幸い SDK Level 29 では私のアプリの動作へ影響するような仕様変更などは無く、時計の駆動部への変更は一切無いまま機能追加し、アップデートを公開することができました。
ところが公開後から、数は少ないのですが「停止してしまう」という報告が来るようになりました。Battery Optimization の設定変更などをしても改善せず、原因がまったくわかりません。報告者の端末に傾向などは見られず、私の手元でも問題は発生しません。なにか、非常に限られた条件下でのみ発生する問題があるようなのですが…。
いろいろ調べたのですが、原因と思われるものが見つかりませんでした。あと原因として考えられるのは、「SDK Level 29 の、広くは公表されていない変更箇所の影響」くらいではないかと…。もちろんOSのソースの改変履歴を調べれば見つけられるかもしれませんが、やりたくない作業ですね。
というわけで、「もしSDK Level 29 の不具合であれば、改善するかもしれない」と祈りながら、「Android 11 (SDK Level 30)」に対応してアップデートを公開しました。機能追加はせず、時計駆動部も小改良した程度です。
現在、2週間が過ぎましたが、「止まってしまう」という報告が全く来なくなりました。本当に「SDK Level 29 の問題」だったのかもしれません…。
できればもう、あとはこのままずっと正常に動き続けてほしいものです。
[追記 (2021/09/07]
公開から1ヶ月半が経過しましたが、結局「止まってしまう」という報告はありませんでした。やはり SDK Level 29 に何か相性の悪い問題があったのかもしれません。なにはともあれ一安心です。(ただし、理由不明の低評価がたまに付くのは気になるところですが、以前からあったので関係無いかもしれません)