UE5.3.2または5.4.4でSDK34に対応したアプリをビルドする

まず、重要な点

PJ設定の「Show launch image」がTrueになっているとAndroid14では起動しないので必ずFalseにしておく。imageが必要な場合はウィジット等でそれっぽく対応する

または、

"\Engine\Plugins\Runtime\AndroidPermission\Source\AndroidPermission\AndroidPermission_APL.xml"

の赤字のタグを最終行に追加する

	</buildGradleAdditions>
	<androidManifestUpdates>
		<removePermission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
		<addPermission
			android:name="android.permission.WRITE_EXTERNAL_STORAGE"
			android:maxSdkVersion="18" />			
	</androidManifestUpdates>
</root>

これでビルドすると「Show launch image」がTrueでイメージが表示される。

通常、UE5.3.2でAndroidSDK34を指定してビルドするとビルドはできるがアプリが起動しない。(クラッシュを繰り返す)
なのでSDK34を指定する場合は少し手を入れる必要がある。

“UE_5.3\Engine\Build\Android\Java\src\com\
epicgames\unreal\GameActivity.java.template”

の566行近辺のregisterReceiver(consoleCmdReceiver, new IntentFilter(Intent.ACTION_RUN));を置き換える

//registerReceiver(consoleCmdReceiver, new IntentFilter(Intent.ACTION_RUN));
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
   registerReceiver(consoleCmdReceiver, new IntentFilter(Intent.ACTION_RUN), RECEIVER_NOT_EXPORTED);
} else {
   registerReceiver(consoleCmdReceiver, new IntentFilter(Intent.ACTION_RUN));
}

コメントアウトして分岐を入れる(SDK34もしくはそれ以上なら)
これでSDK34を指定してビルドするとクラッシュなく起動する。

しかしながら問題もあって、なぜかGoogleARCoreのプラグインがビルドされない(有効にならない)が、エラーが出ないのでどこに問題あるのかわからない。

なのでUE5.4.4を使うがこちらは手を入れなくともビルドできるし、GoogleARCoreプラグインも正常に使える。
しかしながらこちらも問題があって、LocationServiceAndroidプラグインがビルドされない(有効にならない)
エラーログを見ると

Z:\app\src\main\java\com\epicgames\unreal\GameActivity.java:905: エラー: シンボルを見つけられません
           activityContext.runOnUiThread(new Runnable()
                           ^
  シンボル:   メソッド runOnUiThread()
   場所: タイプContextWrapperの変数 activityContext

となっていて、activityContextにrunOnUiThreadがないみたいなので正常にビルドできなくエラーになるみたいなのでactivityContext.runOnUiThread(new Runnable()をUE5.4/Engine/Pluginの中をGrepしてみる

UE_5.4\Engine\Plugins\Runtime\LocationServicesAndroidImpl\Source\
LocationServicesAndroidImpl\LocationServicesAndroidImpl_UPL.xml

ここの160行近辺に見つかるのでこれを一旦コメントアウトして、activityContextをthisにしてみる。

保存してビルドするとちゃんとLocationServiceAndroidがビルドできた。

ちゃんと動作しているみたいで問題なし。ちなみにUE5.5も同様にLocationServiceAndroidがビルドできないエラーになるので同じ個所を修正すればいいみたい
※ちなみにAndroid14からLocationServiceの仕様が変更になった模様。なので修正する必要がある模様だが後に調べてみることにする

さらにアプリ内購入の方法がMake an in-app ~が非推奨になりstart in-app ~を使うとの警告が出るがこのstart in-app ~がくせもので何故か通ると全てFailedになってしまう。皆さんこの現象に悩まされているようで解決できないっぽいのでおばけスキャンでは引き続きmake an in-app~を Google Play Billing Library 7.0.0にして使うことにする。
UE_5.4\Engine\Plugins\Online\Android\OnlineSubsystemGooglePlay\
Source\OnlineSubsystemGooglePlay_UPL.xml


アプリ内購入にはこれの追加を忘れない。

また、UE5.3.2では問題ないがUE5.4.4では*.apkが100MBを超えてしまうのでアップロードできない。なので*.aabでビルドする必要があります。(aabでビルドするとかなりサイズが小さくなるので驚きます)
また、SDK14以降はFOREGROUND_SERVICEが必須のために準備しておく必要があります。

おばけスキャンではARカメラと位置情報が該当するのでどういうものか説明できる動画(何故か動画を指定する)とどのような用途で使用するのか説明をコンソール内でする必要があります。(FGSはバックグラウンドサービスのようなのでおばけスキャンでは自動セーブがそれみたいなので申告しなおす)

<service android:name=”com.epicgames.unreal.RemoteFileManagerService” android:foregroundServiceType=”dataSync” android:exported=”true” __line=”71″ />

以下がSDK、NDKなどの設定になります(UE5.3.2、UE5.4.4共通※UE4.27.2はNDKとJAVAの設定が相違するがここでは割愛する)
JAVAはjdk-17.0.6_windows-x64_bin




コメントを残す

メールアドレスが公開されることはありません。必須項目には印がついています *

CAPTCHA


日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)