Releases: ccss0101/uabea-android
Release list
v2.0.0 - 重写为竖屏文字翻译工具
v1.6.0 - 3D预览+横屏+官方风格界面
新增功能
3D Mesh 预览(软件渲染)
- Android 不依赖 OpenGL,用 Matrix4x4 MVP + WriteableBitmap 软件光栅化
- 拖拽旋转(azimuth/polar 球坐标)
- 按钮缩放 (+/-)
- 线框/填充切换
- 重置视角
- 兰伯特光照(法线 · 光源方向)
- 三角形数超 6 万自动降采样避免卡顿
- 复用 UABEA.Core 的 MeshObj.FromBaseField(支持 resS 流式数据)
横屏锁定
- MainActivity 设置 ScreenOrientation = Landscape
- 编辑器界面更适合横屏使用
官方风格多列资产列表
- 资产列表改为多列:Name | Type | PathID | Size
- 加表头行(VSCode 暗色风格)
- VSCode 配色:Type=蓝、PathID=青、Size=灰
- AssetListItem 加 TypeName 字段
v1.5.0 - 完善核心编辑功能
新增功能
6 个新 overlay View
- 查看数据(DataView): 资产类型树浏览
- 编辑数据(EditDataView): AvaloniaEdit + utxt 语法高亮编辑器
- 新增资产(AddAssetView): 按 PathId/ClassId 新增
- 文件信息(AssetInfoView): Header/TypeTree/Deps 三标签页
- 场景层级(HierarchyView): GameObject 树
- Dump 批量导入(ImportDumpView): Text/Json 双格式
MainView 集成
- 单项 Raw 导入(资产级)
- .split 文件自动合并
- BtnInfo 改为 AssetInfoView overlay
编译
- 0 Error, 159 Warning
- APK: 71M 已签名
v1.4.0 - Android 批量导入与导航搜索
新功能
批量导入
- bundle 级批量导入:选目录递归导入,同名替换,自动判断序列化
- 资产级 raw 批量导入:ImportBatchView overlay,按 -{File}-{PathID}.dat 后缀匹配
导航与搜索
- 通配符搜索(支持 *)+ 继续搜索(F3 语义)
- PathID 跳转
- 按类型过滤
- assetList 改多选,接入 AssetWorkspace
- 仅独立 .assets 模式启用
基于 main commit 07bce6c 构建。
v1.3.0 - 全面内置文件选择器 + 资产搜索
重大更新
彻底移除所有系统 StorageProvider 调用,全部改用内置文件选择器,从根本上解决系统文件选择器导致应用掉后台被回收的问题。
内置文件选择器增强
- 新增三种模式:
- Open:选择已存在文件(打开 / 导入 / 替换贴图)
- Save:选择目录并输入文件名(导出 / 保存 / 压缩 / Dump)
- Directory:选择目录(批量导出)
- Save 模式支持文件名输入、点击已有文件自动填名
所有文件操作改用内置选择器
| 操作 | 之前 | 现在 |
|---|---|---|
| 打开 | ✅ 已内置 | 内置 Open |
| 导入 | 系统选择器 | 内置 Open |
| 导出单项 | 系统选择器 | 内置 Save |
| 导出全部 | 系统选择器 | 内置 Directory |
| 保存 Bundle | 系统选择器 | 内置 Save |
| 压缩保存 | 系统选择器 | 内置 Save |
| Dump | 系统选择器 | 内置 Save |
| 替换贴图 | 系统选择器 | 内置 Open |
| 保存文本 | 系统选择器 | 原目录 _modified 后缀 |
新功能:资产列表搜索过滤
- 资产列表上方新增搜索框
- 输入实时过滤(不区分大小写)
- 方便在大量资产中快速定位
架构改进
- 新增 PendingFileAction 枚举统一调度文件选择器回调
- ShowFileBrowser 辅助方法统一初始化与事件绑定
安装
下载 com.uabea.app-Signed.apk 安装即可。
Android 11+ 需在系统设置授予「所有文件访问权限」。
v1.2.0 - 内置文件选择器与设置中文化
本次更新
新功能
- 内置文件选择系统:直接通过 System.IO 遍历存储目录,不调用系统 StorageProvider。Android 上系统文件选择器是独立 Activity,切换时 UABEA 进程容易被系统杀掉(掉后台)。内置选择器全程在应用进程内完成。
- 支持目录导航(上级 / 主页 / 刷新)
- 支持扩展名过滤(bundle / assets / dat / unity3d / ab)
- 双击进入目录或选择文件
- 默认起始目录优先级:/storage/emulated/0 → /sdcard → /storage → 用户目录
改进
- 设置面板中文化:ConfigurationManager 全部 8 个配置项标题与描述改为中文
- 主题类型 / 优先使用 Managed 而非 IL2CPP / 使用 Cpp2Il
- 列表文件名长度限制 / 导出文件名长度限制
- 导入导出仅使用纯文件名 / 加载容器路径 / 完全裁剪精灵图
- 打开按钮:改用内置文件选择器(替换系统文件选择器)
之前已适配的功能
- P2-C 配置系统(反射配置项 + 500ms 防抖保存)
- P3-A 主题系统(Auto/Light/Dark + 实时切换)
- 设置面板(overlay 模式适配 Android 单视图)
安装
下载 com.uabea.app-Signed.apk 安装即可。
Android 11+ 需在系统设置授予「所有文件访问权限」。
UABEA Android v1.1.0
UABEA Android v1.1.0
将 P0-P3 改造成果适配到 Android 应用,Android 端现已具备配置面板与主题切换能力。
本次更新(Android 适配)
配置系统(P2-C 适配)
- App 启动时按 ConfigurationManager 应用主题,订阅 ThemeType 变更
- MainView 新增「设置」按钮与弹出层
- 反射加载所有配置项(主题类型、Cpp2Il、文件名长度限制等)
- 布尔项用 CheckBox、整数项用 NumericUpDown、枚举项用 ComboBox
- 关闭时立即保存(防抖 500ms + 即时保存双保险)
主题系统(P3-A 适配)
- App.axaml 注册 ThemeDictionaries(SimpleLight/SimpleDark)
- 与桌面端共享 UABEAvalonia/Themes/Accents 主题资源字典
- 用户在设置面板切换 ThemeType 后立即生效(Auto/Light/Dark)
安装
下载 UABEA-Android-v1.1.0.apk,在 Android 7.0+ 设备上安装(需允许未知来源)。
首次打开后点击「设置」按钮即可看到完整配置面板,切换主题类型后 UI 会立即刷新。
与 v1.0.0 的差异
v1.0.0 的 P0-P3 改造仅作用于桌面端,Android 端未受益。v1.1.0 将配置系统与主题系统真正落地到 Android 应用。
UABEA Android v1.0.0
UABEA Android v1.0.0
基于 UABEA 的 Unity Asset Bundle Android 端读写工具。
本次更新内容(P0-P3 改造)
P0 - 核心架构下沉
- 创建 UABEA.Core 平台无关核心库
- 迁移 Workspace/Logic/Config/Utils/Mesh 模块
- 引入 CommunityToolkit.Mvvm + DI 容器
- 新增插件系统(PluginLoadContext + AssemblyDependencyResolver)
- 跨 ViewModel 消息通信(WeakReferenceMessenger)
P1 - Docking 多文档界面
- 集成 Dock.Avalonia 11.0.0.7
- 三栏 Dock 布局(WorkspaceExplorer + Document + Inspector/Previewer)
- ViewLocator 自动 ViewModel->View 映射
- MainDockFactory + DockMainWindow
P2 - 功能完善
- P2-A: AssetDocumentViewModel(双击资产打开文档)
- P2-B: Hierarchy 异步增量加载(Task.Run + DispatcherTimer + CancellationToken)
- P2-C: 配置系统 attribute 驱动 + 防抖保存
- ConfigurationItem attribute(ConfigTitle/ConfigDesc/ConfigRange)
- DebounceUtils 500ms 自动保存
- SettingsView 反射生成 UI(Bool/Int/Enum)
- System.Text.Json + JsonStringEnumConverter
P3 - 主题与 NativeLibs
- P3-A: 主题系统完整化
- SimpleLight/SimpleDark.axaml 主题资源字典
- ThemeDictionaries 自动随 RequestedThemeVariant 切换
- BundleItemColorConverter/AssetDataTreeView 改用 TryGetResource
- P3-B: NativeLibs 升级准备
- 新增 textureencoder + cuttlefish native libs
- 与旧 TexToolWrap 并存过渡
安装
下载 UABEA-Android-v1.0.0.apk,在 Android 7.0+ 设备上安装。
需授予存储访问权限以读写 Unity bundle 文件。
UABEA Android v0.9
UABEA Android v0.9 - 贴图与文字预览/替换
Unity Assets Bundle Extractor Avalonia 移植到 Android (net8.0-android)。
本次 v0.9 新增功能(基于对 UABEA 原插件代码的研究实现):
贴图 Texture2D (classID 28)
- 预览:使用 TextureFile.DecodeManaged(纯托管,无需原生库)解码为 BGRA 字节,再生成 WriteableBitmap (Bgra8888 / Unpremul)
- 替换:托管编码器支持 RGBA32 / BGRA32 / ARGB32 / RGB24 / Alpha8 / R8 格式(无需原生压缩库),改 base field 后 WriteToByteArray + AssetsReplacerFromMemory
- 支持内联 pictureData 与 resS 流式数据
文字 TextAsset (classID 49)
- 预览:读取 m_Script ByteArray,UTF-8 解码显示
- 替换:设置 m_Script ByteArray 后序列化保存
Bundle 内资产替换流程:改 base field -> file.Write 写 MemoryStream -> AddOrReplaceFile 更新 bundle 条目。
安装:直接安装 com.uabea.app-Signed.apk,需要 Android 7.0+ (API 24),arm64-v8a 架构。
首次打开需授予存储权限(Android 11+ 会引导到 MANAGE_EXTERNAL_STORAGE 设置页)。
基于 nesrak1/UABEA (MIT License)。
UABEA Android v0.8 - 完整功能 (导入/删除/保存/压缩)
v0.8 完整功能版
新增功能
导入(插件替换)
- 选择外部文件导入并替换 Bundle 内的文件
- 弹出层询问是否为序列化 assets 文件
- 用
BundleWorkspace.AddOrReplaceFile替换原文件
删除
- 从 Bundle 工作区移除选中的文件
- 调用
BundleWorkspace.RemovedFiles+BundleReplacer
保存
SaveFilePicker选择保存位置- 用
AssetBundleFile.Write+BundleWorkspace.GetReplacers()写回 - Android 上先写缓存再复制到 StorageProvider 流
压缩
- 弹出层选择 LZ4 / LZMA 压缩方式
- 后台线程执行
AssetBundleFile.Pack(避免 UI 卡顿) - LZ4:速度快体积大 / LZMA:速度慢体积小
完整功能列表
| 功能 | 说明 |
|---|---|
| 打开 | AssetBundle + .assets 文件 |
| 导出 | 单个资产到 StorageProvider |
| 导出全部 | 批量导出 Bundle 内所有文件 |
| 导入 | 替换 Bundle 内文件(插件替换) |
| 删除 | 从 Bundle 移除文件 |
| 重命名 | 内联弹出层重命名 |
| 保存 | 写回 Bundle(含所有修改) |
| 压缩 | LZ4/LZMA 压缩保存 |
| Info | 显示资产元信息 |
| Dump | 类型树 dump 到文本 |
| 关闭 | 卸载所有文件 |
UI 改进
- 4 个文件操作按钮 + 6 个单项操作按钮 + 导出全部
- 3 个弹出层(重命名/导入类型/压缩方式)
- 进度遮罩(保存/压缩时显示)
- 状态栏显示未保存修改标记
*
技术细节
_changesUnsaved跟踪修改状态,保存按钮按需启用- 压缩在
Task.Run后台线程执行 - Android StorageProvider 流通过缓存中转写入