安卓APK包体优化全攻略

目录

正常默认打包流程(以Android平台为例)

查看编辑器打包日志

压缩图片

压缩网格模型

压缩贴图

压缩音频文件

只打64位包

最终大小


正常默认打包流程(以Android平台为例)

  1. 准备工作:

    • 确保已安装最新版Unity Hub和Unity编辑器(建议2021 LTS或更新版本)
    • 安装Android Build Support模块
    • 配置JDK、Android SDK和NDK路径
  2. 基础打包步骤: a) 打开Unity项目 b) 点击菜单栏 File > Build Settings c) 在Platform列表中选择Android d) 保持默认设置不变:

    • Texture Compression: ASTC
    • Build App Bundle (Google Play) 不勾选
    • Development Build 不勾选
    • Autoconnect Profiler 不勾选
    • Script Debugging 不勾选 e) 点击Build按钮,选择保存路径(如桌面/temp.apk)
  3. 包体分析:

    • 默认打包完成后,APK文件通常会有以下结构:
      • base.apk(主程序包)
      • lib/armeabi-v7a(32位so库)
      • lib/arm64-v8a(64位so库)
      • assets(资源文件)
      • res(UI资源)
      • META-INF(签名信息)
  4. 典型包体大小参考:

    • 空项目(仅含Unity默认场景):15-20MB
    • 包含标准资源(如UGUI):25-35MB
    • 包含IL2CPP编译的脚本:额外增加3-5MB
  5. 查看包大小的正确方法:

    • 使用Analyze APK工具(Android Studio自带)
    • 或通过命令:aapt dump badging your_app.apk | grep "package: name="

注意:首次打包可能会较慢,因为需要生成Gradle项目并下载依赖库。建议在测试前先清空Library/Temp文件夹。

image

查看编辑器打包日志

image

搜索build report构建报告。构建报告我们应该看到构建中使用的所有资产根据其大小排序

image

压缩图片

让我们从压缩项目中的图像资源开始,这些资源通常是最消耗空间的资源。在大多数项目中,图像文件(如JPG、PNG、GIF等)往往占据了最大的存储空间。例如,在一个典型的网页项目中,可能包含多张高分辨率的背景图、产品展示图或用户头像等,这些文件的大小很容易就达到几百KB甚至几MB。

要压缩这些图像资源,首先需要识别出项目中体积较大的图像文件。具体操作步骤如下:

  1. 在项目资源管理器中,浏览图像文件所在的目录(通常是"images"、"assets"或"resources"文件夹)
  2. 查看文件大小,可以按文件大小排序(在Windows资源管理器中右键点击列标题选择"大小")
  3. 复制要压缩的图像的名称,比如这个"product-banner.jpg"(容量3.5MB)或"user-profile.png"(容量1.2MB)

常见的需要压缩的图像资源包括:

  • 网站横幅和背景图
  • 产品展示图片
  • 社交媒体分享图片
  • 用户上传的头像
  • 应用界面截图

在识别出大容量图像后,我们可以使用各种图像压缩工具来优化这些文件,如TinyPNG、ImageOptim或Photoshop的"存储为Web所用格式"功能。压缩后的图像通常能减少50%-80%的文件大小,而几乎不会影响视觉质量。

比如这个:

image

复制名称,搜索资产

image

要在此处启用压缩选项,我们可以为压缩做两件事

我们可以降低图像的分辨率,如果你觉得图像的分辨率太大,请选择较低的分辨率

image

可以尝试对图像应用压缩算法,不同平台的处理方式各有差异。建议多测试几种选项来找到最佳方案。

在Android平台上,个人更倾向于使用crunch压缩或astc压缩方式。

image

image

压缩后的应用配置会大幅减小图片尺寸。保存后请务必重新运行游戏,检查图片是否因过度压缩而模糊,如有问题可返回重新调整。

image

包体减少了一些。当然我这里图片素材比较少,尺寸也不大,可能你的项目比较大的话,可能效果就比较明显

压缩网格模型

如果你是3d游戏,还会有很多的网格模型

image

通用搜索找到网格模型

image

从下拉菜单中选择高、中或低压缩级别。注意压缩率越高,模型会变得越粗糙。请根据网格需求选择合适的压缩级别。

image

压缩贴图

image

为确保立方体贴图清晰不模糊,建议采用以下分辨率:

  • 移动平台或主机:256 或 512
  • PC 平台:1024 或 2048 为最佳选择

image

压缩音频文件

image

现在降低音频质量滑块,然后单击应用大多数音频没有最多50次压缩的任何明显变化,但请确保在压缩后测试这些音频

image

只打64位包

还可以只打64位包,能减少很多,32位设备已经非常非常少了,完全不必担心兼容性。

image

最终大小

image

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/95682.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/95682.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

嵌入式学习日记(28)进程、线程

回收资源空间子进程回收策略1、wait阻塞回收:一般情况下父进程专门负责回收2、waitpid非阻塞回收:搭配轮询方式回收3、不回收:子进程任务一致执行4、异步回收:子进程结束后通知父进程进行回收exec 函数族三种调用外部程序的方式#i…

测试用例的一些事项

为什么要写测试用例?写测试用例的原因是为了避免遗漏测试,我们要根据给的文档将逻辑都表达出来,不能因为简单而不写,日后版本更新就知道自己哪些测了哪些没测。在没有文档的时候测试用例该怎么写?大家可以考虑安全测试…

当Java遇见AI:飞算驱动的个人博客介绍智能生成风暴

一、飞算JavaAI:重新定义个人开发的"智能魔法棒" 1.1 开发者需求变革:从"技术门槛"到"创意优先"的时代 在数字化浪潮席卷全球的今天,个人品牌建设已成为技术从业者、创业者乃至学生的刚需——无论是程序员分享…

小程序排名优化:用户行为数据背后的提升密码

用户在小程序中的每一次点击、每一次停留、每一次分享,都在产生着有价值的数据。这些看似零散的用户行为数据,其实隐藏着提升小程序排名的密码。平台在判定小程序排名时,用户行为数据是重要的参考依据,因为它直接反映了小程序对用…

【DSP28335 入门教程】深度解析中断系统:三级架构与响应机制

大家好,欢迎来到我们的 DSP28335 深度解析系列。在之前的实战中,我们通过 while(1) 循环和延时函数实现了各种控制,这种方式被称为轮询。但轮询就像一个焦急的门卫,需要不停地去检查每个门口是否有人,既浪费精力又效率…

代码随想录二刷之“字符串”~GO

1.344. 反转字符串 - 力扣&#xff08;LeetCode&#xff09; func reverseString(s []byte) {left : 0right : len(s)-1for left < right{s[left],s[right] s[right],s[left]leftright--}return } 感悟&#xff1a;还是go语法熟练程度的问题&#xff0c;需要注意的是&am…

(!万字血书!)文本预处理:NLP 版 “给数据洗澡” 指南

好吧&#xff0c;我承认我是个标题党&#xff01;(不这样你会点进来享受这篇 通俗易懂 的好文章吗&#xff1f;) 正经标题&#xff1a;文本预处理全流程:从基础到实践 &#xff08;屏幕前的你&#xff0c;帅气低调有内涵&#xff0c;美丽大方很优雅… 所以&#xff0c;求…

最新chrome浏览器elasticsearch-head无法安装使用问题

chrome浏览器网址栏复制粘贴以下内容输入回车 chrome://flags/#allow-legacy-mv2-extensions 找到Allow legacy extension manifest versions项右侧选择Enabled启用&#xff0c;重启浏览器即可。

CSS aspect-ratio 属性

aspect-ratio 是 CSS 中用于控制元素宽高比的属性&#xff0c;通过一行代码即可实现响应式比例布局&#xff0c;无需复杂计算。它确保元素在不同屏幕尺寸下保持固定比例&#xff0c;提升响应式设计效率。一、基本语法与取值selector {aspect-ratio: <width> / <height…

FreeRTOS多核支持

个人博客&#xff1a;blogs.wurp.top 简介 1. 多核支持概述 在传统的单核系统中&#xff0c;FreeRTOS 通常运行在一个 CPU 核心上&#xff0c;负责任务调度、中断处理和资源管理。然而&#xff0c;在多核系统中&#xff0c;多个核心可以并行执行不同的任务或线程&#xff0c…

CUDA中的基本概念

要学习cuda的同学相信已经对其有一定的了解了&#xff0c;至少直到它是干什么的了。这篇文章主要是对cuda编程中的主要概念进行总结&#xff0c;有了一个大致的轮廓后就好入手了。 异构架构 异构架构即使用CPU和GPU共同进行计算。GPU不能作为一个独立的运行平台&#xff08;程序…

【LINUX网络】HTTP协议基本结构、搭建自己的HTTP简单服务器

目录 1. 初识HTTP 2. URL 2.1 基本结构 2.2 URL中的?与urldecode\urlencode 易混淆&#xff1a;URL和HTTP传输请求两者是什么关系&#xff1f; HTTP的宏观结构 3. DEMO CODE loop模块&#xff0c;核心逻辑 HttpServer 初代版本&#xff08;DEMO 0.0&#xff09; DEMO 1.0 DEMO…

Spring Boot 静态函数无法自动注入 Bean?深入解析与解决方案

在 Spring Boot 项目中&#xff0c;开发者常遇到一个典型问题&#xff1a;在静态方法或静态变量中尝试使用 Autowired 注入 Bean 时&#xff0c;始终得到 null 值。本文将深入剖析这一问题的根源&#xff0c;并提供多种可靠解决方案。问题重现&#xff1a;为什么注入失败&#…

存储过程作为系统逻辑核心的架构思考 —— 以 SaaS 系统为例

在企业级系统尤其是 SaaS 架构中&#xff0c;技术选型一旦确定&#xff0c;就意味着底层数据库类型基本不会轻易更换。既然如此&#xff0c;我们可以更大胆地将数据库能力本身纳入系统设计的核心&#xff0c;而不仅仅把它当成一个被动的存储引擎。存储过程&#xff08;Stored P…

Ubuntu20.04下Remmina的VNC密码忘记后重置

你遇到的错误&#xff1a; ** error creating password: /home/ysc/.vnc/passwd storepasswd: No such file or directory说明&#xff1a;x11vnc -storepasswd 无法创建密码文件&#xff0c;因为 .vnc 目录不存在。 虽然你可能以为路径是对的&#xff0c;但系统找不到 /home/y…

从“存得对”到“存得准”:MySQL 数据类型与约束全景指南

目录 一、为什么需要数据类型与约束&#xff1f; 二、MySQL 数据类型全览 1. 数值类型&#xff1a;精确 VS 近似 2. 日期时间类型&#xff1a;别让“0000-00-00”出现 3. 字符串类型&#xff1a;CHAR、VARCHAR、TEXT、BLOB 4. JSON 类型&#xff1a;文档与关系共舞 5. 空…

Effective C++ 条款42:了解 typename 的双重含义

Effective C 条款42&#xff1a;了解typename的双重含义 核心思想&#xff1a;在模板声明中&#xff0c;typename和class可互换使用&#xff0c;但在模板内部&#xff0c;typename必须用于显式指明嵌套从属类型名称&#xff08;nested dependent type name&#xff09;&#xf…

ENCOPIM, S.L. 参展 AUTO TECH China 2025 广州国际汽车技术展览会

ENCOPIM, S.L. 参展 AUTO TECH China 2025 广州国际汽车技术展览会2025年11月21-24日中国进出口商品交易会展馆D区(广州)AUTO TECH China 2025同期&#xff1a;第二十三届广州车展即将盛大开幕展商推荐ENCOPIM, S.L.展位号&#xff1a;3916企业简介&#xff1a;ENCOPIM, S.L.于…

30 HTB Soccer 机器 - 容易

主要知识点 第一阶段&#xff1a;侦查 nmap nmap快速扫描&#xff1a; oxdfhacky$ nmap -p- --min-rate 10000 10.10.11.194 Starting Nmap 7.80 ( https://nmap.org ) at 2023-06-04 13:32 EDT Nmap scan report for 10.10.11.194 Host is up (0.093s latency). Not shown:…

阿里云机器翻译接口SDK-RAM权限配置

用户授权翻译权限在数字化时代&#xff0c;短信作为企业与用户沟通的重要桥梁&#xff0c;其高效、可靠的送达直接影响业务转化与用户体验。SDK&#xff08;软件开发工具包&#xff09;的出现极大简化了短信功能的集成过程&#xff0c;让开发者能够快速在应用中嵌入短信验证、通…