Unreal使用GooglePAD生成AAB包,并加在fast-follow资源
1.修改obbfilter,设置需要添加到obb的pak文件
2.修改项目设置,打AAB包
3.cook stage生成所有Paks文件
4.将部分pak文件拷贝到Intermediate/Android/arm64/gradle/assetpacks/fast-follow/包名/src/main/assets文件夹下,GooglePad插件的XML会自动将ast-follow/XXXX文件夹识别为fast-follow包,install-time不需要设置,默认会把obb打进去
5.打包完成后,安装AAB文件,使用GooglePad api读取Fast-follow资源
点击查看代码
int32 GetStatus(EGooglePADDownloadStatus& InDownResult)
{
int32 TmpDownloadStatus = -1;
EGooglePADErrorCode res3 = UGooglePADFunctionLibrary::GetDownloadState("SecPaks", TmpDownloadStatus);
InDownResult = UGooglePADFunctionLibrary::GetDownloadStatus(TmpDownloadStatus);
UE_LOG(GoogleAAB, Log, TEXT("chenghh download status: %d"), static_cast<int32>(InDownResult));
return TmpDownloadStatus;
}
void UHotUpdateManager::StartAssetDownload()
{
IPlatformFile& PlatformFile = FPlatformFileManager::Get().GetPlatformFile();
EGooglePADErrorCode res1 = UGooglePADFunctionLibrary::RequestInfo({"SecPaks"});
UE_LOG(GoogleAAB, Log, TEXT("RequestInfo result: %d"), static_cast<int32>(res1));
EGooglePADErrorCode res2 = UGooglePADFunctionLibrary::RequestDownload({"SecPaks"});
UE_LOG(GoogleAAB, Log, TEXT("RequestDownload result: %d"), static_cast<int32>(res2));
EGooglePADDownloadStatus GetStatusRes = EGooglePADDownloadStatus::AssetPack_UNKNOWN;
int32 StateId = GetStatus(GetStatusRes);
while (GetStatusRes != EGooglePADDownloadStatus::AssetPack_DOWNLOAD_COMPLETED)
{
UGooglePADFunctionLibrary::ReleaseDownloadState(StateId);
StateId = GetStatus(GetStatusRes);
}
int32 Location = -1;
EGooglePADErrorCode Code = UGooglePADFunctionLibrary::GetAssetPackLocation("SecPaks", Location);
UE_LOG(GoogleAAB, Log, TEXT("Asset pack location: %d"), Location);
FString AssetPath = UGooglePADFunctionLibrary::GetAssetsPath(Location);
if (!AssetPath.IsEmpty())
{
PlatformFile.DirectoryExists(*AssetPath);
UE_LOG(GoogleAAB, Log, TEXT("Asset pack Path: %s"), *AssetPath);
FString PakAssetPath = AssetPath + "/Paks";
if (PlatformFile.DirectoryExists(*PakAssetPath))
{
PlatformFile.FindFiles(AssetNames, *PakAssetPath, TEXT(".pak"));
........
}
}
UGooglePADFunctionLibrary::ReleaseAssetPackLocation(Location);
UGooglePADFunctionLibrary::ReleaseDownloadState(StateId);
}
Unreal使用GooglePAD生成AAB包,并加在fast-follow资源的更多相关文章
- 利用Maven把项目生成jar包供其他项目使用
每当搭建框架时,第一步就是为系统整理一个接一个的jar包.用多了就开始深思,如何把自己的项目也整成jar包,供他人使用呢? 近期一直在看徐晓斌所著:<Maven实战>.因自己学识不够,只是 ...
- storm学习之六-使用Maven 生成jar包多种方式
Maven可以使用mvn package指令对项目进行打包,如果使用java -jar xxx.jar执行运行jar文件,会出现"no main manifest attribute, in ...
- 在VS中自动生成NuGet包以及搭建自己的或单位内部的NuGet服务器
关于NuGet的介绍已经很多,可以参考下面的: NuGet学习笔记(1)--初识NuGet及快速安装使用 http://kb.cnblogs.com/page/143190/ NuGet学习笔记(2) ...
- 基于 Vue.js 之 iView UI 框架非工程化实践记要 使用 Newtonsoft.Json 操作 JSON 字符串 基于.net core实现项目自动编译、并生成nuget包 webpack + vue 在dev和production模式下的小小区别 这样入门asp.net core 之 静态文件 这样入门asp.net core,如何
基于 Vue.js 之 iView UI 框架非工程化实践记要 像我们平日里做惯了 Java 或者 .NET 这种后端程序员,对于前端的认识还常常停留在 jQuery 时代,包括其插件在需要时就引 ...
- IDEA修改jar包中class文件后重新生成jar包
一.背景 最新想要修改rebeyond大佬的冰蝎项目,特地去网上搜索如何修改jar包中的源码再替换回去的方法,但由于现在的一些文章写的太烂,导致走了很多弯路,因此写下这篇快速使用IDEA修改源码并替换 ...
- Unity生成AB包和加载AB包
unity生成AB包 生产AB包,编辑器脚本放在Editor文件夹下(切记) 如果你是PC包 BuildTarget.WebGL 后面要改成PC (BuildTarget.StandaloneWin ...
- android studio 生成aar包并在其他工程引用 (导入)aar包
1.aar包是Android studio下打包android工程中src.res.lib后生成的aar文件,aar包导入其他android studio 工程后,其他工程可以方便引用源码和资源文件 ...
- 利用Ant脚本生成war包的详细步骤
使用ant脚本前的准备 1.下载一个ant安装包.如:apache-ant-1.8.4-bin.zip.解压到E盘. 2.配置环境变量.新增ANT_HOME:E:\apache-ant-1.8.4:P ...
- Eclipse如何生成jar包
Eclipse如何生成jar包 图1 右击项目Properites,选择Android,选择Is Library,然后会编译生成jar包在bin目录下.
- Linux下编译java并生成jar包
下面是WordCount.java类 package com.ll; import java.io.IOException; import java.util.Iterator; import jav ...
随机推荐
- uniapp 使用z-paging 分页组件 写在头部插槽内的单选按钮无法点击
这个问题是因为组件层级太低 <z-paging ref="paging" v-model="dataList" @query="queryLis ...
- openfly:基于nginx的4层代理管理平台
简介 作者:京城郭少 基于nginx的4层代理管理平台 支持的功能: 被动健康检查 白名单 include导入文件 哈希 backup冗余互备 weight权重 注释 ...... 部署openfly ...
- 初学者必读:如何使用 Nuxt 中间件简化网站开发
title: 初学者必读:如何使用 Nuxt 中间件简化网站开发 date: 2024/6/24 updated: 2024/6/24 author: cmdragon excerpt: 本文概述了N ...
- 基于cifar数据集合成含开集、闭集噪声的数据集
前言 噪声标签学习下的一个任务是:训练集上存在开集噪声和闭集噪声:然后在测试集上对闭集样本进行分类. 训练集中被加入的开集样本,会被均匀得打上闭集样本的标签充当开集噪声:而闭集噪声的设置与一般的噪声标 ...
- 【Hive报错】在hue上执行自定义的hive函数报错 Error while compiling statement:FAILED:SemanticException [Error 10011]: Invalid function default.sqlServerdes
在 Hive客户端中使用自定义创建UDF函数时,报"ERROR 10011","invalid function"的异常: 在Hive上自定义创建了一个函数,在 ...
- Java类全路径冲突解决方法
1. 问题 今天在开发中遇到这样一个问题,A同事在导入了我们的实验SDK后,发现实验无法正常获取,查看日志发现了NoClassDefFoundError异常,无法加载的的类中逻辑比较简单,只依赖了另外 ...
- 韦东山freeRTOS系列教程之【第十章】软件定时器(software timer)
目录 系列教程总目录 概述 10.1 软件定时器的特性 10.2 软件定时器的上下文 10.2.1 守护任务 10.2.2 守护任务的调度 10.2.3 回调函数 10.3 软件定时器的函数 10.3 ...
- python3 中的装饰器总结
前言 python3 中有很多好用的装饰器,本编文章作为个人笔记使用,随时更新. 正文 1. @dataclass 内容来源:chatgpt3.5 @dataclass是一个装饰器,用于给类提供自动生 ...
- python3 podman库
前言 最近在使用 podman, 需要调用一些 podman的接口,podman官网提供的接口并不是很详尽,使用 unix.sock 的方式调用有一 些困难.后来测试 ai 工具时,其提供了一个比较好 ...
- Java21的虚拟线程Virtual Thread初体验
我们之前使用的是操作系统平台的线程,就称之为"系统线程"吧.虚拟线程是JDK维护的,原理跟WebFlux的底层实现差不多,都是工作线程分离. 要使用虚拟线程,需要使用JDK21以上 ...