Android发布流程
Unity2019及以上
发布Android预备工作
通过UnityHub安装Android平台相干工具
1.Android构建支持
2.Android SDK(安卓软件开发工具包)、NDKTools(当地开发工具包)
3.OpenJDK(Java开发工具包)
留意:Unity支持Android 5.1及以上版本
Unity2019以下版本
1.Android构建支持工具安装(Unity提供下载,安装时需要关闭Unity)
2.JDK(Java开发工具包)(网络下载) JDK 必须是版本 8
https://www.oracle.com/java/technologies/downloads/#jdk18-windows
3.NDK (当地开发工具包)(网络下载)NDK 版本必须是 Unity2018——r16b, Unity2017——r13d
留意:NDK是可选的工具,如果之后要发il2cpp的应用步伐,那么NDK是必须的,如果是Mono可以倒霉用它
https://blog.csdn.net/momo0853/article/details/73898066
https://developer.android.google.cn/ndk/downloads/#lts-downloads
4.Android SDK(安卓软件开发工具包)(网络下载或通过AndroidStudio下载)
发起通过AndroidStudio下载
https://developer.android.com/studio
安装AndroidStudio后 通过它来安装AndroidSDK
5.Java情况变量设置
我的电脑——>体系属性——>查找——>体系情况变量——>情况变量
5-1:JAVA_HOME: 变量值为JDK在你电脑上的安装路径
安装好后可以利用%JAVA_HOME%作为JDK安装目次的同一引用路径
5-2 ath: 编辑Path属性,在原变量后追加 %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin
5-3:CLASSPATH: 变量值为 .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar
发布前必修改的设置
在File —— Build Setting —— Player Setting中修改
1.公司名
2.游戏项目名
3.版本号
4.默认图标
5.Other Settings —— Package Name(必须修改设置)
6.Other Settings —— Minimum APILevel
Unity发布参数
Build Settings 参数

Texture Compression
纹理压缩
设置发布后的纹理压缩格式

**Use Player Settings: 利用在播放器设置中设置的纹理压缩格式
ETC:利用ETC格式
ETC2:利用ETC2格式
ASTC:利用ASTC格式
DXT:利用DXT格式
PVRTC:利用PVRTC格式
相识格式具体信息:https://docs.unity.cn/cn/2021.3/Manual/class-TextureImporterOverride.html#android
留意:对于安卓ETC2是常用的压缩格式,支持透明通道。但是对于老装备不支持ETC2,可以利用ETC。
我们可以同一设置为ETC2,在下方的ETC2 fallback中设置,如果不支持ETC2,利用哪种压缩方式**
ETC2 fallback
ETC2回退
当Unity用于不支持ETC2的安卓装备时的RGBA纹理格式

32-bit:32位
以全分辨率存储RGBA纹理,利用32位存储每个像素,质量最高,内存占用最多
16-bit:16位
以全分辨率存储RGBA纹理,利用16位存储每个像素,质量较低,纹理大概会丢失有代价的颜色信息,内存占用相对较少
32-bit, half resolution:32位,半分辨率
以半分辨率存储RGBA纹理,利用32位存储每个像素,由于是半分辨率,纹理会变得暗昧,内存占用较小
留意:如果利用的不是ETC2压缩,大多数压缩格式,利用32-bit备用
取决于GPU支持什么
Export Project
导出项目
勾选后,不会发布成apk,而是会将Unity项目导出为可以导入Android Studio的Gradle项目
Symlink Sources
符号链接源
当勾选Exprot Project时,才气勾选此选项。
决定是否在Unity和导出的Gradle项目之间共享Java和Kotlin源文件
启用后,对于测试和迭代Java和Kotlin代码很有用,如果你重新导出Unity项目,你在导出的项目对之前的Java和Kotlin源文件的任何更改都会保存
如果你想导出后举行二次开发,发起勾选此选项
Build App Bundle (Google Play)
构建应用捆绑包
是否将应用步伐作为Android应用捆绑包(AAB)
启用,发布出去是一个AAB(可以共同安卓举行二次开发)
禁用,发布出去是一个APK(直接就是一个可安装的应用步伐)
Create symbols.zip
创建 符号压缩文件
符号文件可以资助我们调试应用步伐
Unity会生成一个包罗本机Unity库的符号文件的包
它包罗一个表,将运动内存所在转换为我们可以利用的信息,比如方法名,我们可以利用符号包来检测调试应用步伐的信息**

Disabled:不生成
Public:Unity生成一个公共符号为步伐打包
公共符号文件包罗将函数所在剖析为人类可读字符串的信息,包小于调试符号的包
Debugging:Unity生成一个调试符号为步伐打包
包罗完整的调试信息和符号表,可以用来剖析堆栈、将本机调试器附加到应用步伐调试代码
Run Device
运行的装备
指定在哪个附加装备上测试生成
如果你毗连了新装备或在列表中没有看到毗连的装备
点击刷新Refresh
Build to Device
构建到装备
不创建完整的构建,而是将发生修改的单个文件直接摆设到装备上
相对来说更加快速,方便调试
Development Build
开发模式构建
是否包罗脚本调试符号和性能分析器到你的项目中,如果你想要调试应用步伐,请选择该选项
Autoconnect Profiler
自动毗连分析器
是否自动将分析器毗连到生成的应用步伐
Deep Profiling
深度剖析
是否启用深度剖析在分析器中,可以让分析器能够检测应用步伐中每个函数调用,从而返回更加具体的分析数据
留意:该选项会低落脚本的实行速率
Script Debugging
是否允许调试应用步伐的脚本文件

Wait For Managed Debugger
是否等候托管调试器
步伐在运行脚本代码之前是否等候调试器毗连
Compression Method
压缩方法
Unity在构建时压缩项目中数据的方式

Default:默认利用ZIP,压缩效果略好于LZ4和LZ4HC,但是数据解压速率较慢
LZ4:利用LZ4,这时一种快速压缩格式,相对ZIP可以显着进步Unity应用步伐的加载时间
LZ4HC:LZ4的高压缩版本,构建速率较慢,但是对于发布版本会产生更好的效果,相对ZIP可以显着进步应用步伐加载时间
Max Texture Size
最大的纹理大小
用于当地开发时导入纹理的最大尺寸
减小最大纹理大小可以加快资源导入和平台切换
Texture Compression
纹理压缩
选择下面两个选项,可以加快资源导入和平台切换
No Override:利用默认设置
Force Fast Compressor:强制快速压缩
Force Uncompressed:强制解压缩
Player Settings相干
Player 根本设置

Icon 图标设置
设置在装备上显示的应用图标
Adaptive:运行在Android8.0及以上版本上的装备显示的应用图标
Round:运行在Android7.1及以上版本上的装备显示的应用图标
Legacy icons:运行在Android7.1以下版本上的装备显示的应用图标
Resolution and Presentation 分辨率和演示设置
Fullscreen Mode
全屏模式
Fullscreen Window:
全屏窗口(导航栏始终处于埋伏状态)
会缩放应用步伐内容,为了匹配纵横比,大概会有黑边
Windowed:
窗口模式,窗口大小取决于应用步伐分辨率
Resizable Window
课调解大小的窗口
设置用户是否可以调解应用步伐窗口的大小

此设置可以安卓和平板电脑上的应用步伐中启用多窗口功能
详情:https://developer.android.com/guide/topics/ui/multi-window#java
Hide Navigation Bar
是否埋伏顶部显示的导航栏
Render outside safe area
是否应利用全部可用的屏幕控件举行渲染
包罗留海地区
Optimized frame Pacing
是否应匀称分布帧以减小帧速率的方差,启用后体验更流程
Resolution Scaling分辨率缩放
Resolution Scaling Mode
分辨率缩放模式
Disabled:禁用
不应用分辨率缩放,应用步伐出现为装备的本机屏幕分辨率
Fixed DPI:利用API应用分辨率缩放,利用此选项可优化性能和电池寿命
Target DPI:如果装备的本机屏幕DPI高于设置的值,Unity将低落应用步伐的分辨率以匹配此设置
盘算方式:
Min(Target DPI * Factor / Screen DPI,1)
此中Factor是在Quality质量设置中设置的 Resolution Scaling Fixed DPI Factor参数
Reset resolution on window resize:
当本机窗口大小更改时,是否将屏幕分辨率设置为新的本机窗口大小
如果分辨率缩放模式是Fixed DPI,则将重新盘算分辨率
Blit Type:
光高范例
是否利用Blit将最终图像呈如今屏幕上
Always:总是让Unity渲染到屏幕外的缓冲区,然后利用Blit将缓冲区的内容复制到装备的帧缓冲区(这和大部门装备兼容,但比不消Blit慢)
Nerver:Unity将渲染到装备操纵体系提供的帧缓冲区,如果失败,会有告诫信息打印到日记当中。通常比利用Blit块,但是不兼容全部装备
Auto:Unity会渲染到装备操纵体系提供的帧缓冲区,如果失败,会打印到日记中,并利用Blit将最终图像出现到屏幕上
Supported Aspect Ratio:支持的纵横比
Orientation:屏幕取向
Aspect Ratio Mode:
指定应用步伐支持的最大纵横比。
如果装备的纵横比大于此纵横比,Unity会将此纵横比用于应用步伐,并添加黑条,使应用步伐不会拉伸
Legacy Wide Screen(1.86):支持android的传统宽屏宽高比
Native Aspect Ratio:支持Android本机宽高比的宽高比
Custom:自界说纵横比
选择自界说纵横比时可以本身设置
Default Orientation:
默认取向
指定应用步伐利用的屏幕方向(横屏、竖屏设置)
Portrait:竖屏(应用步伐窗口底部和屏幕底部对齐)
Portrait Upside Down:竖屏倒置(应用步伐窗口底部和屏幕顶部对齐)
Landscape Right:右横屏(应用步伐窗口右侧和屏幕底部对齐)
Landscape Left:左横屏(应用步伐窗口左侧和屏幕底部对齐)
Auto Rotation:自动旋转,可以旋转到你允许的恣意方向,在下方勾选即可
Use 32-bit Display Buffer:
显示缓冲区是否保存32位颜色值而不是16位颜色值。
如果你在后期处置惩罚效果中看到了条带效果大概需要Alpha值,请启用此设置,某些后期处置惩罚效果需要开别的,由于他们以显示缓冲区雷同的格式创建渲染纹理
Disable Depth and Stencil:
是否禁用深度和模板缓冲区
Render Over Native UI:
在本机UI上出现
设置是否在Android大概IOS的本机UI上举行渲染
如果要该设置生效,需要把相机的清楚标志设置为利用Alpha值低于1的纯色
Show Loading Indicator:
显示加载指示器
指定加载指示器是否显示以及怎样显示
Don’t Show:不显示加载指示条
Large:显示大的加载指示条
Inversed Large:显示大的加载指示条,并带有翻转颜色
Small:显示小的加载指示条
Inversed Small:显示小的加载指示条,并带有翻转颜色
Splash Image:
启动图像设置
Virtual Reality Splash Image:
假造实际的初始屏幕设置
Show Splash Screen:
是否显示启动图像(收费版本才气修改,免费版本不能改)
Preview:
预览
Splash Style:
启动风格
Dark on Light: 暗到亮
Light on Dark: 亮到暗
Animation:
启动图像动画效果
Static:静态不动的
Dolly:由小变大
Custom:自界说
Draw Mode:绘制模式
Unity Logo Below:Unity Logo显示在前
All Sequential:全部按顺序
Logos:可以本身添加Logo图片按顺序显示
BackGround:背景相干
Overlay Opacity:
覆盖不透明度
Background Color:
背景颜色
Blur Background Image:
暗昧背景图像
Background Image:
背景图像
Alternate Portrait Image:
备选图像
Static Splash Image:
静态启动图像
Scaling:
缩放比例
Center:
居中(仅缩小):除非图像太大,否则以原始大小绘制图像,Unity会缩小图像
Scale to fit:
缩放以顺应(添补),缩放图像,使较长尺寸完全适合屏幕大小,以玄色添补两侧空缺地区
Scale to fit:
缩放以顺应(裁剪),缩放图像,使较短的尺寸完全适合屏幕大小,将图像裁剪为较长的维度
OtherSetting相干
Rendering渲染设置
Unity步伐员必相识的图形步伐接口
OpenGL(Open Graphics Library)
中文翻译过来是开放图形库,它界说了一个跨平台、跨语言的编程接口规格的专业图形步伐接口,可以用于3D、2D图形渲染,是一个功能强大、调用方便的底层图形库。由于它跨平台、跨语言、出现时间早,因此它的应用极其广泛!
OpenGL ES(OpenGL for Embedded Systems)
中文翻译过来是用于嵌入式体系的开放图形库,它是OpenGL的子级,重要针对手机、游戏主机等嵌入式装备而计划,免授权费、跨平台、功能完善。
GLES2.0、GLES3.0 指的就是OpenGL ES这套尺度,他们也是Android和IOS手机上常用的图形处置惩罚尺度。
Unity在移动平台举行图形渲染处置惩罚时,就包罗了OpenGL ES方案
Vulkan
“下一代”开放的图形显示API,是与DX12能够对抗的GPU API尺度。它有一套最新的图形加速API接口,目的是提供更机动和丰富的底层操纵接口,以更换OpenGL 和 OpenGL ES接口,可****以把Vulkan看做是OpenGL的升级版,目前新版本的Unity支持利用Vulkan方案。
Directx(Direct eXtension)
中文翻译过来是直接拓展,简称DX。它是由微软公司创建的多媒体编程接口。它不跨平台,只针对微软的相干产物,被广泛利用于Windows操纵体系、xBox游戏主机的图形应用步伐开发中。
此中的D3D算是DX一部门,是对标OpenGL的图形步伐接口
WebGL(Web Graphics Library)
中文翻译过来是网页图形库,它是针对Web端(*网页*)的3D画图协议,这个尺度允许把JavaScript和OpenGL ES 2.0结合在一起,网页开发职员可以借助体系显卡在欣赏器里流通的展示3D场景和模子,可以在网页里举行3D图形开发。
Metal
中文翻译过来是金属,它是苹果公司为游戏开发者提供的图形技能,该技能能够为3D图像进步10倍渲染性能,但是它不支持跨平台,重要针对IOS、macOS苹果自家的操纵体系,只有苹果手机、电脑能够利用。
Windows电脑:DX、OpenGL、Vulkan
苹果电脑:Metal、OpenGL、Vulkan
安卓手机:OpenGL ES、Vulkan
苹果手机:OpenGL ES、Vulkan、Metal
网站网页:Web GL
如果不通过游戏引擎,我们想要在这些平台上开发游戏,那么就必须要针对差别平台学习对应的图形步伐接口相干的知识。你会发现OpenGL的身影在各主流平台中都占据一席之地,由于它出现早、跨平台、跨语言,以是也是为什么在学习盘算机图形学时,OpenGL是必学的内容。
我们如今利用游戏引擎开发游戏,在绝大多数情况下,不需要直接和图形步伐接口打交道,但是我们在Unity当中发布应用步伐时,常常会看到和他们相干的一些设置,必须要相识了他们的根本概念,才气清楚我们在设置什么。
这些图形步伐接口另有差别的版本,比如DX10、DX11、DX12,比如OpenGL ES 2.0、OpenGL ES 3.0。差别的装备、差别的操纵体系他们支持的版本也是差别的。比如我们举行手机游戏开发时,我们**可以去查询主流移动装备支持的图形步伐接口的版本,来决定在发布时,对于图形步伐接口版本的兼容选择****。这样才气保证我们发布的应用步伐能够支持更多的移动装备。
Color Space:色彩空间
可以在此切换Unity中用于渲染的色彩空间
Gamman(伽马)和 Linear(线性)
区别:
纹理倾向于保存在伽马颜色空间中,而着色器渴望利用线性颜色空间
因此,在着色器中对纹理举行采样时,基于伽马的值会导致禁绝确的效果
我们可以选择线性色彩空间,然后通过纹理中的 sRGB选项决定是用伽马照旧线性,勾选sRGB是伽马,取消勾选是线性
怎样选择:
线性渲染的效果相对较好一些
但并不是全部平台都支持线性渲染
支持的平台为:
Android、IOS、WebGL、Windows、Mac OS X 、Linux
当装备不支持线性渲染时,不会退回到伽马控件,而是自动退出
在 Android 上,线性渲染至少需要 OpenGL ES 3.0 图形 API 和 Android 4.3
在 iOS 上,线性渲染需要 Metal 图形 API
在 WebGL 上,线性渲染至少需要 WebGL 2.0 图形 API
确定你的应用步伐运行的主流装备是否支持,如果支持则选择线性,不支持选择伽马

https://docs.unity.cn/cn/2021.3/Manual/LinearLighting.html
什么是Vulkan?
是一个跨平台的2D和3D画图应用步伐接口
在2015年游戏开发者大会(GDC)上发表
是OpenGL的下一代版本,旨在提供更低的CPU开销与更直接的GPU控制
Auto Graphics API:自动图形接口(发起选择自动)
勾选:Unity会自动尝试利用对应图形API接口举行图形处置惩罚
默认利用Vulkan,如果装备不支持Vulkan,Unity会退到GLES3.2、GLES3.1或GLES3.0
不勾选:可以列表中本身对利用的图形API接口举行排序,设置利用优先级
下方的副选项ES3.1、ES3.1+AEP、ES3.2是三个额外的用于设置最低OpenGL ES 3.X次要版本的
留意:只有当GLES2不在列表中是,Unity才会讲额外的三个选项要求添加到Android应用清单中,在这种情况下,如果你的应用发布到GooglePlay应用市肆,它将不会显示在不受支持的装备上
Color Gamut: 色域
可以添加或删除 Android 平台用于渲染的色域
色域界说了可用于给定装备(如监视器或屏幕)的大概颜色范围。sRGB 色域是默认(也是必须的)色域。当定位具有宽色域显示的装备时,请利用 DisplayP3 来利用完整的显示功能。
一样寻常的手机利用sRGB即可,如果是PC主机游戏,可以思量添加DisplayP3
Multithreaded Rendering:多线程渲染
启用此选项可将图形 API 调用从 Unity 的主线程移动到单独的工作线程。这有助于进步主线程上 CPU 利用率较高的应用步伐的性能。
Static Batching:静态批处置惩罚
会将静态物体归并处置惩罚DC,提升性能
Dynamic Batching:动态批处置惩罚
可以动态的归并DC,进步性能
当可编程渲染管线(SPR)处于运动状态时,也就是启用了URP大概HDRP时,动态批处置惩罚不起作用
在利用FairyGUI时,就需要开启它,FairyGUI的DC将得到优化
Compute Skinning:盘算蒙皮
启用此选项可启用 DX11/ES3 GPU 盘算蒙皮,从而开释 CPU 资源
图形接口的版本要求较高,PC上DX11、移动装备ES3
Graphics Jobs(Experimental):图形作业
启用后,Unity将渲染循环的图形任务移到别的CPU内核上运行的工作线程,可以减少在主线程上花费的时间
Texture compression format:纹理压缩格式
可以在ASTC、ETC2、ETC之间举行选择
Normal Map Encoding:法线舆图编码
选择 XYZ 或 DXT5nm 样式以设置法线映射编码。这会影响用于法线贴图的编码方案和压缩格式。DXT5nm 样式的法线贴图质量更高,但在着色器中解码成本更高
Lightmap Encoding:光照贴图编码
选择“正常质量”或“高质量”以设置光照贴图编码。此设置会影响光照贴图的编码方案和压缩格式
Lightmap Streaming:光照贴图流
是否对光照贴图利用 Mipmap 流式处置惩罚
Frame Timing Stats:帧时序统计
启用此属性可网络 CPU 和 GPU 帧时间统计信息
需要和摄像机上的动态分辨率设置结合利用(Camera组件下的Allow Dynamic Resolution选项),以确定应用步伐是受 CPU 照旧 GPU 限定。
OpenGL:
Profiler GPU Recorders:是否启用OpenGL的探查GPU记录器
在OpenGL上,探查GPU记录器 会 禁用GPU探查器
Virtual Texturing:假造纹理
可在场景中具有很多高分辨率纹理时减少 GPU 内存利用量和纹理加载时间。它将纹理拆分为瓦片,然后在需要时将这些瓦片逐步上传到 GPU 内存中。
留意:假造纹理和安卓装备不兼容
Shader Precision model:着色器精度模子
控制着色器中利用的采样器的默认精度
360 Stereo Capture:360 度立体捕捉
Unity 是否可以捕获立体 360 度全景图像和视频
留意:360 度立体捕捉与 Android 不兼容。
Vulkan Setting
身份证明设置
留意:安卓平台时,不要修改这些选项
SRGB Write Mode: SRGB 写入模式
允许出现器在运行时切换 sRGB 写入模式,如果要暂时关闭线性到 sRGB 写入颜色转换,可以启用该选项
留意:发起不要为移动装备启用该选项
它会增长移动装备GPU的负担,产生负面影响
Number of swapchain buffers: 交换链缓冲区数量
设为2位双缓冲,设为3为三重缓冲可以和Vulkan渲染器一起利用
该设置可以资助办理移动平台上的延迟问题
留意:一样寻常情况下我们不要修改此选项,保持为3,不要在安卓装备上利用双缓冲,会产生负面影响
Acquire swapchain image late as possible:尽大概晚的获取交换链图像
启用后,Vulkan会延迟获取后缓冲器,直到它将帧渲染为屏幕外图像。Vulkan 利用暂存映像来实现此目的。启用此设置会导致在显示反向缓冲器时产生额外的光圈。此设置与双缓冲相结合,可以进步性能。但是,它也大概导致性能问题,由于额外的 blit 会占用带宽。
留意:安卓装备上我们不要修改该选项
Recycle command buffers:接纳命令缓冲区
Unity 实行命令缓冲区后是接纳照旧开释命令缓冲区
Apply display rotation during rendering:
在渲染期间应用显示旋转启用此选项可在显示的本机方向上实行全部渲染。这在很多装备上具有性能上风,虽然云云,但是利用它会带来一些限定,以是照旧发起大家不要修改此选项
Identification:身份证明
留意:初次发布时,肯定要确保包名的正确性
Override Default Package Name:是否覆盖默认包名称
如果你的公司名和游戏名 不是英文,请勾选它自行设置包名
Package Name:软件包名
相称于应用步伐的ID,用于在装备和安卓应用市肆中的唯一标识。
格式:com.公司名.产物名
只能包罗字母数字和下划线,每段都必须以字母开头
Version:版本号
显示给用户看的
用于标识应用步伐包的迭代
格式:数字.数字.数字。。。
比如:1.0、4.3.2、1.2.1等
Bundle Version Code:内部版本号
确定一个版本是否比另一个版本新,数字越大要现版本越新,不会显示给用户看
该值为整数,比如每次发布新版本时可以让数字加一
Minimum API Level:最低API级别
决定应用步伐运行需要的最低的API级别,如果用户手机的SDK版本低于该设置,Android体系会组织用户安装该应用步伐
Target API Level:目的API级别
用于指定应用的目的API级别
重要用于关照Android体系,我们已经针对目的版本举行了测试,而且体系不应该通过启用任何兼容性举动,以保持你的应用与目的版本的向前兼容性。应用步伐一样可以在较低版本上运行(取决于Minimum API Level)
Configuration:设置

Scripting Backend:脚本后端
决定Unity怎样在项目中编译和实行C#代码
Mono:将C#编译为.Net公共中间语言CIL,并利用公共语言运行时实行中间语言
IL2CPP:将C#编译为CIL,再将CIL转换为C++,再将C++编译为本机代码,
Mono和IL2CPP的具体区别在 Unity进阶之C#知识补充当中有讲授
Api Compatibility Level:API兼容性级别
决定可以在项目中利用的.Net API。该设置会影响代码和第三方库的兼容性
.Net Standard 2.1:和.Net Standard 2.1兼容,生成较小的版本,具有完整的跨平台支持
.Net Framework:和.Net Framework兼容(包罗.Net Standard 2.1中的全部的内容),包罗更多的API支持,但是会生成更大的包。
如果在利用C#的一些高级功能时遇到报错或无法利用,可以尝试切换到.Net Framework以便支持这些高级功能的利用,如果有更换方案,发起利用更换方案,尽量利用.Net Standard 2.1可以让包体更小
C++ Compiler Configuration:C++编译器设置
只有将Scripting Backend设置为IL2CPP,才气利用该选项
Debug(调试模式): 将关闭全部优化,让代码生成速率更快,但运行速率较慢,可以在这种模式下举行调试
Release(发布模式):会对代码举行优化,编译后的代码运行会更快,二进制文件大小更小,但编译时间更长
Master(大家模式):可实现全部大概的优化,从而压缩每一点大概的优化,发布时间比发布模式还要长,如果接受较长的发布时间,发起在发布最终版本时利用Master模式
Use incremental GC:利用增量GC
启用后可以利用增量垃圾接纳器,它会将GC分散到多个帧上实行,可以低落在一帧中举行GC造成的卡顿。
Assembly Version Validation:步伐集版本验证
Mono是否验证强名称步伐集中的范例
强名称步伐集,是对步伐集举行强定名,为步伐集创建唯一标识,可以防止步伐集冲突
Mute Other Audio Sources:将别的音频源静音
如果渴望在运行Unity应用步伐时停止在背景运行的应用步伐中的音频,可以启用该选项,否则背景音频将和Unity中的音频一起播放
Target Architectures:目的体系布局
允许应用步伐运行的CPU
64位情况中运行安卓应用具有性能上风
64位应用可以处置惩罚高出4GB的内存空间
Mono模式只能选择ARMv7
IL2CPP模式可以选择更多的模式
ARM就是一种微处置惩罚器硬件
Chrome OS是一款Google开发的基于PC的操纵体系
ARMv7 32位的ARM
ARM64 64位的ARM
x86(Chrome OS) 32位
x86-64(Chrome OS) 64位
Split APKs by target architecture:按目的架构拆分APK(实行性功能)
启用后,可以为目的体系布局中选择的每个CPU架构创建单独的APK,这样在Google Play中为用户提供下载时,它会根据装备的情况下载对应版本的APK,可以让apk更小,用户下载更小的包。
但是重要是针对Google Play,因此面向国内的产物险些不会利用。
Target Devices:目的装备
实行允许运行APK的目的装备
All Devices(全部装备):允许apk在全部Android和Chrome OS装备上运行
Phones,Tablets,and TV Devices Only(手机、平板、电视装备):允许apk在Android手机和平板电脑、电视上运行,但是不能在Chrome OS装备上运行
Chrome OS Devices Only(Chrome OS装备):允许apk在Chrome OS装备上运行,但是不能在Android手机、平板、电视上运行
Install Location:安装位置
指定装备上的应用步伐安装位置
Automatic:自动让操纵体系决定,用户可以本身移动安装位置
Prefer External:首选外部安装,如果可以,将应用步伐安装到外部存储中(SD卡),如果不能,应用步伐安装到手机存储空间中
Force Internal:强制内部,强制将应用步伐安装到手机存储空间中,用户无法将应用步伐移动到外部存储中安装
Internet Access:互联网接入
选择是否始终将网络权限添加到Android清单(纵然你没有利用任何网路API)
Auto:仅当利用了网络API时才会添加互联网访问权限
Require:利用添加互联网访问权限
Write Permission:写入权限
是否启用对外部存储(SD卡)的写入访问权限,并向Android应用清单添加相应的权限
Internal(内部):仅授予对内部存储的写入权限
External(外置SD卡):启用对外部存储的写入权限
Filter Touches When Obscured:遮挡时过滤触摸
启用后可以丢弃在另一个可见窗口覆盖Unity应用步伐时收到的触摸(触屏事件),可以放置窃听劫持
Sustained Performance Mode:连续性能模式
启用此选项可在较长的时间段内设置可猜测且划一的装备性能级别,而无需举行热限定。启用此设置时,团体性能大概会低落
Low Accuracy Location:低精度定位
启用后可改为低精度值与Android位置API共同利用
Chrome OS Input Emulation:
Chrome OS 操纵体系的默认举动是将鼠标和触摸板输入事件转为触屏输入事件。
取消可禁用这个默认举动
Android TV Compatibility:安卓电视兼容性
启用后应用步伐标志为兼容Android TV
启用后出现
Android Game:启用后可将输出的apk标志为游戏而不是通例应用
Android Gamepad Support Level:安卓游戏输入板支持品级
可以选择玩游戏时支持的输入方式
Warn about App Bundle size:告诫应用步伐包的大小
只有在Build Settings中勾选了Build App Bundle(Google Play)才有用
当应用步伐包大小高出这个阈值时会收到告诫
Active Input Handling:运动输入处置惩罚
选择要怎样处置惩罚来自用户的输入
Input Manager:老的输入体系,Input相干
Input System Package:新输入体系
Both:同时利用
Script Compilation:脚本编译
Scripting Define Symbols:脚本界说符号
可以在此设置自界说编译标志。
再利用一些第三方内容时有时会在此处添加脚本符号
比如:Lua热更相干、FairyGUI相干
Unity有内置的脚本符号
这些符号能够资助我们有选择的在编译中包罗或扫除部门代码
这些脚本符号可以共同多路测试 #if 举行利用
#if 脚本符号
代码逻辑
#elif 脚本符号
代码逻辑
#else
代码逻辑
#endif
平台脚本符号

编辑器版本脚本符号

别的脚本符号

Additional Compiler Arguments:别的编译器参数
向此列表添加条目以将其他参数通报给 Roslyn 编译器。对每个附加参数利用一个新条目。
要创建新条目,请按“+”按钮。要删除条目,请按“-”按钮。
添加完全部所需参数后,单击“应用”按钮以在将来的编译中包罗其他参数。“还原”按钮将此列表重置为近来应用的状态。
Suppress Common Warnings:克制显示常见告诫
禁用此设置可显示C#告诫
CS0169:从倒霉用私有字段,声明白私有变量,但是从没有利用
CS0649:编译器检测到从未分配值的未初始化的私有或内部字段声明
Allow ‘unsafe’ Code:允许利用“不安全”代码
启用对在预界说步伐集中编译“unsafe”C# 代码的支持
unsafe 关键词的根本概念
默认情况下,C#是不支持 指针 的,unsafe 关键词用于在C#表现不安全的上下文,如果想要在C#中举行任何和指针相干的操纵,就必须共同unsafe关键词利用。
在公共语言运行时(CLR)中,不安全代码是指无法验证的代码。
C# 中的不安全代码不肯定是伤害的,只是 CLR 无法验证该代码的安全性。因此,CLR 将仅实行完全信托的步伐集中的不安全代码。
如果你利用不安全代码,你****应该负责确保代码不会引发安全风险或指针错误
unsafe 关键词的根本利用
如果想要在Unity中正常利用C#中的unsafe关键词举行步伐编写,我们必须在Unity的 Player Settings 中的 Other Settings 中将 Allow unsafe Code 选项勾选上
勾选该选项后,我们就可以在Unity中利用unsafe关键词了。
留意:unsafe 的利用虽然能让我们在C#中利用指针,但是会存在安全风险和稳定性风险,如果没有特殊需求,请尽量制止在C#中利用 unsafe。
Use Deterministic Compilation:利用确定性编译
启用此设置后,编译的步伐集在每次编译时都是完全雷同的。
禁用此设置可防止利用 -确定性 C# 标志举行编译
确定性编译可用于确定二进制文件是否从受信托的源编译
Enable Roslyn Analyzers:启用罗斯林分析器
禁用此设置可编译用户编写的脚本,而无需项目中大概存在的 Roslyn 分析器 DLL( Roslyn 就是微软的.Net开源编译器,编译器支持 C# 编译,并提供丰富的代码分析 API。)
Optimization:优化
Prebake Collision Meshes:预烘焙碰撞到网格
启用该选项可以在构建时将碰撞数据添加到网格
Keep Loaded Shaders Alive:保持加载的着色器的运动状态
启动后,不能卸载着色器
着色器加载时会造成性能开销,大概会出现卡顿现象,不允许卸载着色器可以制止卸载后重复加载
Preloaded Assets:预装资源
设置启动时加载的资源数组
将想要预加载的内容拖入框中
Strip Engine Code:剥离引擎代码
选择IL2CPP模式才会出现的字段
如果你渴望在IL2CPP模式,能够删除Unity引擎功能中没有利用的代码,可以启用该选项,可以有用的减小包体大小
Managed Stripping Level:管理剥离水平
选择Unity怎样剥离未利用的C#代码
在发布应用步伐时,Unity会自动去撤除没有利用的代码,剥离代码可以使生成的实行文件减小,但是有大概会心外删除需要利用的代码
在Unity进阶之C#知识补充中讲授IL2CPP相干内容时讲授过
Disabled:不剥离,只有在Mono模式下才气选择
Minimal:最小剥离,Unity只会搜索Unity引擎未利用的.Net类库,不会删除任何用户编写的代码,该设置根本不会出现不测剥离,在利用IL2CPP模式后,该模式是默认模式
Low:低级剥离,处置惩罚Unity相干,玩家本身编写的代码也会被剥离,会尽量减小不测剥离发生
Medium:中级剥离,比起Low更多一些剥离
High:高级剥离,优先思量打包大小,会最大限度剥离代码。可以采共同link.xml来手动拒绝剥离,或利用[Preserve]特性(在不渴望被剥离的函数前加该特性)
Enable Internal Profiler:启用内部探查器,已经弃用的功能
用此选项以从Android SDK的装备中获取profiler数据adblogcat测试项目时输出。这仅在开发版本中可用。
Vertex Compression:极点压缩
选择要设置的通道,以便在极点压缩方法下压缩网格
通常,极点压缩用于减少内存中网格数据的大小,减小文件大小,进步CPU性能。
Optimize Mesh Data:优化网格数据
启用后,构建时会从利用的网格中剥离未利用的极点属性
它可以减少网格中的数量,也可以减小包体大小,可以减小加载时间和运行时的内存利用
但是,如果启用了该设置,运行时就不要更改材质或着色器相干设置
也就是说,如果你游戏会在运行时转换一些对象的着色器,就不能开启该选项。
比如游戏中某一个对象,如果网格利用简单漫射着色器,那么 Unity 将删除 切线矢量,由于并不需要它们。如果您想要在运行时切换到网格上的凹凸贴图着色器 ,那么您将不会得到正确的切线数据,由于此数据已被删除
Texture MipMap Stripping:贴图纹理剥离
启用后会启用纹理贴图剥离,在构建时会从纹理中剥离没有利用的纹理贴图。
会根据你发布平台的质量设置举行比较来确定哪些贴图用不到。
mipmap生成的多分辨率图也会被剥离
Stack Trace:堆栈跟踪
选择在特定的上下文中允许的日记记录范例
可以选择日记记录的方式
None:不记录
ScriptOnly:只在运行脚本时记录信息
Full:不绝记录
Error:错误信息
Assert:断言(用于检测非法情况的)信息
Warning:告诫信息
Log:打印日记信息
Exception:非常信息
Legacy:从前的内容
Clamp BlendShapes(Deprecated):启用 骨骼蒙皮动画中钳制混淆外形权重的范围
Publishing Settings
前言
Android 中的署名是什么?
Android要求全部已安装的应用步伐都利用数字证书做数字署名,数字证书的私钥由应用开发者持有,
Android利用证书作为标示应用步伐作者的一种方式,并在应用步伐之间创建信托的关系。 证书并不消来控制用户能否安装哪个应用。证书不需要由证书认证中央署名;完全可以利用自制署名证书。
没有正确署名的应用,Android体系不会安装或运行。此规则实用于在任何地方运行的Android体系,不管是在模拟器照旧真实装备上。由于这个缘故起因。在真机或模拟器上运行大概调试应用前,必须为其设置好署名。
为什么要利用署名?

上图是我们在Unity中发布Android应用步伐时,设置的包名
开发Android的人这么多,完全有大概把包名定名成同样的名字,这个时候该怎样区分?
这时就需要署名来区分了,由于开发商大概通过利用雷同的Package Name(包名)来混淆更换已经安装的步伐,署名可以保证雷同名字,但是署名差别的包不被更换。
举例:
比如应用步伐A 和 应用步伐B 的包名是雷同的,如果没有署名的存在,在同一Android装备上重复安装A和B,就会导致他们之间的相互覆盖,不能同时拥有,为了制止这种情况出现,就有了署名机制。
安卓密钥库和密钥,就是用来举行Android署名的。
Android 应用步伐清单是什么?
Android应用步伐工程中,有一个叫做 AndroidManifest.xml 的xml文件,该文件在之后的开发中我们会常常利用和编辑,该设置文件重要用于声明应用步伐的组件,而且另有以下的一些紧张作用:
- 确定应用步伐要求的用户权限,比如:网络访问、通讯录访问、信息读取等权限
- 声明应用步伐要求的最低API Level
- 声明应用步伐将要利用的或要求的硬件和软件特性,比如:摄像头访问、蓝牙服务、多点触碰等
- 等等
也就是说,如果我们想要在安卓游戏当中利用一些体系功能或硬件访问权限,都需要在该文件当中举行设置。
Unity中如果引入Android第三方SDK,大概需要和Android举行交互,常常会对该文件举行编辑。如果我们没有这些需求,可以忽略它。
Gradle 是什么?
Gradle 是一个自动化构建开源工具,重要面向Java应用为主,也支持别的语言,比如C++、Kotlin、Swift,将来还会支持更多的语言。
它是一个基于JVM(Java假造机)的构建工具,是一款通用机动的构建工具,也可以用于Android 项目的构建工作,它可以让安卓项目变得更加简便。
在Unity中简单理解Gradle,它就是用于资助我们打包出安卓应用步伐 .apk 的一个工具,在Android Studio中也利用Gradle举行应用步伐打包。
ProGuard 和 R8 是什么?
代码混淆
代码混淆(Obfuscated code),是将盘算机步伐的代码,转换成一种功能上等价,但是难于阅读和理解的情势的举动。代码混淆重要用于步伐源代码,也可以用于步伐编译而成的中间代码。实行代码混淆的步伐被称作代码混淆器。已经存在很多种功能各异的代码混淆器。
将代码中的各种元素,如变量,函数,类的名字改写成偶然义的名字。比如改写成单个字母,或是简短的偶然义字母组合,以致改写成“__”这样的符号,使得阅读的人无法根据名字猜测其用途。重写代码中的部门逻辑,将其变乐成能上等价,但是更难理解的情势。比如将for循环改写成while循环,将循环改写成递归,精简中间变量,等等。打乱代码的格式。比如删除空格,将多行代码挤到一行中,大概将一行代码断成多行等等。
代码混淆的重要目的是提升源代码的安全性,别人反编译你的应用步伐代码后,增长他们阅读分析逻辑的难度。
ProGuard 和 R8 就是两种差别的代码混淆器。
ProGuard
ProGuard是一个压缩、优化和混淆Java字节码(Java源代码通常被编译为字节码)文件的免费的工具,它可以删除无用的类、字段、方法和属性。可以删除没用的注释,最大限度地优化字节码文件。它还可以利用简短的偶然义的名称来重定名已经存在的类、字段、方法和属性。常常在Android开发用于混淆最终的项目,增长项目被反编译的难度。
Unity发布安卓应用步伐时,默认利用的就是ProGuard来举行处置惩罚最终的代码。
R8
R8是相对ProGuard较新的Android混淆编译器,它可以尽大概的减小应用的大小,早期的Android Studio版本中,混淆编译器利用的是ProGuard实行编译时的代码优化,如果我们利用Android Gradle 3.4.0或更高版本构建项目时,不再利用ProGuard举行代码优化,而是采取R8编译器协同工作。
Android Sutdio 3.3版本开始,就利用R8作为代码压缩器来对代码举行混淆、压缩、优化了。
R8 相对 ProGuard来说,它可以更快地缩减代码,同时改善输出的大小。
Unity发布安卓应用步伐时,我们可以选择利用R8混淆编译器举行发布处置惩罚。
大概相识了这些根本概念后,才气知道我们是在设置什么内容。
Keystore Manager:密钥管理器

可以通过密钥管理器创建、设置和加载密钥和密钥库
我们可以在Keystore Manager窗口
或
Publishing Settings 发布设置中
加载现有密钥库和密钥

Create New:创建新的密钥库
Anywhere:任何地方,会打开项目文件夹根目次下的文件资源管理器,这是Unity存储密钥库的默认位置
In Dedicated Location:专用位置,将密钥库文件保存到盘算机中的另一个目次中
留意:为了协同开发方便,发起大家就把密钥库保存在项目文件夹下,制止别的同事无法访问密钥库
Select Existing:选择现有密钥库
可以指定加载现有密钥库
Password:密钥库的暗码
Confirm password:创建密钥库时 需要重复一次暗码
Existing Keys:现有密钥
界面的这一部门包罗当前密钥库包罗的密钥的只读列表

Project Keystore:项目密钥库
用于保存署名密钥来实现应用步伐安全性的容器
如果想要加载和利用现有密钥库,我们需要:
- 启动 Custom Keystore
- 在 Select 下拉列表中选择Browse,从文件体系中选择密钥库
- 输入密钥库暗码
Custom Keystore:启用后,可以指定加载和利用现有密钥库
Select:启用Custom Keystore后,该按钮可以用来选择要利用的密钥库
Path:你选择的密钥库所在路径
Password:输入密钥库暗码以加载所选的密钥库
Project Key:项目密钥
加载密钥库后,Unity会加载该密钥库中的全部密钥
我们可以在项目密钥Project Key中设置从该密钥库中选择哪一个密钥用来作为该项目的运动密钥
Alias:选择用于打开的项目的密钥
Password:密钥暗码
Build:构建相干
默认情况下,Unity利用Unity安装提供的清单文件、Gradle模板和文件构建应用步伐
如果想要自界说这些内容,你需要:
- 启用Build下方的这些复选框,文件会出现到复选框的下方
- 打开新文件举行更改
- 保存修改的文件,Unity下次构建应用步伐时会自动利用的文件
Custom Main Manifest:自界说主清单文件
该清单文件是一个xml文件
我们可以在此决定一些权限设置(比如:网络、定位、照相称权限设置),还可以设置是否启用一些安卓功能等等
Custom Launcher Manifest:自界说启动器清单
该清单文件是一个xml文件
我们可以在此决定一些应用步伐启动之前的表面和举动。(比如:图标、名称、安装位置等等)
Custom Main Gradle Template:自界说主Gradle构建模板
Gradle 是一个构建体系,可自动实行很多构建过程并防止很多常见的构建错误。Unity将Gradle用于全部Android版本。您可以在Unity中构建输出包(.apk,.aab),也可以从Unity导出Gradle项目,然后利用Android Studio等外部工具构建它
是一个gradle文件,包罗有关怎样将Android应用步伐构建为库的信息
Custom Launcher Gradle Template:自界说启动器Gradle构建模板
是一个gradle文件,包罗有关怎样构建Android应用步伐的阐明
Custom Base Gradle Template:自界说根本Gradle构建模板
是一个gradle文件,包罗在全部别的模板和Gradle项目之间的共享设置
Custom Gradle Properties Template:自界说属性Gradle构建模板
属性文件,包罗Gradle生成情况的设置设置
比如
JVM(Java假造机)内存设置
允许Gradle利用多个JVM构建的属性
用于选择举行缩小的工具的属性
构建应用步伐包时不压缩本机库的属性等等
Custom Proguard File:自界说Proguard文件
是一个txt文件,包罗缩小过程的设置设置
如果缩小删除了一些应该保存的Java代码,你可以添加一条规则来将这些代码保存在此文件中
Minify:代码混淆和缩小相干
是一种缩减、混淆和优化应用步伐代码的过程
它可以减小代码大小并使代码更难以反编译
利用 Minify 设置可界说 Unity 应何时以及怎样将缩小应用于构建
利用该功能会加长发布时间,而且还会让调试变得复杂,以是一样寻常在最终发布时才会利用,寻常发布测试应用时不需要开启。
Use R8:默认情况下,Unity 利用 Proguard 举行缩小。启用此复选框可改为利用 R8。
Release:如果渴望 Unity 在发布构建中缩小应用步伐的代码,请启用此复选框。
Debug:如果渴望 Unity 在调试构建中缩小应用步伐的代码,请启用此复选框。
Split Application Binary:拆分应用步伐二进制文件
启用 Split Application Binary 选项可将输出包拆分为主包 (APK) 和扩展包 (OBB) 包。如果要发布大于 100 MB 的应用步伐,则 Google Play 应用市肆需要此功能。
Unity打包Android
Unity导出APk
没什么可说的直接导出就行了
Unity导出Android Studio能够打开的工程
1.设置导出根本信息:公司名、游戏名、图标、包名等关键信息
2.在File——>Build Settings中,勾选 Export Project 选项
3.点击Export 导出按钮
在Android Studio中打开Unity导出的工程
1.打开Android Studio
2.新选择 打开工程
3.选择 之前导出的对应文件夹
4.弹出提示时,利用Android Studio中的 Android SDK,可以制止打包失败
5.等候工程加载结束
6.更新Gradle版本,保证之后打包乐成
利用Android Studio生成应用步伐apk
1.在 工具栏——>Build——>Build Bundle…——>Build APK
构建一次工程,保证构建乐成,根据报错办理问题
常见问题:
1.The option ‘android.enableR8’ is deprecated 由于新版本Gradle默认利用R8混淆
以是不需要这个选项设置了
在Project选项中 找到 gradle.properties 删除 android.enableR8
2.SDK Tools 版本不匹配
更新SDK利用的路径,利用Android Studio本身的路径,大概更新SDK
2.在 工具栏——>Build——>Build Bundle…——>Generate Signed Bundle
发布APK,可以设置密钥库相干内容后举行打包即可
3.测试生成的apk文件
Android调试相干
Unity举行安卓真机调试
调试指的是什么?
安卓手机的真机调试
由于运行情况的改变(开发时在 Windows 或 MacOS,利用时在Android或IOS)
我们很多时候需要在真机上举行项目的 性能分析 和 bug处置惩罚(断点调试修复bug)
预备测试用安卓手机
1.安卓手机需要打开开发者模式可以根据本身的手机品牌自行搜索开启方式
一样寻常的操纵方式:设置——>关于手机——>版本号(点击n次版本号)便可开启
2.完成第一步后,在手机的开发者选项中 开启 USB调试功能一样寻常开发者选项会在:设置——>体系——>开发者选项中找到USB调试功能 开启它
3.将手机通过USB接入到你的电脑上,在手机上一样寻常会弹出一个提示选择允许举行USB调试
在Unity中举行调试相干设置
在 File ——> Build Settings 中举行调试相干的设置
- 完成知识点一相干内容后,可以在 Run Device 的装备列表中看到你的安卓装备
如果Refresh刷新后也无法看到你的装备,证明你的毗连有问题,或没有开启USB调试模式
剖析器 性能问题排查相干(勾选了他们,我们才气在Unity的剖析器中获取完整信息)
开启 Development Build 开发模式构建
开启 Autoconnect Profiler 自动毗连分析器
开启 Deep Profiling 深度剖析
断点 调试相干(勾选了他们,我们才气举行断点调试)
开启 Script Debuggins 脚本调试
开启 Wait For Managed Debugger 等候托管调试器
比如:包名、项目名、公司名、密钥库等等
Unity毗连安卓真机举行项目调试
点击Build and Run
这时Unity会自动发布apk应用该步伐,然后安装到装备上自动启动
这时我们就可以
- 利用Unity的 剖析器来分析应用步伐
- 举行断点调试,排查问题
留意:如果想要断点调试,自动启动应用步伐后,弹出的提示窗口 不要点击OK先在VS中 工具栏——>调试——>附加 Unity 调试步伐——>选择对应的装备再在运行的应用步伐中点击ok
Unity Remote
Remote是什么?
Remote翻译过来是远程的意思
Unity Remote是Unity提供给我们的一个可以安装到移动平台上的应用步伐资助我们举行调试的远程工具
该应用步伐可以安装到 Android、IOS装备上,当我们在Unity编辑器运行项目时,移动装备上安装的Unity Remote会和Unity毗连,Unity编辑器中的游戏画面会被发送到移动装备上,移动装备上的输入操纵会返回到Unity编辑器运行的项目中
它的重要作用就是可以让我们省去发布安装包、安装到移动装备上的这一繁琐流程
可以直接通过Unity Remote远程毗连来达到以下目的:
查察项目在装备上的视觉表现效果
测试移动装备输入逻辑是否能正常利用
装备的以下输入会被回传到Unity引擎中用于测试
触屏输入相干
GPS
陀螺仪
指南针
加速率计
相机照信赖息
等等输入信息
留意:
1.Unity引擎通报给移动装备的画面较暗昧,帧率较低,我们只能看看大抵的表现效果
2.我们重要通过这种方式,来测试移动装备输入相干的功能
比如:陀螺仪、GPS、触屏功能等等
获取和利用Unity Remote
1.下载Unity Remote应用步伐,并安装到移动装备上
2.将移动装备利用USB调试模式和电脑毗连
3.在菜单栏Edit——> roject Setting——>Editor中设置Unity Remote的Device为恣意装备
4.在移动装备运行Unity Remote
5.在Unity编辑器中启动项目,便可以举行远端调试
留意:
1.如果电脑插入多个Android装备,会自动选择第一台装备
2.Unity Remote存在的重要目的仅仅是为了快速的在装备上测试输入相干功能以及根本表现效果 如果要完整的测试,照旧需要发布安装举行调试
Android Logcat
Android Logcat是什么?
Android Logcat是Unity提供的一个拓展包,引入该拓展包后,我们可以在Unity当中对Android应用步伐举行调试
我们可以通过该工具获取到:
1.安卓日记打印信息
2.安卓应用步伐内存统计
3.安卓屏幕截图
4.安卓屏幕录像
5.堆栈跟踪
Unity2019.4及以上版本都可以引入Android Logcat来资助我们举行调试
怎样利用Android Logcat工具
1.在Unity工程中引入Android Logcat包
2.毗连Android装备
3.将Android Logcat毗连到Android装备上点的应用步伐,便可以查察相干信息
Android Logcat窗口根本知识

A:工具栏
Auto Run:自动运行
启用后,当你构建和运行应用步伐时Android Logcat窗口会毗连到应用步伐,显示对应的相干信息
No device:装备选择器
当没有Android装备毗连电脑是,显示No Device,有装备时可以在这选择毗连的Android装备
No Filter:过滤选择器
可以指定Android装备上显示消息的应用步伐,此处显示的是应用步伐的包名
过滤输入框
用于过滤搜索消息日记,可以输入内容搜索信息
消息正文过滤:在输入框输入内容,则会自动筛选消息中存在输入字符的内容
优先级过滤:在下方点击Priority优先级,选择过滤的内容
Verbose:冗长的,全部
Debug:调试信息
Info:信息
Warn:告诫
Error:错误
Fatal:致命的
按标签过滤:在下方点击Tag标签,选择过滤的内容
Filter Options:过滤器选项
决定怎样利用选项过滤器输入过滤消息日记中的消息
Use Regular Expressions:利用正则表达式
Match Case:区分大小写
Reconnect:重新毗连
重新毗连到应用步伐和装备,如果步伐不再运行则重新毗连到装备
Disconnect:断开和装备的毗连
Clear:扫除消息列表中的消息日记
Tools:工具相干
Screen Capture:屏幕捕获
从毗连的Android装备上捕捉屏幕截图和视频
Open Terminal:开放终端
在Windows上打开命令调试符窗口,在macOS和Linux上打开终端
Stacktrace Utility:堆栈跟踪应用步伐
剖析自界说堆栈跟踪
Memory Window:内存窗口
跟踪为应用步伐分配的内存
B:消息日记

屏幕捕获工具
屏幕捕获工具重要可以资助我们举行游戏内截图,录屏
该工具可以资助我们:
1.测试职员用来录制bug表现,反馈给步伐职员举行办理
2.获取截屏、录屏信息,获取宣传资料
长处:直接PC端远程获取,方便快捷,便于记录bug表现效果
缺点:录制的视频不会捕获声音,录屏功能可以部门装备不支持


堆栈跟踪实用工具
目前我们利用Android Logcat毗连真机举行测试时
打印、告诫、报错等等信息都会直接在主窗口中打印出来让我们举行分析
相称于它资助我们举行了自动的堆栈跟踪剖析
什么是自动堆栈跟踪剖析呢?
就是我们可以在打印窗口看到具体是哪个脚本的哪行代码
出现了打印、告诫、报错等等信息
而Tools(工具)中的Stacktrace Utility(堆栈跟踪实用工具)的作用是
允许我们复制粘贴自界说日记并剖析堆栈跟踪
重要用于没有真机毗连装备调试时
大概之后正式发布版本后
我们可以获取应用步伐日记信息
将这些日记信息复制到该工具中用于翻译
(一样寻常项目会在瓦解后,在当地存储一份瓦解日记,我们可以获取该日记)
由于这种情况下的日记信息中,不会明确指明是哪个脚本哪行代码
每每是一堆看不懂的符号,我们可以利用该工具举行翻译
比如:下面这个打印信息就是安卓的原始日记
E CRASH : #01 pc 01c65330 /data/app/com.CrashComp.Crash-J2Z_L0XSsSAZPkt9lab2rQ==/lib/arm/libunity.so
(DiagnosticsUtils_Bindings::ForceCrash(DiagnosticsUtils_Bindings::ForcedCrashCategory, ScriptingExceptionPtr*)+48)
这里面都是一堆特殊符号,并没有明确告诉你哪个脚本哪行代码
通过翻译后堆栈跟踪实用工具翻译后,我们就能够获取到哪个脚本哪行代码打印了输出了该信息
总而言之它该工具就是用来翻译发布后安卓应用步伐的日记信息的
堆栈跟踪实用工具的利用
利用堆栈跟踪实用工具的作用是可以翻译本身获取到的安卓日记信息
利用流程是:
1.设置项目的 so 文件路径
2.将日记信息复制到Original(初始)页签中
3.点击Resolve Stacktraces(剖析堆栈跟踪)
4.在Resolved(已剖析的日记)页签中查察翻译效果
留意:我们在电脑毗连安卓装备通过Android Logcat举行调试时一样寻常倒霉用该功能,只有当非毗连调试时,获取了安卓瓦解日记后才会利用该功能


内存窗口工具
首先相识 RAM(运行时内存)对于我们的意义
如果应用步伐出现闪退情况,每每都是由于应用步伐运行时内存的利用超出了装备允许的最大内存量,而被手机体系强行关闭
留意:
差别品牌、型号的手机设置都是差别的,手机背景运行的步伐数量也是差别的,以是要根据实际情况举行测试获取目的装备的内存极限值,可以选取市面上的主流机型来举行测试
内存窗口工具是用于跟踪应用步伐RAM(运行时内存)的分配情况的
我们可以利用它来分析应用步伐大概存在的内存问题
我们可以利用它 定期自动的 大概 手动的 捕获内存快照
这里的内存快照就是捕获的这一刹时应用步伐的运行时内存利用情况
根据内存快照我们可以分析内存问题
比如:
- 切换场景前和切换场景后的内存快照比较,判断是否存在内存走漏
- 比如闪退前的内存快照,来分析装备占用多少内存时造成了闪退,确定内存瓶颈
等等

Auto Capture:自动捕获
Unity会定期捕获应用步伐的内存快照
留意:自动捕获,大概会影响性能表现,大概会造成卡顿,如果严峻影响测试,发起利用手动捕获
Manual Capture:手动捕获
通过点击按钮,本技艺动捕获内存快照
Disabled:不启用


Android Debug Brige
ADB是 Android Debug Brige(安卓调试桥)的简称
它是我们调试Android装备的一套指令集
它可以让我们通过指令来举行一些操纵,来获取日记信息
比如:
1.关机、重启
2.安装、启动、卸载应用步伐
3.删除、移动、复制文件
4.查察日记信息
我们最常利用的就是查察日记信息的功能
之前学习的Android Logcat工具着实就是利用了ADB来获取的信息
由于Android Logcat工具只能在Unity 2019.4及其以上版本才气利用
以是对于老版本的Unity来说,我们一样寻常利用ADB来资助我们举行调试
留意:
利用ADB工具的条件是 电脑和安卓装备处于USB调试毗连
怎样利用ADB?
在Android SDK的路径中
寻找platform-tools文件夹
在此中可以找到adb.exe文件
我们需要共同命令调试符窗口(Windows)利用adb指令集
方法一:
直接在Android Logcat窗口中利用Tools中的Open Terminal(打开终端)
Window体系会自动打开命令调试符窗口
MacOS体系会自动打开终端窗口
会直接来到SDK文件夹中的platform-tools(平台工具)文件夹
在后面直接输入指令即可
adb 指令
方法二:
本身打开命令调试符窗口
输入adb.exe所在文件夹路径
比如:
D:\Android\android-sdk\platform-tools\adb 指令
关键指令
常用指令
1.显示日记信息
adb logcat
2.获取Unity相干日记信息
adb logcat -s Unity
做相识的指令
1.查察abb相干信息,比如版本号、常用命令等
adb help
2.查察adb版本
adb version
3.安装apk
adb install apk路径
4.覆盖安装
adb install -r apk路径
5.卸载应用步伐
adb uninstall 应用步伐包名
6.保存数据卸载应用步伐
adb uninstall -k 应用步伐包名
7.查察毗连的主机装备
adb devices
8.从电脑上复制文件到手机
adb push 电脑上文件路径 需要复制到的手机路径
9.从手机上复制文件到电脑
adb pull 手机上文件路径 需要复制到的电脑路径
10.查察手机上安装的全部应用步伐包名
adb shell pm list packages
11.截图
adb shell screencap 保存到的手机路径
12.录屏
adb shell screenrecord 保存到的手机路径
等等
更多信息
https://developer.android.com/studio/command-line/adb.html
Android Studio中调试应用步伐
回顾Unity导出Android Studio工程
Build Settings中举行设置
1.勾选Export Project
2.勾选Development Build
3.导出到指定目次
4.利用Android Studio打开该工程
5.更新Gradle版本
6.删除 android.enableR8
7.保证构建乐成
在Android Studio中调试应用步伐
1.保证Android装备和电脑举行USB调试毗连
2.菜单栏的Run页签中举行调试(若上部门Run置灰,可以重启一次Android Studio)
3.在下方的Logcat日记窗口和Profiler性能分析器窗口调试应用步伐,排查问题
更多关于Android Studio调试和性能分析内容
调试:https://developer.android.google.cn/studio/debug
性能分析:https://developer.android.google.cn/studio/profile
总结
Android Studio中调试应用步伐和Unity中利用 Android Logcat + Unity Profiler窗口类似
一样寻常情况下,没有特殊需求,我们都在Unity中举行Android应用步伐调试
相对Android Studio中调试来说更适合我们Unity步伐员
来源:https://blog.csdn.net/weixin_41301576/article/details/127353458
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |