APP「リズムアカデミア」iphon審査通過&Android申請

Congratulations!
App Store Connectからは嬉しいメール。一回で通りました。
ストアでのアプリは下記
https://apps.apple.com/app/rhythm-academia/id6754052870

そして、今度はGoogle Play Consoleにアンドロイドアプリとしての申請
こちらは簡単にいくかなと思いきや・・またまた困難

目次

アンドロイドアプリとしての申請への準備

✅ Androidランチャーアイコンの登録

1)android/app/src/main/res/にIcon Kitchenが生成したフォルダ構造(mipmap-mdpi, mipmap-hdpi, mipmap-xhdpi, mipmap-xxhdpi, mipmap-xxxhdpi)をそのままコピー
resフォルダー自体ではなく、resフォルダーの「中身」をコピーします。

2)android/app/src/main/AndroidManifest.xml
タグ内に以下の記述があるか確認:android:icon=”@mipmap/ic_launcher”

3)アンドロイドスタジオのresフォルダーに赤い波線があることに気が付く
  ファイル名にスペースが含まれていることが原因と気がつきました。
Icon Kitchenが生成したファイルそのままではダメで
各mipmapフォルダ内の以下のファイル名を
ic_launcher_foreground.png、ic_launcher_background.pngというように拡張子pngがついたものはすべてic_launcherに変えました

4)ビルド →また失敗
 原因はスペースを含むXMLファイル があること。res/mipmap-anydpi-v26のXMLファイルもリネームが必要

<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
    <background android:drawable="@mipmap/ic_launcher_background"/>
    <foreground android:drawable="@mipmap/ic_launcher_foreground"/>
    <monochrome android:drawable="@mipmap/ic_launcher_monochrome"/>
</adaptive-icon>

5)ビルド→ようやくAPKのビルドが成功
6)エミュレーターで確認
 よしよし!アイコンが正しく表示されている
 アプリ名は・・画面を下から上にスワイプしてアプリドロワー(アプリ一覧)を開く
   ・・ガーーん
  正しく表示されていない!!

7)android/app/src/main/AndroidManifest.xmlを確認
 android:label=この行を確認、すでに正しいアプリ名になっている。なぜ?
すでに変更済みなのに反映されていない
原因:
既にインストールされているアプリのキャッシュが残っている

8)アプリをアンインストールして再インストール
  ようやくこれで正しいアプリ名になっていることを確認、Android版の準備が完了


✅ Google Play Consoleへのアップロード

Google Play Consoleへのアップロードでいよいよ登録を始めました。
3度目なのでなれているかなと思いきやけっこう時間がかかります。


スクリーンショットの問題でつまずく
 iPhone用に作成したスクリーンショット1284×2778ピクセルをそのまま使おうとしましたが
 やはり作り直すことにしました。
 Google Playストアの表示に最適化するためには、9:16(例:1080×1920ピクセルなど)に合わせて画像を調整することが強く推奨されていたからです。

Google Play Consoleの要件と適合性
最小/最大サイズ最小320px / 最大3840px適合(範囲内)
アスペクト比推奨 9:16 または 16:9適合
長辺/短辺の比率最大 2:1 まで適合

1620×2880ピクセルで作り直しました。

ついでにフィーチャーグラフィックも作成しました。

次に、アプリ説明文: 短い説明と詳細説明はiosのをそのまま使いましたが・・・これで審査で思わぬトラップ。それは後ほど


✅ 製品版として公開;aabをアップしたら拒否される!

Google Play Consoleの左メニューから 「リリース」 → 「製品版」 を選択
「新しいリリースを作成」 をクリック
「App Bundle をアップロード」 をクリック
app-release.aab ファイルをアップロード(build/app/outputs/bundle/release/app-release.aab)

aabをアップしたら拒否される!

アップロードされた APK または Android App Bundle がデバッグモードで署名されています。APK または Android App Bundle はリリースモードで署名する必要があります。

このエラーは、AABファイルに署名が必要ということです!
解決方法:リリース用の署名を設定
ステップ1:キーストア(署名鍵)を作成
ステップ2:key.propertiesファイルを作成
ステップ3:署名設定をbuild.gradle.ktsに追加

そしていつもの

cd ~/flutter_projects/rhythm_academia
flutter clean
flutter build appbundle --release

またビルドエラー

問題が分かりました!
build.gradle.kts は Kotlin DSL なので、Groovy構文(def)ではなく、Kotlin構文を使う必要があるとのこと。

ファイルの最初の部分(plugins { の前)を以下のように完全に書き換え

import java.util.Properties
import java.io.FileInputStream

val keystorePropertiesFile = rootProject.file("key.properties")
val keystoreProperties = Properties()
if (keystorePropertiesFile.exists()) {
    keystoreProperties.load(FileInputStream(keystorePropertiesFile))
}

plugins {
    id("com.android.application")
    id("kotlin-android")
    // The Flutter Gradle Plugin must be applied after the Android and Kotlin Gradle plugins.
    id("dev.flutter.flutter-gradle-plugin")
}

そして、signingConfigs セクションも修正:

signingConfigs {
        create("release") {
            keyAlias = keystoreProperties["keyAlias"] as String
            keyPassword = keystoreProperties["keyPassword"] as String
            storeFile = file(keystoreProperties["storeFile"] as String)
            storePassword = keystoreProperties["storePassword"] as String
        }
    }

重要な変更点:

def → val
new Properties() → Properties()
‘key.properties’ → “key.properties” (シングルクォートではなくダブルクォート)
new FileInputStream → FileInputStream
file(it) → file(keystoreProperties[“storeFile”] as String)

そして署名付きAABのビルド成功しました

審査に送信→即、審査落ち

まさかの即審査落ち

1)メタデータに関するポリシー: メタデータに関するポリシーへの違反
2)Google Play デベロッパー プログラム ポリシーを遵守していません
という理由でした。

なぜ!こんな単純なアプリで・・・!
調べたら
アプリの説明文やその他のテキストに ハッシュタグ(#) が含まれていることが原因でした
iOSの説明文の最後に下記をいれていました

#リズム練習 #楽譜 #音楽教育 #ドラム #ギター #ベース #ピアノ #リズムトレーニング #音楽アプリ

がありました。ッシュタグの行を削除、保存
もう一つの問題(Google Play デベロッパー プログラム ポリシー)も確認しましたが
こちらはよくわかりませんでした。おそらくハッシュタグ問題と関連して表示されいるのかも。
再び再審査に出しました。

目次