一 Http Proxy
UE4打包过程会连接各种网络仓库下载依赖包(目标平台为Android),默认情况是直连,会遇到链接失败的情况.
以下载Gradle为例, 默认会下载到C盘.简单的办法可以在外部工具下载然后放置到对应目录即可.
此法需要额外的人工干预, 需要一劳永逸的办法.
Gradle下载过程是由Gradlew.bat触发的, 根据Gradle文档,可以在gradle.properties文件设置http proxy,
参考页面:https://docs.gradle.org/current/userguide/build_environment.html#sec:accessing_the_web_via_a_proxy
UE4打包Android时在AutomationTool动态生成gradle.properties文件,可以考虑修改AutomationTool,添加设置代理的过程,
不过这是最后的选择了(尽可能的不要修改引擎代码, 不然后续更新太麻烦)
在AutomationTool生成gradle.properties位置有执行了UPL代码添加自定义内容,
因此只需要在UPL.xml中新建一段http proxy代码即可
<gradleProperties>
<insert>
#http proxy setup
systemProp.http.proxyHost=127.0.0.1
systemProp.http.proxyPort=10809
systemProp.http.nonProxyHosts=localhost
#https proxy setup
systemProp.https.proxyHost=127.0.0.1
systemProp.https.proxyPort=10809
systemProp.https.nonProxyHosts=localhost
</insert>
</gradleProperties>
关于UnrealPluginLanguage可以参考官方文档,或者UnrealPluginLanguage.cs文件
二 Apk Size
升级到4.26之后,引擎使用Gradle 6.1.1打包,结果Apk变大了很多,对比发现新版APK没有开启压缩,
这个跟新版安装策略有关,
参考:https://developer.android.com/studio/releases/gradle-plugin#extractNativeLibs
旧版的APK是压缩模式, 在安装时会把动态库解压到内部包名目录,因此有数据冗余;
新版则不再压缩,安装后也不许呀解压,减少数据冗余,
GooglePlay在上传后会自行压缩处理,优化下载体验,
但是国内没有这个待遇, 因此还是有必要采用传统方案, 同样是通过UPL来实现
<androidManifestUpdates>
<addAttribute tag="application" name="android:extractNativeLibs" value="true"/>
</androidManifestUpdates>