Androidアプリを公開する

公開前チェックリストを確認しながら進めれば大丈夫

1. リリース用アプリの作成

  • リリース用にアプリを設定する。
    • Log 呼び出しを削除
    • マニフェスト ファイルから android:debuggable 属性を削除
    • build.gradle(Module)ファイルでversionCodeとversionNameを設定する。 versionCodeの数値はバージョンアップに伴って増加させないとならないので、お約束の方法、日付+2桁にすれば間違いない。 一方、versionNameは任意の文字列だが、普通にメジャーバージョン+マイナーバージョン+サブバージョンとかにする。

versionCode 22070701
versionName "0.1.0"

  • iconを作成
    Image Asset Studio を実行する。 res フォルダを右クリックして、[New] > [Image Asset] を選択。

    • アダプティブ ランチャー アイコンとレガシー ランチャー アイコンを作成
    • アクションバー アイコンまたはタブアイコンを作成
    • 通知アイコンを作成
  • アプリへの署名

  • aab (Android App Bundle)形式で、公開版アプリをビルドする。

2. デベロッパー アカウント作成

  • デベロッパー アカウント申込
  • 個人用
  • 登録料 $25 (痛い)
  • 本人確認書類(運転免許証)はカードの端も撮れていないと受付してもらえない場合がある。
  • 本人確認には数日掛かるらしい

3. リリース版アプリをテストする。

スマートフォンタブレットのそれぞれについて、少なくとも 1 つの対象機種でテストする。

  • ローカライズを計画する
    僕の場合は英語と日本語を用意している。 ローカライズ チェックリスト

  • Privacy Policy の作成
    下記の事項を盛り込んで、インターネットアクセス可能な場所で公開する。

    • 個人情報の収集
    • 問い合わせ先
    • 改定について
    • 制定日・改定日
  • 問い合わせ先メールアドレス
    公開可能なメールアドレスを用意する。

  • 内部テスト
    知り合いのGmail利用者にテストしてもらう。自分だけでも可。

    • アプリのPlayストアの掲載情報を作成
      スクリーンショット、アプリ名、説明文、プライバシーポリシー等。 ストアには大量のアプリがあるので、作ったアプリの他とは違う特徴を主張し、検索でヒットしやすいようなキーワードを入れ込む。
  • クローズドテスト(α版)
    内部テストと同様に知り合いのGmail利用者にテストしてもらう。自分だけでも可。 アプリのPlayストアの掲載情報は内部テストに問題が無ければそのままで良い。

  • オープンテスト(β版) アプリのPlayストアの掲載情報はクローズドテストに問題が無ければそのままで良い。

4. アプリを公開する

アプリのPlayストアの掲載情報はオープンテストに問題が無ければそのままで良い。 審査が済むと晴れて「製品版」として完全公開となる。

祝!初公開アプリ:ミニマリスト置時計

5. アプリの改善

アプリを公開すると、自分だけでは気づかなかった改善点が見えてくる。 ユーザーからのレビューであったり、統計情報であったり。 統計情報ではユーザー数やアンインストール数の国別も分かるので、特定の国のユーザーがすぐにアンインストールようであれば、その国の言語等で何か不具合が生じている可能性が高い。

Appendix おまけ

審査

リリースやストアの掲載情報を更新するとステータスが「審査中」になる。 審査完了後に更新内容に公開される。 立て続けに更新すると、審査には丸1日以上掛かる時もある。

Analyze APKしたAndroidManifest.xmlファイルでエラー表示

xmlns:android="http://schemas.android.com/apk/res/android" がエラー "URI is not registered (Settings | Languages & Frameworks | Schemas and DTDs)" となることがあるが無視して良さそうだ。

Privacy policy of justClock

The privacy policy regarding the handling of personal information on the application justClock is as follows

  • Collection of Personal Information
    justClock does not collect any personal information.

  • Contact Information
    For inquiries regarding justClock's handling of personal information, please contact us at the following email address.
    Email: much.more.most@gmail.com

  • Revisions
    The latest privacy policy, as amended, will always be posted on this page.

  • Date of Enactment/Revision Enacted: July 15, 2022


アプリ justClock における個人情報の取扱いについて、以下のとおりにプライバシーポリシーを定めます。

  • 個人情報の収集
    justClock は一切の個人情報を収集しません。

  • お問い合わせ先
    justClockでの個人情報の取扱いに関しては、以下のメールアドレスにお問い合わせください。
    Email: much.more.most@gmail.com

  • 改定
    改定された最新のプライバシーポリシーは常に本ページにて開示されます。

  • 制定日・改定日 制定:2022年7月15日

ド初心者がAndroid アプリを作ってみた

「ド初心者」といってもAndroidアプリ開発の初心者です。 オブジェクト指向言語や統合環境も、ほぼ初心者です。 ただ、C言語でのプログラミングは40年近いキャリアがあります。

イ)Android Studioをインストールする

開発環境Android Studioココからダウンロードし、インストールする。

Java or Kotlin それが問題だ

現在、Androidアプリの開発言語としてはKotlinとJavaがある。 Kotlinの方が新しいのでJavaよりも優れている点があるのだが、新しい分、ライブラリの改廃や変更が有ったりして、ネットの過去の情報が使えないことが多く、よっぽどの愛が無ければ挫ける(私は挫けた)。 なので、まだしばらくはJavaで行こう。

ロ)プロジェクトの作成例

時計を作ってみた。

ロ-1. 新規プロジェクト作成

「New Project」「Empty Activity」で新規プロジェクトを作成

  • Name は好きな名前で
  • Language は Java を指定
  • Minimum SDKAndroid 10辺りで(メンテナンスされている最も古いバージョン(2022年7月時点))

これで、実行可能な最小限のプログラムの雛形が生成される。

ロ-2. とりあえず Run

メニューバーから「Run」「Run 'App'」すると、Buildして端末エミュレータを起動し、アプリが実行される。 画面中央に"Hello World!"と表示されていれば、ここまでは問題無い。

自動的に作成された雛形を"Run"したところ

ロ-3. プログラムを修正する

activity_main.xml

<TextView

<TextClock

に変更する。

これだけである。大事なところなのでもう一度言う、これだけで時計ができる

ロ-4. 再び「Run 'App'」

画面中央に時計(らしきモノ(*))が表示される。

時計が表示された

このように、TextView Class を TextClock Class に置き換えるだけで、いとも簡単に時計を作れてしまう。 "Hello World!"のような無意味な静的表示ではなく、時計のような実用性のある動く表示を実現できた。 オブジェクト指向万歳!(なのか?)

もちろん、秒を表示したりタイムゾーンを指定したり、あるいは、フォントや画面位置の設定など、 実利用するためには様々な設定を加える必要があるが、ここではアプリ開発の流れを示す例なので、ここまでとする。

(*) タイムゾーンが未設定なので、この時点では時刻がズレているかもしれない。いや、たぶんズレているだろう。 エミュレータタイムゾーンの設定はエミュレータ上の「設定」からできる。

ハ)作ったアプリをスマートフォンにインストール

APKを作ってスマートフォンにインストールする。 APKの作り方はココを参考。

スマートフォンへのAPKファイルのコピーはGoogle Drive経由が楽だろう。

オマケ

参考書

Platform-ToolsにPATHを通す

adbを使いたいのでPATHを通した。

Class について

様々な部品(Class)をうまく使えば、アプリを効率良く作ることができるだろう。 しかし、オブジェクト指向プログラミングの大きな欠点であるが、どんなClassがあるのかが分からない。 地道にDeveloper Referenceで検索するくらいか。 きっと、欲しい機能が既に存在していると信じて。

Trouble Shooting

  • Android Studio でEmulatorが起動しない
    久しぶりにAndroid Studio を使おうと思ったら、Emulatorが起動しない。 ログ /mnt/c/Users/(user name)/AppData/Local/Google/AndroidStudio2021.2/log/idea.log を見ると、エラーが出ている。

ERROR - Emulator: Pixel 5 API 31 - Could not find GLES 2.x config!

そこで、Device ManagerのEdit this AVDでEmulated PerformanceをGraphics: Software - GLES 2.0 に変更したら、問題解決した。

Androidスマホの乗り換え

たまにしか機種変更しないから、毎回手順を忘れてしまう。

1. 要求仕様を検討して、仕様を満足する機種を探す(出てくる待つ)

現行機の不満点を改善する。

項目 現行機
UMIDIGI A3 Pro
要求仕様 購入機
OPPO A54 5G
OPG02
備考
NFC NFC-B NFC-B 今回の機種変のモチベーションはこれ。マイナンバーカードを読み取る機会が増えてきたので
antutu 56,327 10万 以上 279,127 アプリの起動を早くしたい
RAM 3 GB 4 GB 以上 4 GB バックグラウンドアプリの回復が遅いのはRAMが足りていないのかと推測
ROM 32 GB 64GB 以上 64GB ストレレージもいっぱいいっぱいでアプリやデータを削除しながらやりくりしていたので増やしたい
バッテリー容量 3.3 Ah 4 Ah 以上 5 Ah 丸一日保つとありがたい
価格 約1万円 2万円以下 17,193円 前機種は約1万円だったが、要求仕様がアップしているので2万円くらいまではしょうがないかな
SIMサイズ nano nano nano 現行と同じ

その他の仕様

その他は現行機並みで問題無し。

項目 現行機
UMIDIGI A3 Pro
購入機
OPPO A54 5G
OPG02
画面解像度 1512x720 2400x1080
お財布携帯
OS Android 8.1 Color OS 12 (Android 12)
カメラ 12M(out)+8M(in) 48M+広角8M+マクロ2M+モノクロ2M(out)+12M(in)
ディスプレイ方式 LCD LCD
防水防塵
5G

機種決定

回線業者を変えたくないので端末単体で探していたところ、 AmazonOPPO A54 5G OPG02が17,193円で出ていたので購入。

2. 設定

本体を購入して最初に電源を入れると初期設定が始まる。 Wifiに接続しよう。

アプリとデーターの移行

今回購入したOPPOの端末はデータ移行アプリ"OPPO Clone Phone"Google Playからダウンロード可能) を使って旧端末からアプリやデータを移行することができる。 "OPPO Clone Phone"では、新端末がWifiの親になる。移行するデータ量によっては長時間掛かるので新旧端末とも電源に接続した状態でデータ移行するのが安心。

各アプリを起動し、必要ならサインイン

  • LINE: ver.12.10.1以降なら「設定」「かんたん引き継ぎQRコード」で簡単に引き継げるようになった。

    1. 旧端末でGoogleアカウントにトークをバックアップ
    2. 新端末でバックアップの復元
  • ChMateのデータは何も引き継がれていないようだ。

  • 他のアプリも一度は起動し、サインイン等をしておく。数が多いとウンザリ。

3. SIM設定(OPPO A54 5G OPG02, Color OS ver.12の場合)

何も問題が無ければAPNだけ設定してサクッと済むのだが、今回はSIMロックが解除されていなかったので、そこから始める。

SIMロック解除

購入したOPPO A54 5G OPG02のAPN設定ができない。SIMカードロックステータスを見ると解除されていないようだし、ステータスを更新しようとしても失敗してしまう。 そこで、au SIMロック解除のお手続きSIMロックを解除する。手続きは無料だが、au IDの登録が必要。

SIMカードステータスの更新

「設定」「デバイスについて」「その他の情報」「SIMカードのステータス」「SIMカードロックステータス」にて「SIMカードステータスを更新します」をタップし、更新が成功したことを確認する。

APN(Access Point Name)設定

「設定」「モバイルネットワーク」「SIM」「アクセスポイント名」で利用している回線業者を設定する。

心がきれいな人には何の変哲もない写真ですが。。。

検索エンジンはDuckDuckGo

はてなブログを書き始めて気がついたのだが、ググっても自分の記事が出て来ない。ってことは他の人の記事も出てこないのだろう。今までGoogle検索を愛用してきたが、こんな検索エンジンは使い物にならない。

検索エンジンの比較

評価項目 DuckDuckGo Bing 日本Yahoo! Google
自分の記事がヒットするか

はてなブログ

× ×
シェア(%) 0.24 7.78 13.81 77.83

ブラウザの検索エンジン選択リストを対象に比較した。 ちなみに、米国Yahoo!なら自分の記事がヒットしたのだが、ここは日本ということで日本Yahoo!の検索結果で比較してみた。

いやぁ、日本のメジャー検索エンジンtop2でヒットしないというのは、アフィリエイトで稼ぐ野望的には厳しい現実を発見してしまった。

さて、DuckDuckGoとBingはどちらも自分の記事がヒットするのだが、過去の経緯でMicrosoftをあまり好きではないので、しばらくデフォルトの検索エンジンDuckDuckGoにしてみる。これまでのGoogleではパーソナライズ検索が有効だったが、DuckDuckGoでは敢えてパーソナライズ検索は取り入れてないらしい。使い勝手はどうなるかな?

お気に入り百均グッズ

ポテトマッシャー(セリア)

ポテトマッシャー

ポテトサラダをアッという間に作れる優れもの。 力を入れてもたわまない強度とポテトを絶妙に砕く形状。 ゆで卵を潰すのにも使える。 世の中には様々なポテトマッシャー があるけれど、この形状がベストだと思う。 他にも同様の形状はあるけれど、お高い。 これが百均で手に入るとは幸せな時代だね。

イワタニのガスマッチ(セリア)

イワタニのガスマッチ

手に馴染む大きさと形。着火しやすい着火レバー。質感もグッド。ガス補充可能。ガス残量確認窓有り。保護キャップは無くしそう。