Windows平臺
1.?下載/安裝Epic Games launcher;然后安裝 Unreal Engine v4.27.2
注意:launcher和具體版本的engine務(wù)必安裝在相同的父目錄下!如下:
2. 安裝Visual Studio 2019或2022。安裝完成后執(zhí)行菜單:幫助 | 檢查更新,確保裝上最新的補丁。
3. 將上述安裝目錄下的 <InstallationPath>\UE_4.27\Engine\Build\BatchFiles 添加到系統(tǒng)的Path環(huán)境變量里
4. Git拉取最新代碼
5. 執(zhí)行命令行進行打包:
// 目標(biāo)平臺:Windows
RunUAT BuildCookRun -project="D:\Codes\richtap_pocs\UnrealEngine\RichTapTestCloud\RichTapTestCloud.uproject" -noP4 -platform=Win64 -clientconfig=Development -serverconfig=Development -cook -allmaps -build -stage -pak -archive -archivedirectory="D:\MyUEGameWin"
打包完成后,將D:\MyUEGameWin目錄下的文件壓縮成一個zip文件,命名規(guī)則:RichTapTestCloud_日期.zip;
注意:
a) 系統(tǒng)可能彈出防火墻攔截提示,點擊“允許訪問”
b) .uproject工程文件需要指定完整路徑
c) 如果不指定-archivedirector參數(shù),則打包出來的文件存放在:RichTapTestCloud\Saved\StagedBuilds
d) 其他命令行參數(shù)該怎么選擇?可以參考在UE編輯器里打包時Output Log窗口的輸出
【注】platform參數(shù)的可選值:Win32,Win64,HoloLens,Mac,XboxOne,PS4,IOS,Android,HTML5,Linux,LinuxAArch64,AllDesktop,TVOS,Switch,Lumin
6. 將插件打成zip包(將用于客戶交付)
編寫Python腳本:<插件版本號> 從RichTapTestCloud\Plugins\RichtapTools\RichtapTools.uplugin 這個文件中讀出,這是個Json文件,須解析"VersionName"字段。
Zip包里的第一級子目錄名字是RichtapTools。然后,把RichTapTestCloud\Plugins\RichtapTools目錄下的這些文件放到RichtapTools之下:Libs、Resources和Source三個文件夾以及里面的所有文件,以及RichtapTools.uplugin文件(換言之,除了Binaries和Intermediate兩個臨時文件夾之外的文件都需要打包)
Zip文件命名規(guī)則:RichtapTools_<插件版本號>_日期.zip
7. 郵件通知
將上述兩個Zip文件的下載地址分別放入郵件正文
郵件標(biāo)題須帶上<插件版本號>
Android平臺
繼續(xù)上面的工作,仍然在Windows機器上執(zhí)行Android打包(官網(wǎng)文檔)。上述步驟#1~#4同。其他步驟:
1. 下載/安裝Android Studio,推薦版本2022.3.1
2. 打開Android Studio的SDK Manager,默認(rèn)已經(jīng)安裝了版本34。需要修改工具鏈版本(重要!):
在SDK Platforms頁簽下,不勾選Android API 34,勾選 Android 12L (API Level 32)
在SDK Tools頁簽下:
-
Android SDK Build-Tools,不勾選34.0.0,勾選29.0.3
-
NDK (Side by side) ,勾選 21.4.7075529
-
Android SDK Command-line Tools,勾選8.0
【注】如果當(dāng)前機器上已經(jīng)裝了高于32的SDK,也可以不卸載,則須在UE編輯器里指定使用android-32,設(shè)置路徑為:Edit | Project Settings | Platforms | Android | Project SDK Override,將SDK API Level (specific version, 'latest', or 'mactchndk') 的值指定為android-32。
3. 在UE的安裝目錄下,UE_4.27/Engine/Extras/Android,編輯SetupAndroid.bat,將所有set SDKMANAGER=的地方都改成set SDKMANAGER=%STUDIO_SDK_PATH%\cmdline-tools\8.0\bin\sdkmanager.bat
然后運行SetupAndroid.bat,看看是否一切正常!
4. 在UE編輯器里,打開項目設(shè)置:Edit | Project Settings | Platforms | Android SDK | SDKConfig,下述三項全部留空,即采用Android Studio的默認(rèn)設(shè)置:
- Location of Android SDK (the directory usually contains 'android-sdk-')
- Location of Android NDK (the directory usually contains 'android-ndk-')
- Location of JAVA (the directory usually contains 'jdk')
另外注意:在 Platforms | Android 設(shè)置頁面,如果有紅色的警示條,需要點擊“Configure Now”、“Accept SDK License”。Google Play Services的配置不用管它。
5. 執(zhí)行命令行進行打包:
RunUAT BuildCookRun -project="D:\Codes\richtap_pocs\UnrealEngine\RichTapTestCloud\RichTapTestCloud.uproject" -noP4 -platform=Android -targetplatform=Android -cookflavor=ASTC -clientconfig=Development -cook -allmaps -build -stage -pak -archive -archivedirectory="D:\MyUEGameAndroid"
打包完成后,將D:\MyUEGameAndroid目錄下的.apk文件拷貝出來。
【注】cookflavor參數(shù)的三個取值:ASTC、ETC2和DXT,是壓縮比從高到低依次排序的三種不同的紋理壓縮格式。ASTC是最新格式,壓縮比最高,但也意味著需要更高的計算資源,適用于Open GL ES 3.2+的設(shè)備。
6. 將.apk文件的下載地址放到郵件通知里
iOS平臺
1. 安裝Xcode 14:https://developer.apple.com/xcode/
2. 在App Store創(chuàng)建一個新的App:RichTapTestCloud
3. UE4編輯器中,編輯菜單--項目設(shè)置--平臺(ios)--單擊Signing,將開發(fā)者證書和描述文件配置到項目中
4. 執(zhí)行命令行進行打包:
RunUAT BuildCookRun -nocompileeditor -installed -nop4 -project="/Users/zff/richtap_pocs/UnrealEngine/RichTapTestCloud/RichTapTestCloud.uproject" -package -ue4exe="/Users/Shared/Epic Games/UE_4.27/Engine/Binaries/Mac/UE4Editor.app/Contents/MacOS/UE4Editor" -compressed -ddc=InstalledDerivedDataBackendGraph -pak -prereqs -nodebuginfo -targetplatform=IOS -build -clientconfig=Development -utf8output -cook -stage -archive -archivedirectory="/Users/zff/MyUEGame"
5. 上傳TestFlight
踩坑記
在Windows、Android、iOS三個平臺的打包流程中,因為Windows較簡單,可以優(yōu)先嘗試。跑通Windows之后,再試Android;這一步可能最折騰!以下是一些問題集錦:
1. Windows打包時,報錯:
UATHelper: Packaging (Windows (64-bit)): ERROR: Unable to instantiate module 'RichtapTools': System.IO.IOException: 文件“D:\Codes\richtap_pocs\UnrealEngine\RichTapTestCloud\Plugins\RichtapTools\Binaries\Win64\RichTapWinSDKDLL.dll”正由另一進程使用,因此該進程無法訪問此文件。
UATHelper: Packaging (Windows (64-bit)): 在 System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
【解決辦法】因為每次打包都會執(zhí)行一個自定義的拷貝SDK DLL的操作,如果在Binaries目錄下的這個DLL被UE編輯器占用,就會導(dǎo)致拷貝失敗。需要將UE編輯器關(guān)閉,再將Plugins\RichtapTools\Binaries\Win64目錄下這個DLL刪除,然后重新打包即可。
2. Android打包:在UE編輯器里執(zhí)行 File | Generate Visual Studio Project 或 Refresh Visual Studio Project,報錯:UE_4.27\Engine\Binaries\DotNET\UnrealBuildTool.exe 已經(jīng)存在的一個IO錯誤... 或者執(zhí)行 File | Package Project | Android時,UE編輯器直接就crash了...
如果用命令行執(zhí)行打包,可能看到的錯誤是:
ERROR: Platform Android is not a valid platform to build. Check that the SDK is installed properly.
【解決辦法】確保Epic laucher和engine安裝在同一個目錄下。安裝時如果都是默認(rèn)路徑,有可能一個安裝在C:\Program Files下,一個安裝在C:\Program Files (x86)下,這樣就會有問題!??!需要卸載engine后重新安裝。重裝之后,記得重新修改和運行engine目錄下的SetupAndroid.bat,還有系統(tǒng)環(huán)境變量Path里的設(shè)置。
3. Android打包出錯:':app:compileDebugJavaWithJavac'
Build-tool 33.0.2 is missing DX at C:\Users\Jack\AppData\Local\Android\Sdk\build-tools\33.0.2\dx.bat
UATHelper: Packaging (Android (ASTC)): FAILURE: Build failed with an exception.
UATHelper: Packaging (Android (ASTC)): * What went wrong:
UATHelper: Packaging (Android (ASTC)): Could not determine the dependencies of task ':app:compileDebugJavaWithJavac'.
UATHelper: Packaging (Android (ASTC)): > Installed Build Tools revision 33.0.2 is corrupted. Remove and install again using the SDK Manager.
【解決辦法】通過Android Studio的SDK Manager,將Build Tools的33版本卸載。UE 4.27最高只能用29版本。
4. Android打包出錯:':app:processDebugResources'、'app:assembleDebug'
UATHelper: Packaging (Android (ASTC)): aapt2.exe W 10-31 10:15:16 3208 22884 LoadedArsc.cpp:657] Unknown chunk type '200'.
UATHelper: Packaging (Android (ASTC)): > Task :app:processDebugResources
...
UATHelper: Packaging (Android (ASTC)): BUILD FAILED in 7s
UATHelper: Packaging (Android (ASTC)): ERROR: cmd.exe failed with args /c "D:\Codes\richtap_pocs\UnrealEngine\RichTapTestCloud\Intermediate\Android\arm64\gradle\rungradle.bat" :app:assembleDebug
【解決辦法】原因是使用了過高版本的Android SDK(比如API Level 33或34等)??梢詫⒏甙姹続ndroid SDK卸載,僅保留Android 12(API Level 32)?;蛘咴赨E編輯器里Android平臺設(shè)置Project SDK Override,指定為android-32。
5. Android打包:在UE編輯里可以成功,在控制臺窗口執(zhí)行命令行也可以成功,唯獨在Jenkins環(huán)境里執(zhí)行報錯:
ERROR: Platform Android is not a valid platform to build. Check that the SDK is installed properly.文章來源:http://www.zghlxwxcb.cn/news/detail-771376.html
【解決辦法】參考這篇文章。需要在操作系統(tǒng)"環(huán)境變量"的系統(tǒng)變量里把ANDROID_HOME、NDK_ROOT、NDKROOT、JAVA_HOME再定義一遍(而不僅僅是用戶變量)。如果還是不行,那就升級Jenkins版本吧,2.4+。文章來源地址http://www.zghlxwxcb.cn/news/detail-771376.html
到了這里,關(guān)于手把手教你:UE 4.27插件項目的自動化打包(Windows、Android、iOS統(tǒng)統(tǒng)搞定)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!