超高機能テキストエディタ アプリ「Wrix」(Android版)をアップデートしました!(Version 2.5)
別次元の超快適なテキスト編集ができる超高機能テキストエディタ アプリ「Wrix」をアップデートしました!
「Wrix」はGoogle Playストアから無料でダウンロードできます。
– アップデート内容 –
今回のアップデート内容は以下の通りです。
- 拡大鏡(Zoom popup)のデザインを少し変更しました!
四隅の丸みを大きくしました! - フリックコマンド使用時にコマンドUIが表示されたままになる事がある問題を修正しました。
- 一部端末でライセンス情報の保存/読み込みに失敗する問題を修正しました。
使用している暗号化ライブラリの問題により発生していました。
念の為にライセンス管理画面に「保存値をクリア」機能を追加しました。暗号化ライブラリによる問題発生時に使用します。 - ライセンス管理画面に無料試用期間の有効期限を表示する機能を追加しました!
- 使用ライブラリを更新しました。
- 内部処理を修正しました。
- ※ 完全無料版の「Wrix Free」はGoogle Playの制限により廃止しました! 通常版「Wrix」への移行を行ってください!
今回の主なアップデート内容は、一部端末でライセンス情報の保存/読み込みに失敗する問題の修正です。
Wrix を長年使用されているユーザーの方からAndroid端末を機種変更した後、エラーが出て購入したライセンスが使えない、との報告を受け急遽修正しました。
ユーザーの方から送って頂いたスクリーンショットを見ると、以下の様に見た事がない箇所でエラー(例外)が発生していました。
com.google.crypto.tink.shaded.protobuf.InvalidProtocolBufferException: Protocol message contained an invalid tag (zero).
処理の箇所の内容的にライセンス情報の暗号化の部分だと判断し、調査を行ったのですが、この問題はGoogle社提供の暗号化ライブラリ(androidx.security:security-crypto)で発生している問題である事がわかりました。
InvalidProtocolBufferException on initialization on some devices
https://issuetracker.google.com/issues/164901843
Caused by: com.google.crypto.tink.shaded.protobuf.InvalidProtocolBufferException: Protocol message contained an invalid tag (zero)
https://stackoverflow.com/questions/73784634/caused-by-com-google-crypto-tink-shaded-protobuf-invalidprotocolbufferexception
長年未解決の厄介な問題という事です。
どうやら暗号化ライブラリ(androidx.security:security-crypto)で提供されている EncryptedSharedPreferences (値を暗号化して保存/読み込みをする)クラスを初期化すると発生する問題の様で、2020年位から何らかの原因により一部端末で発生する問題の様です。
しかし、手持ちの環境では全然発生しません。かと言ってライセンスを購入したのに使えないのではユーザーは困るので、まず、
- 暗号化ライブラリ(androidx.security:security-crypto)を1.0.0から1.1.0-alpha06に変更
を行い、Google Playの「オープンテスト」機能を使用してユーザーの方に試してもらう事にしました。
勿論、手持ちの環境では問題ない事を確認してからです。
すると、今度は別のエラー(例外)が発生した様です。
javax.crypto.AEADBadTagException
こちらも暗号化ライブラリ(androidx.security:security-crypto)が原因なのですが、更に良く調べると暗号化ライブラリ(androidx.security:security-crypto)は別の暗号化ライブラリ(google / tink)を使用しており、今回と前回のエラー(例外)は別の暗号化ライブラリ(google / tink)が原因で発生している事がわかりました。
google / tink
InvalidProtocolBufferException (Protocol message contained an invalid tag (zero)) #413
https://github.com/google/tink/issues/413
根本的な解決方法は不明のままですが、取り敢えず、解決した人の話では
- MasterKey を Singleton でスレッドセーフで使用せよ
- AndroidManifest.xml 内で android:allowBackup=”false” にせよ
- 一旦 MasterKey を deleteEntry() で削除&ファイルを削除せよ
- 生体認証ではなくPIN入力せよ
という事なので、PIN入力以外の部分を実装して再度Google Playの「オープンテスト」機能を使用してユーザーの方に試してもらった所、今度はエラーが出ない、との事。
※詳細は上記リンクを参照の事
手持ちの環境で問題が発生していないのでどれが有効だったのかは不明ですが、何となく
- MasterKey を Singleton でスレッドセーフで使用せよ
が効いたのでは無いかと考えています。
スレッドセーフの部分は考慮していませんが、確かに何度もMasterKeyを作成しており、引数のContextの違い等でMasterKey自身の互換性がなくなっていたのかも知れません。
念の為にエラー発生時でもサーバから取得したライセンス情報がアプリ終了まで使える機能を追加しました!
加えて、更に念の為にライセンス管理画面に「保存値をクリア」機能を追加し、暗号化ライブラリによる問題発生時値をクリアできる様にしました!
何にしても問題が解決したので、製品版(正式版)としてリリースしました!
今回、手持ちの環境で発生しない問題を報告して頂いたユーザーの方に検証をお願いしたのですが、やはり
- 手持ちの環境で未発生の問題はユーザーの協力が必要不可欠
ですね。
その意味では今回ご協力頂いたユーザーの方は非常に協力的に非常に助かりました。本当にありがとうございました。
対してこの様な時に「極端な低評価と文句コメントを記載して去っていく様な(身勝手で)非協力的な人」だと何も解決しないですよね。
その為、不具合や問題等はレビューコメント欄に極端な低評価と共に捨て台詞の様に記載するよりも
- 直接教えてあげる方が親切
である事を理解する人が増えると良いですね。
今回は他にも拡大鏡(Zoom popup)のデザインを少し変更し、四隅の丸みを大きくしました!
本アプリ(Android版 Wrix)と iOS版Wrix を見比べていた所、本アプリ(Android版 Wrix)の方が拡大鏡(Zoom popup)の四隅が角ばっている事に気付き、 iOS版Wrix と同様になる様に四隅の丸みを大きくして見た目が良くなる様にしました!
他にもライセンス管理画面に無料試用期間の有効期限を表示する機能を追加し、無料試用期間がいつまでなのかがわかる様にしました!
– 無料試用期間について –
本アプリは24時間の無料試用期間があり、以下の時に使用できます!
- インストール時
- バージョンアップ時
今回はバージョンアップ時の為、24時間の無料試用期間使用できます!
勿論、アプリ開発は無料ではできませんし、広告がないので無料で使われ続けても何も嬉しい事はありません。
その為、無料試用期間で気に入った場合はライセンスを購入して下さい!
ライセンスは、サブスクリプションのみですが、一日4-8円程度とかなりお安くなっています!
本アプリを気に入って使い続ける場合は、継続的な開発の為にライセンスを購入して下さい!
– コメント欄に記載する内容のお願い –
アプリのコメント欄に質問、要望などの一方通行なコメントを書かないで下さい。
コメント欄に質問、要望などを書かれましても、答える手段がないため、答えられません。
加えて、必ず見る訳ではありませんので、無意味なコメントになる可能性が高いです。
そのため、質問、要望などはヘルプの問い合わせ窓口からお願いします。