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 デベロッパー プログラム ポリシー)も確認しましたが
こちらはよくわかりませんでした。おそらくハッシュタグ問題と関連して表示されいるのかも。
再び再審査に出しました。