UE4.27をAndroidSdk32と33、Android Billing Library 5.1に対応させる

まず、こちらによるとAndroid Billing Library 5.1のGitリポジトリがあるらしい。4.27-Plusブランチらしい。

手順

  1. リポジトリをCloneまたはZipでダウンロードする。
  2. VisualStudio2017または2019(最新版は未対応)がインストールされているか確認してなければインストールする。
  3. ソースのなかのsetup.batを実行し、終わるまで待つ。3-4GBのデータがDLされるので結構かかる。
  4. GenerateProjectFiles.batを実行する。終わるとUE4.slnが出来ているのを確認する。
  5. UE4.slnを開いてVisualStudio2019を起動する。
  6. Development Editor、Win64に設定してソースツリーの中のUE4を右クリックしてビルドを実行する。
  7. 4430のプロセスがあるのでただ待つ。Corei7のワークステーションでも2時間-4時間かかるので貧弱な環境だとかなりかかる。

 

で、こちらを使ってビルドする。でもその前にSdk32の対応と33の対応を入れておく。

クローン又はDLしたファイルの中の

Engine/Source/Programs/UnrealBuildTool/Platform/Android/UEDeployAndroid.cs

を開く。で、まずSDK32の対応は

この場所を検索して以下の一文を追加する。

Text.AppendLine(\t\t android:exported=\”true\”);

SDK33の対応は

android:name=\“android.permission.WRITE_EXTERNAL_STORAGE\”

の箇所を探して

android:name=\“android.permission.WRITE_EXTERNAL_STORAGE\” android:maxSdkVersion=\“18\”

に変更する。

で、ビルドする。結構時間がかかるがまあ、待ちます。

うっ!

ヒープ領域を使い果たしましたというエラーメッセージが表示されている

こう解決するようだ。でも続行中。もう20時間なのだが4430中120までしか進んでない。かなりかかりそう。ryzen5 5500uではダメだ。

プロジェクトのプロパティ内の「コマンドライン」→「追加のオプション」に,
/Zm200 と追加

やはり、このままだとビルドに20日くらいかかりそうなので急遽中止してHDDからSSDにデータを移動してSSDでビルドすることにした。でもソース全体のサイズは86GB。ううっでかい!でかすぎるUE4.27。

SSDでビルドしたらものの3時間でビルドできた。がエラー。現在調査中

エラーの原因は仮想メモリ不足でおこったらしい。こちらのブログを見ろとメッセージがあったので見たらVisualStudio2019は/Zm200などの設定追加はできないらしい。なのでシステムの詳細設定からカスタムで設定するとのこと。

8GB位の仮想メモリの設定では足らなくエラーる。ので初期化は4016でOKだが最大サイズは40160にしないとダメ。16GBでもダメだった。SSDの空きに合わせて40GB程度は設定しよう。

で、ビルドしてみたがSDK33の対応はできていない。あれだけじゃダメみたい。ちなみにAndroid Billing Library 5.1にもなっていなかった

調査続行する。いまのところAndroid Billing Library 4でSDK32まではできている。

よくコードを見たらシッピングじゃないとき追加してってなっているのでコメントアウトしてみる

                Text.AppendLine(“\t<uses-feature android:glEsVersion=\”” + AndroidToolChain.GetGLESVersion(bBuildForES31) + “\” android:required=\”true\” />”);
                Text.AppendLine(“\t<uses-permission android:name=\”android.permission.INTERNET\”/>”);
                //if (Configuration != “Shipping” || !bUseExternalFilesDir)
                //{
                    Text.AppendLine(“\t<uses-permission android:name=\”android.permission.WRITE_EXTERNAL_STORAGE\” android:maxSdkVersion=\”18\”/>”);
                //}
                Text.AppendLine(“\t<uses-permission android:name=\”android.permission.ACCESS_NETWORK_STATE\”/>”);
                Text.AppendLine(“\t<uses-permission android:name=\”android.permission.WAKE_LOCK\”/>”);
            //  Text.AppendLine(“\t<uses-permission android:name=\”android.permission.READ_PHONE_STATE\”/>”);
                Text.AppendLine(“\t<uses-permission android:name=\”com.android.vending.CHECK_LICENSE\”/>”);
                Text.AppendLine(“\t<uses-peでrmission android:name=\”android.permission.ACCESS_WIFI_STATE\”/>”);

結局4.27ではSDK33が設定できなかったのでUE5.2.1で33を設定してビルドしてアップした。ちなみに34にするとAndroid Billing Library5.0を5.2か6にしないとダメエラーがでるので33でビルドしなおして対応した。これで一応2023/8/31問題はクリアしたか。

UE5.2のリリースドキュメント

  • Refactored OnlineSubsystemGooglePlay to update Google Billing Library to v5.0.0 and fixed several issues.
  • Android
    • Android Studio 4.0
    • Android NDK r25b
    • Android SDK
      • Recommended: SDK 32→33、34でもビルドできた。が Billing Library to v5.0.0なので34ではUpできない。
      • Minimum for compiling UE: SDK 30
      • Minimum target SDK for running on device: SDK 26
      • AGDE v23.1.82+ required if you are using AGDE debugging.
        • AGDE requires JDK 17. We recommend using OpenJDK 17.

コメントを残す

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

CAPTCHA


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