はじめに
先日、弊社のアプリのバージョンアップを致しまして、無事完了したと思いきやGoogle Play Console君から警告が出ました。
6 より前のバージョンの Play Billing Library を使用したアプリの公開や更新は、上記の日付から Google Play Console でブロックされるようになります。
Google Play Console でブロックされるようになります・・・?
そして警告君のターンはまだ終わっておらず、2つの警告を召喚されました。
fragment?Play Core?どちら様ですか?
こんな状態でしたが頑張って対応したので、今回の記事ではこれらの解決法を書いておきます。
開発環境
- Windows11
- UE5.3.2(ソースコードビルド)
- Visual Studio2022
- Android Studio Flamingo 2022.2.1 Patch 2
Billing Libraryの更新
Billing Libraryとは課金システムを実装するためのAPIです。
UEでは課金が一切ないアプリでもプラグインでこのAPIを組み込んでしまっているため、この警告が出てしまいます。
対策としてはBilling Libraryが組み込まれているOnline Subsystem GooglePlay
プラグインをオフにすることでおそらく対策可能(試してないので確証はない)ですが、必要なものも消えるとめんどくさいので大人しくバ-ジョンを上げることにします。
手順
先ほども書いた通り、Billing LibraryはOnline Subsystem GooglePlay
プラグインで実装されています。
以下のパスからファイルを開きます。\Engine\Plugins\Online\Android\OnlineSubsystemGooglePlay\Source\OnlineSubsystemGooglePlay_UPL.xml
18行目の
implementation 'com.android.billingclient:billing:6.0.0'
を
implementation 'com.android.billingclient:billing:7.0.0'
に変更します。
androidx.fragmentの更新
こいつは自分でもあまりわかっていないので、話半分で聞いてください。
android.fragmentとはアプリのUIを管理するためのフレームワークです。
異なる画面サイズのUIに対応したり、UIを動的に変更できるみたいですね。知らんけど。
記事作成当時のfragment最新版は1.8.1です。
しかしfragment:1.8.1の依存関係の中に、
org.jetbrains.kotlin:kotlin-stdlib:1.8.22
がありまして、UE5.3.2はこのkotlinバージョンに対応していませんでした。
UE5.3.2の場合はkotlin-stdlib:1.6.21(間違ってたらごめんなさい)だったので、このバージョンに依存しているfragment:1.5.7が導入できる最新のものになります。
手順
以下のパスからファイルを開きます。
\Engine\Source\ThirdParty\AndroidPermission\permission_library\additions.gradle
dependencies内に以下のコードを追加します。
constraints.implementation 'androidx.fragment:fragment:1.5.7'
constraintsを付けることで、誰かが依存関係でfragment1.0.0を要求している場合でも、最終的に1.5.7を使用するように指定できます。
コード全体は以下のようになります。
android {
namespace="com.google.vr.sdk.samples.permission"
}
dependencies {
implementation 'androidx.legacy:legacy-support-v13:1.0.0'
constraints.implementation 'androidx.fragment:fragment:1.5.7'
}
com.google.android.play:coreの更新
公式ドキュメントを見て、やることはわかるが手順通りやってもエラーが出てしまい、少し苦戦しました。
一応なぜこの更新が必要か簡単に書くと、Play Coreという4つの便利な機能が詰まったパックがあったのですが、4つの機能のうち1つしか機能を使わなかったら容量の無駄じゃね?と考えたGoogleは4つの機能をそれぞれ分割しました。
そして今後はそれぞれ使いたいやつを使ってね、と同時にPlay CoreはAndroid14から対応しなくなるから使わないでね、という感じです。
play:coreが組み込まれているのはGooglePAD
プラグインです。
play:coreをなくすためにはプラグインをオフにすれば良いですが、現在Play Storeにアプリをアップロードできる拡張子はaabのみで、aabにobbを組み込むにはPADを使うしかありません。
うーん、なんとももどかしい。
手順
以下のパスからファイルを開きます。
\Engine\Plugins\Runtime\GooglePAD\Source\GooglePAD\GooglePAD_APL.xml
182行目の
implementation('com.google.android.play:core:1.10.0')
を
implementation('com.google.android.play:asset-delivery:2.2.2')
に変更します。
さらに214行目に移動し、
// for GooglePAD
import com.google.android.play.core.assetpacks.AssetLocation;
import com.google.android.play.core.assetpacks.AssetPackLocation;
import com.google.android.play.core.assetpacks.AssetPackManager;
import com.google.android.play.core.assetpacks.AssetPackManagerFactory;
import com.google.android.play.core.assetpacks.AssetPackState;
import com.google.android.play.core.assetpacks.AssetPackStateUpdateListener;
import com.google.android.play.core.assetpacks.AssetPackStates;
import com.google.android.play.core.assetpacks.model.AssetPackStatus;
import com.google.android.play.core.tasks.OnCompleteListener;
import com.google.android.play.core.tasks.OnSuccessListener;
import com.google.android.play.core.tasks.RuntimeExecutionException;
import com.google.android.play.core.tasks.Task;
これを
// for GooglePAD
import com.google.android.play.core.assetpacks.AssetLocation;
import com.google.android.play.core.assetpacks.AssetPackLocation;
import com.google.android.play.core.assetpacks.AssetPackManager;
import com.google.android.play.core.assetpacks.AssetPackManagerFactory;
import com.google.android.play.core.assetpacks.AssetPackState;
import com.google.android.play.core.assetpacks.AssetPackStateUpdateListener;
import com.google.android.play.core.assetpacks.AssetPackStates;
import com.google.android.play.core.assetpacks.model.AssetPackStatus;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.OnSuccessListener;
import com.google.android.gms.tasks.RuntimeExecutionException;
import com.google.android.gms.tasks.Task;
に変更します。
まとめ
今回は、
- Billing Library
- androidx.fragment
- Play Core
この3つの更新方法を書きました。
これ系の更新は毎年くるっぽいので、スマホアプリをリリースしたらこの問題と一生向き合っていかなければなりません。
これに毎回対応するEpic様の苦労が計り知れないですね。
記事内に間違った情報があるかもしれないので、優しく指摘してください。
Androidもう少し詳しくなりたい!
参考文献