如何使用Android Studio在安卓平台对Unity开发的应用进行性能检查?

简介: 如何使用Android Studio在安卓平台对Unity开发的应用进行性能检查?前言大家常常会抱怨安卓平台没有一个统一、好用的性能检查工具。不能像iOS的instrument那样方便。 图片来自:Instruments Help 比如,Unity Blog在3年前就已经教大家如何使用instrument来进行性能检测了。

如何使用Android Studio在安卓平台对Unity开发的应用进行性能检查?
前言
大家常常会抱怨安卓平台没有一个统一、好用的性能检查工具。不能像iOS的instrument那样方便。

图片来自:Instruments Help

比如,Unity Blog在3年前就已经教大家如何使用instrument来进行性能检测了。

Profiling with Instruments – Unity Blog​blogs.unity3d.com图标

其实目前的Android Studio已经提供了很好的安卓平台的性能检查工具。

https://developer.android.com/studio/profile

这里主要介绍CPU Profiler来检查Unity原生函数的性能。就像iOS上的instrument一样。

图形相关的性能检测,可以使用https://github.com/google/gapid

0x01 导出设置
下文中我使用的Android Studio版本为:3.5 preview,Unity版本为:2018.3.0b11。测试工程为:SurvivalShooter(Asset Store) 。

首先,根据android studio的文档:

https://developer.android.com/studio/profile/cpu-profiler?hl=en

Sampled (Native): Captures sampled traces of your app’s native threads. To use this configuration, you must deploy your app to a device running Android 8.0 (API level 26) or higher.
进行native sample的设备系统版本要求是:Android 8.0 (API level 26)

为了可以检测脚本的代码开销,(同样,就像instrument那样)推荐Scripting Backend使用il2cpp。

我们可以自己写一个函数,用来测试。(当然,工程中的脚本也是一样的)

之后,我们把工程按照Gradle的形式导出,以便之后使用as打开。

0x02 符号信息
正常使用as打开导出的工程。在

src/main/jniLibs/armeabi-v7a/

目录下,可以找到相关的so文件。我们主要关注libunity.so以及libil2cpp.so。前者是引擎部分,后者是开发者的脚本部分。此时的so都是符号信息不全的。所以我们要做的只是替换符号信息更全的so。

首先来替换libunity.so,可以在Unity目录下

PlaybackEngines/AndroidPlayer/Variations/il2cpp/Development/Libs/armeabi-v7a/

这里找到带符号信息的so。

之后,如果还想查看脚本的调用开销(il2cpp),我们就需要将带符号信息的libil2cpp替换。

它的路径在:

工程/Temp/StagingArea/symbols/armeabi-v7a/libil2cpp.so.debug

可以看到,gradle工程中的libil2cpp.so只有7.7mb,而带符号信息的libil2cpp则有88.3mb。

0x03 Profiling!

点击右上角的Profile Button,就可以开始进行性能检测了。

选中CPU栏,检测项目中有Java Method、Sample C/C++等等。选择C/C++,即可看到一个timeline。点击recorde,则开始记录call trace。

可以看各个线程的函数调用的chart,整个流程比较流畅。

也可以按照时间开销,整理为堆栈调用的形式。这里可以看到使用il2cpp的脚本函数调用。

我们可以找一找我们的UpdateTest1那个函数。

当然,这里和本文开头Unity Blog中在iOS平台上使用Instrument类似,主要是用来检测一些原生函数的性能,大家可以将它作为Unity Profiler在安卓平台上的一种补充。
原文地址https://www.cnblogs.com/murongxiaopifu/p/10605053.html

目录
打赏
0
0
0
0
94
分享
相关文章
Android平台GB28181执法记录仪技术方案与实现
本文介绍了大牛直播SDK的SmartGBD在执法记录仪场景中的应用。GB28181协议作为视频监控联网的国家标准,为设备互联互通提供规范。SmartGBD专为Android平台设计,支持音视频采集、编码与传输,具备自适应算法和多功能扩展优势。文章分析了执法记录仪的需求,如实时音视频传输、设备管理及数据安全,并详细阐述了基于SmartGBD的技术实现方案,包括环境准备、SDK集成、设备注册、音视频处理及功能扩展等步骤。最后展望了SmartGBD在未来智慧物联领域的广阔应用前景。
78 13
Android平台毫秒级低延迟HTTP-FLV直播播放器技术探究与实现
本文详细探讨了在Android平台上实现HTTP-FLV播放器的过程。首先介绍了FLV格式的基础,包括文件头和标签结构。接着分析了HTTP-FLV传输原理,通过分块传输实现流畅播放。然后重点讲解了播放器的实现步骤,涵盖网络请求、数据解析、音视频解码与渲染,以及播放控制功能的设计。文章还讨论了性能优化和网络异常处理的方法,并总结了HTTP-FLV播放器的技术价值,尤其是在特定场景下的应用意义。
127 11
Android调试终极指南:ADB安装+多设备连接+ANR日志抓取全流程解析,覆盖环境变量配置/多设备调试/ANR日志分析全流程,附Win/Mac/Linux三平台解决方案
ADB(Android Debug Bridge)是安卓开发中的重要工具,用于连接电脑与安卓设备,实现文件传输、应用管理、日志抓取等功能。本文介绍了 ADB 的基本概念、安装配置及常用命令。包括:1) 基本命令如 `adb version` 和 `adb devices`;2) 权限操作如 `adb root` 和 `adb shell`;3) APK 操作如安装、卸载应用;4) 文件传输如 `adb push` 和 `adb pull`;5) 日志记录如 `adb logcat`;6) 系统信息获取如屏幕截图和录屏。通过这些功能,用户可高效调试和管理安卓设备。
移动应用开发之旅:探索Android和iOS平台
在这篇文章中,我们将深入探讨移动应用开发的两个主要平台——Android和iOS。我们将了解它们的操作系统、开发环境和工具,并通过代码示例展示如何在这两个平台上创建一个简单的“Hello World”应用。无论你是初学者还是有经验的开发者,这篇文章都将为你提供有价值的信息和技巧,帮助你更好地理解和掌握移动应用开发。
137 17
|
7月前
|
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
ijkplayer是由B站研发的移动端播放器,基于FFmpeg 3.4,支持Android和iOS。其源码托管于GitHub,截至2024年9月15日,获得了3.24万星标和0.81万分支,尽管已停止更新6年。本文档介绍了如何在Linux环境下编译ijkplayer的so库,以便在较新的开发环境中使用。首先需安装编译工具并调整/tmp分区大小,接着下载并安装Android SDK和NDK,最后下载ijkplayer源码并编译。详细步骤包括环境准备、工具安装及库编译等。更多FFmpeg开发知识可参考相关书籍。
222 0
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
|
9月前
|
超实用!深度解析Unity引擎,手把手教你从零开始构建精美的2D平面冒险游戏,涵盖资源导入、角色控制与动画、碰撞检测等核心技巧,打造沉浸式游戏体验完全指南
【8月更文挑战第31天】本文是 Unity 2D 游戏开发的全面指南,手把手教你从零开始构建精美的平面冒险游戏。首先,通过 Unity Hub 创建 2D 项目并导入游戏资源。接着,编写 `PlayerController` 脚本来实现角色移动,并添加动画以增强视觉效果。最后,通过 Collider 2D 组件实现碰撞检测等游戏机制。每一步均展示 Unity 在 2D 游戏开发中的强大功能。
486 6
掌握这五大绝招,让您的Unity游戏瞬间加载完毕,从此告别漫长等待,大幅提升玩家首次体验的满意度与留存率!
【8月更文挑战第31天】游戏的加载时间是影响玩家初次体验的关键因素,特别是在移动设备上。本文介绍了几种常见的Unity游戏加载优化方法,包括资源的预加载与异步加载、使用AssetBundles管理动态资源、纹理和模型优化、合理利用缓存系统以及脚本优化。通过具体示例代码展示了如何实现异步加载场景,并提出了针对不同资源的优化策略。综合运用这些技术可以显著缩短加载时间,提升玩家满意度。
867 6
掌握Unity调试与测试的终极指南:从内置调试工具到自动化测试框架,全方位保障游戏品质不踩坑,打造流畅游戏体验的必备技能大揭秘!
【9月更文挑战第1天】在开发游戏时,Unity 引擎让创意变为现实。但软件开发中难免遇到 Bug,若不解决,将严重影响用户体验。调试与测试成为确保游戏质量的最后一道防线。本文介绍如何利用 Unity 的调试工具高效排查问题,并通过 Profiler 分析性能瓶颈。此外,Unity Test Framework 支持自动化测试,提高开发效率。结合单元测试与集成测试,确保游戏逻辑正确无误。对于在线游戏,还需进行压力测试以验证服务器稳定性。总之,调试与测试贯穿游戏开发全流程,确保最终作品既好玩又稳定。
459 4