2
1

【UE5】Google Play Consoleの警告に対応する

Posted at

はじめに

先日、弊社のアプリのバージョンアップを致しまして、無事完了したと思いきやGoogle Play Console君から警告が出ました。
1.png

6 より前のバージョンの Play Billing Library を使用したアプリの公開や更新は、上記の日付から Google Play Console でブロックされるようになります。

Google Play Console でブロックされるようになります・・・?
そして警告君のターンはまだ終わっておらず、2つの警告を召喚されました。
2.png
3.png
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もう少し詳しくなりたい!

参考文献

2
1
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1