Android

Abstract#

In June 2018, I was in trouble to update my android application GNSSFinder. It will be recorded here. It might take longer time to upload android apps on Google Play than you might expect.

Topics#

  • 2021年6月現在、アップロード→アプリ公開のやり方もどんどん変わっていきます。何を準備しないといけないかを確認し、Google Play Consoleにいきましょう。feature画像(1024×500)とかちゃんとつくらないと。
  • Mapping.txt
「この App Bundle に含まれている Java / Kotlin コードは難読化されている可能性があります。クラッシュや ANR を簡単に分析、デバッグできるよう、難読化解除ファイルをアップロードすることをおすすめします。」という警告が出ました。難読化なるものはやった記憶はなかったが、Bundleのサイズを小さくするためにbuild.gradle(appの方)のReleaseにminifyEnabledをtrueにすることでできるらしいが、それを今度はデバック時に読みやすくするためのmapping.txtというのも必要らしい。shrinkResourcesを追加してtrueを設定する[4]。確かに作られるようになった。これをアップロードする[5]
  • Problems
アプリアップデートしてアップロードし直さないといけないけど、元のgnssfinderをアップデートしようとして署名済みAPKアップしても鍵が違うって言われたり、
新しいgnssfinderを作ろうとしたら、同じパッケージのアプリはダメですって言われたり。どうすればいいのか。
じゃあ、元のアプリを削除してから、登録すれば良いのかとやってみると、非公開にはなるが、完全削除はできないようだ[2]
  • Actions
packageを変更してみた。androidmanifest.xmlというより、build.gradleというファイルを変更すること。
targetのバージョンを26、つまりandroid8.0にしないといけないらしい。そうするとorg.apache.http.impl.client.DefaultHttpClient関連のパッケージがいつの間にか使えなくなっている[1]。とにかくconnectしてレスポンスとして xmlを読むためだったので、早速java.net.HttpURLConnectionで置き換える。
実際にアプリをインストールして使ってみるとNullPointerがいくつか出て全然動かない。。調べてみるとandroid 6.0からRuntime Permissionという考え方ができて、ユーザがアプリケーション毎にGPSなどへのアクセスを制限できるようになった[3]。そこの処理が上手くできないと起こるらしい。GNSSFinderでは、カメラと写真を保存するためのストレージとGPSがそれに当たるということで、対応。

Reference#

  1. [#1] Taosoftware.Co.,Ltd., 2015年10月, Android 6.0でApache HTTP Clientが削除されました。http://blog.riskfinder.co.jp/2015/10/android-60apatch-http-client.html
  2. [#2]miyaware, 2011年3月, AndroidMarket公開後に注意すべき点。http://miyaware.com/blog/2011/03/androidmarket_1.html
  3. [#3]@Night, 2015年08月27日, Android6.0(M)からの許可ダイアログを表示するPermissionsへの対応方法, https://qiita.com/Night___/items/e7e6ad75c91cb82f3fd5
  4. [#4]https://codeforfun.jp/android-studio-how-to-create-mapping-txt/
  5. [#5]https://codeforfun.jp/android-studio-path-to-mapping-txt-and-upload/#mappingtxt_Play_Console