先做它個(gè)天貓網(wǎng)站百度搜索關(guān)鍵詞
虛幻引擎?支持將項(xiàng)目發(fā)布到?安卓(Android)?移動(dòng)設(shè)備上,并且提供了若干功能幫你將項(xiàng)目發(fā)布到?谷歌游戲商店。本節(jié)包含了如何設(shè)置Android開(kāi)發(fā)環(huán)境、如何使用Android功能和服務(wù)、以及如何為發(fā)布游戲做準(zhǔn)備相關(guān)的指南。
當(dāng)前SDK要求
- 當(dāng)前UE版本:5.3
- Android Studio Version: Flamingo 2022.2.1 Patch 2 May 24, 2023
- Android SDK:
- 推薦版本:SDK 33
- 通過(guò)編譯要求的最低版本:SDK 30
- 能在設(shè)備上發(fā)布所需的最低目標(biāo)SDK版本:26
不同商城對(duì)于目標(biāo)SDK最低版本的要求是不同的,可能與上文有所不同。
- NDK版本:r25b
- 編譯工具:33.0.1
- Java運(yùn)行時(shí):OpenJDK 17.0.6 2023-01-17
- 要進(jìn)AGD調(diào)試,需要AGDE v23.1.82+。
當(dāng)前設(shè)備兼容性
The current version of Unreal Engine supports Android devices meeting the following specifications:
- Android 8或更高版本
- 64位Arm CPU
- 兼容的GPU
- Mali T8xx、G71、G72、G76、G77、G78和G71x系列
- Adreno 5xx、6xx或7xx系列
- PowerVR GM9xxx系列
- Xclipse 920
- 兼容的圖形API
- OpenGL ES 3.2
- Vulkan 1.1(需要Android 10或更高版本的設(shè)備,以及兼容的驅(qū)動(dòng)程序)
開(kāi)始入門(mén)
設(shè)置Android SDK和NDK
如何為虛幻引擎設(shè)置你的Android開(kāi)發(fā)環(huán)境
Android快速入門(mén)
Android平臺(tái)的開(kāi)發(fā)設(shè)置。
設(shè)置Android設(shè)備
了解如何設(shè)置Android設(shè)備以便開(kāi)發(fā)虛幻引擎項(xiàng)目。
開(kāi)發(fā)指南
使用 Google Play 成就
利用 Google Play 成就提升玩家粘著度。
在安卓上使用 Ad Mob 游戲內(nèi)置廣告
在安卓上使用 AdMob 游戲內(nèi)置廣告系統(tǒng)。
Android Manifest控制
設(shè)置及使用Android Mainfest文件。
使用安卓?jī)?nèi)購(gòu)
利用內(nèi)購(gòu)為安卓游戲增加更多付費(fèi)內(nèi)容。
使用 Google Play Services 排行榜
在游戲中使用排行榜。
Android虛擬鍵盤(pán)
了解如何設(shè)置Android虛擬鍵盤(pán)以在UE5中使用。
Android開(kāi)發(fā)參考
如何安裝不同的Android SDK,設(shè)置環(huán)境變量,以及使用紋理格式。
Android Vulkan移動(dòng)渲染器
介紹Vulkan兼容性以及如何在Android項(xiàng)目中使用移動(dòng)渲染
設(shè)置安卓運(yùn)行畫(huà)面
安卓項(xiàng)目自定義可選運(yùn)行畫(huà)面設(shè)置的總覽。
打包和發(fā)布
項(xiàng)目發(fā)布簽名
為項(xiàng)目上架 Google Play 商店做好準(zhǔn)備。
Google Play資產(chǎn)交付參考
有關(guān)Google PAD API的參考和實(shí)現(xiàn)指南
打包Android項(xiàng)目
介紹如何打包最終Android項(xiàng)目。
安卓配置規(guī)則系統(tǒng)
介紹如何在虛幻引擎項(xiàng)目中設(shè)置安卓配置規(guī)則系統(tǒng)。
關(guān)于Android項(xiàng)目的自定義設(shè)備描述和可擴(kuò)展性
設(shè)備描述規(guī)則和可擴(kuò)展性設(shè)置的參考。
調(diào)試
調(diào)試Android項(xiàng)目
了解如何使用Android Studio調(diào)試Android項(xiàng)目。
在Visual Studio中使用AGDE調(diào)試
使用AGDE在Visual Studio中調(diào)試Android項(xiàng)目
Android文件服務(wù)器
使用Android文件服務(wù)器代替ADB來(lái)推送和編輯虛幻引擎項(xiàng)目的文件。
優(yōu)化
為Android創(chuàng)建捆綁的PSO緩存
為Android設(shè)備創(chuàng)建捆綁的PSO緩存的分步驟操作說(shuō)明。
降低安卓二進(jìn)制文件大小
了解如何縮小安卓平臺(tái)項(xiàng)目的二進(jìn)制文件。
?
class BpEncryptor : public ndk::BpCInterface<IEncryptor>
{
public:
? ? virtual binder_status_t encrypt(char * src, int length, char* out, int &error) {
? ? ? ? LOGI( "BpEncryptor: encrypt ");
? ? ? ? binder_status_t stat = STATUS_OK;
?
? ? ? ? AParcel* parcelIn;
? ? ? ? stat = AIBinder_prepareTransaction(asBinder().get(), &parcelIn);
? ? ? ? if (stat != STATUS_OK) return stat;
?
? ? ? ? stat = AParcel_writeInt32(parcelIn, length);
? ? ? ? if (stat != STATUS_OK) return stat;
?
? ? ? ? stat = AParcel_writeCharArray(parcelIn, reinterpret_cast<const char16_t *>(src), length);
? ? ? ? if (stat != STATUS_OK) return stat;
?
? ? ? ? stat = AParcel_writeInt32(parcelIn, length);
? ? ? ? if (stat != STATUS_OK) return stat;
?
? ? ? ? ndk::ScopedAParcel parcelOut;
? ? ? ? stat = AIBinder_transact(asBinder().get(), TRANSACTION_ENCRYPT, &parcelIn, parcelOut.getR(), 0 /*flags*/);
? ? ? ? if (stat != STATUS_OK) return stat;
?
? ? ? ? int32_t size = 0;
?
? ? ? ? stat = AParcel_readInt32(parcelOut.get(), &size);
? ? ? ? if (stat != STATUS_OK) return stat;
?
? ? ? ? return stat;
? ? }
?
? ? virtual int decrypt(char * src, int length, char* out, int &error) override{
? ? ? ? LOGI( "BpEncryptor: decrypt ");
? ? ? ? ndk::ScopedAParcel parcelOut;
? ? ? ? binder_status_t stat = STATUS_OK;
? ? ? ? AParcel* parcelIn;
? ? ? ? stat = AIBinder_prepareTransaction(asBinder().get(), &parcelIn);
? ? ? ? if (stat != STATUS_OK) return stat;
?
? ? ? ? stat = AIBinder_transact(asBinder().get(), TRANSACTION_DECRYPT, &parcelIn, parcelOut.getR(), 0 /*flags*/);
?
? ? ? ? return stat;
? ? }
};