2018年4月19日木曜日

【Android】【アプリ開発者向け】ZTEの端末でのみ動作しない現象

この記事にたどり着いたAndroidアプリ開発者の皆様へ

当ブログをご覧いただきありがとうございます。

この記事は下記のような悩みをお持ちのAndroidアプリ開発者向けの記事になります。

  • 多くの端末では好評いただいているアプリの中、僅かに「動かない」「使えない」といったレビューをいただいてしまう
  • どの端末か確認すると、ZTEの端末であった

開発者の皆様の参考になれば幸いです。

また、情報お持ちでしたらコメントいただけたら嬉しいです。

なお、期待している方には大変申し訳ありませが、問題の根本原因追究や具体的な問題の発生方法などは(面倒なので)記載していません。その中に「ZTEでのみ問題が発生している」という事実がある事を共有し、「やっぱりそうなのか」と感じていただくことが目的です。ユーザーのために問題を解決したいところは皆共通の意識だと思いますが、残念ですが現時点では解決に至っておりません。それもあり、具体的な事は書いていません。

結論:ZTEはSQLiteまわりの動作が他の端末と異なる(事がある)

微妙な書き方でごめんなさい。そこまで深く調査は出来ていないので上記の様な書き方にしています。

実際にZTEの端末を購入してSQLiteに関する処理を行ったところ、ZTE以外の端末(17万以上)ではまったく問題がない処理が、ZTEスマホの3台でのみ正常に動作しませんでした。

なおかつ、試行によって動作が異なるというオマケ付きでした。確率?タイミング?

プログラマがそんな曖昧な発言して良いの?とバカにされそうですが、StackOverflowにも類似の問題が複数報告されており、解決に至っているものはありませんでした。

一例:Not getting SQLite tables on specific device brand ZTE-Z982 N9560

StackOverflowなんて素人の集まりだろ…と突っ込みがあると思いますが、私どもにはZTE端末にささげる調査工数をこれ以上捻出できなかったため、他の優秀なプログラマの皆様からの情報を是非ともいただきたくよろしくお願いします。

調査したそもそもの発端

私どもが公開している1つのアプリをご利用のユーザー様より、「バックアップファイルを読み込んでもデータが読み込めていない」とご連絡をいただきました。

お問い合わせの概要は以下でした。

  • 他の機種でバックアップファイルを作成した
  • 機種変更でZTE製のZ-01Kを購入し、バックアップファイルからのデータ読込を実施した
  • 読込処理は正常完了し、「データの読み込みに成功しました」の画面表示を確認した
  • しかし実際にデータは正しく読み込まれていなかった
  • 他の機種、および別途公開しているWindows版ソフトウェアでは、そのバックアップファイルで問題なくデータの読込ができている
  • Z-01Kでのみデータの読込は出来てない
  • 再掲するが、プログラム上の処理自体はエラーや例外(Exception)が無く正常完了している

このアプリは17万以上のユーザーにご利用いただいており、機種変更時のデータ移行に限っても100件以上のレビューでご好評いただいており、問題なく動作しているものと認識しています。

そんな中で上記のお問い合わせをいただきました。

しかも同じ機種Z-01Kをご利用の方からのべ2通のお問い合わせをいただきました。

2画面スマホZ-01Kの特殊仕様?

外観からして特殊な端末のため、個別仕様なのかと当初は考えていました。

ですが、Z-01K以外にもZTE Blade e02をご利用のユーザーからも同様のお問い合わせをいただきました。

Z-01Kは問い合わせを受けた時には9万円以上するものでしたたため、調査端末として購入するには高額過ぎて手が出せませんでしたが、Blade e02は1万円前後で購入できたため早速Amazonでポチりました。

「Blade e02」安い!

 

ZTE Blade e02で問題発生

バックアップファイルを読み込むことが出来ませんでした。

プログラマなら詳細まで書け!と怒られそうですが、なんせたった1行のシングルスレッド上の処理(SQLiteのupdate処理)が試行によって結果が異なる現象が発生しました。

いやいや、何か別の処理が悪さしてるんだろ?

皆そう思いますよね。私もそう思います。ですが、(確認できている事として)Z-01KとBlade e02では動作に問題があり、その時点での有効インストール数である、その他の端末17万については全く問題がないという状況でした。

対策は?

根本原因が分からない以上、ZTEの端末をご利用のユーザーには申し訳ないと感じつつ、だからと言ってご利用いただいた後に問題が発生することは避けられないため、SQLiteを扱うアプリではZTE端末を「インストール対象から除外」することといたしました。

ZTEの全ての端末が問題なのか、Z-01KとBlade e02だけなのかは分かりません。ただし、少なくとも上記StackOverflowの様に他のZTE端末でも「ZTEでのみ」という記載とともに問題がある事は判っています。

本件については継続して調査いたしますが、もし情報お持ちの方いらっしゃいましたらコメントもしくはメールにてご連絡いただけたら非常にありがたく存じます。

何卒なにとぞよろしくお願い申し上げます。