最近接到一个Android手游汉化需求,研究了一下,特此记录
开发环境
AssetStudioGUI
该软件可解析,定位压缩后的Unity 资源。
下载: https://github.com/Perfare/AssetStudio
AssetBundleExtractor
用于资源替换
下载 https://www.lanzous.com/i3wcjxe
010Editor
游戏文本文件是二进制dat文件,需基于010Editor修改
下载 https://www.sweetscape.com/010editor/
定位资源文件
- 1.解包
apktool d apk文件名.apk
- 2.获取assets文件
apk文件名\assets\bin\Data
- 3.使用AssetStudioGUI打开Data文件夹
- 4.Asset List
Asset List 栏有所有资源
Filter Type可以筛选资源类型
- 5.定位文件
我当前分析的游戏,文本文件类型是TextAsset,需要加额外的中文字体包
然后 - 6.记录改文件PathID
- 7.右键文件名,选择显示原始资源文件
替换资源文件
-
1.用Unity Assets Bundle Extrator打开目标文件
-
2.根据pathID 和 文件名定位文件
-
3.导出
UABE支持多种方式导出- 可以直接导出为二进制(导出原始)
- 可以导出为UABE支持的转储格式(导出转储)
- 可以使用插件导出根据文件类型导出相应格式(建议这种)
-
4.导入(修改)
同导出类似,建议优先使用插件 -
5.修改资源额外说明
- 选择对应文件
- 选择插件
- 点击edit (或 Import,根据资源类型不同则不同)
- 选择load导入修改后的资源
- 点击ok
- 确定 (会生成新的资源文件,UABE不支持覆盖,所以要转存)
- 用beyondCompare对比新旧资源文件文件头(由于新生成的资源文件和原始资源文件可能unity版本支持的不同,要注意修改)
- 覆盖
重打包
- 1.重打包
apktool b 包名文件夹 -o 包名.apk
- 2.签名
jarsigner -keystore 密钥文件名.keystore -signedjar 输出的包名.apk 未签名的包名.apk 密钥文件名.keystore
(密钥生成https://blog.csdn.net/qq951127336/article/details/88524377)