如何使用Android Studio在安卓平台对Unity开发的应用进行性能检查?
0x00 前言
大家常常会抱怨安卓平台没有一个统一、好用的性能检查工具。不能像iOS的instrument那样方便。
图片来自:Instruments Help
比如,Unity Blog在3年前就已经教大家如何使用instrument来进行性能检测了。
Profiling with Instruments – Unity Blogblogs.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在安卓平台上的一种补充。
-EOF-
最后打个广告,欢迎支持我的书
https://item.jd.com/12035114.html
如何使用Android Studio在安卓平台对Unity开发的应用进行性能检查?的更多相关文章
- Android Studio && GitHub 团队多人一起开发
曾几何时,花了两天的时间搞了合并项目,搞得乱七八糟der,但最终还是被我搞定了,too 乱 to 做笔记.过了几个月,也就是前几天,抱着从头开始的决心,再次尝试,然鹅并没有结果.今天,再一次重新开始, ...
- 【原创】如何用Android Studio断点安卓自带Service或Bind类型的Service
很久以来,我一直想找一种方法来断点调试安卓系统自身的Service,或者bind类型的Service,比如我想看WifiManager里面的getWifiApConfiguration函数是如何实现的 ...
- 【Android Studio】安卓开发初体验1——安装与试用
安装 (安装预留硬盘(C盘)空余空间16G以上,8G以上内存) Intel用户: 安装Android Studio和AVD(安卓虚拟机 Android Virtual Device) 安装过程需要注意 ...
- Android studio 创建安卓项目hello
Android studio是一个非常好用的软件,只不过在使用的最开始,由于各种问题,会失败,并且新手本身就不懂的情况下,更加的懵逼. 这里我来记录一下我遇到过的一点坑. 首先,Android stu ...
- Android Studio 0.4 + PhoneGap 3.3 开发环境的搭建
最近在尝试HTML5移动平台下的开发 由于安卓的方便性,首先开始了安卓的试验 现在安卓下的开发工具首选 Android Studio (写这文章的时候,是0.4) 而跨平台的HTML5 App比较出名 ...
- 苹果电脑获取Android Studio的发布版SHA1和开发版SHA1
最近开始转战安卓,准备把我在苹果上的应用也在安卓上来一波,其中就遇到一个问题就是最牛天气(iOS和微信小程序都已经有了,就差安卓的了)引用的百度的定位功能,需要填写发布版SHA1和开发版SHA1,作为 ...
- Android Studio使用JNI和NDK进行开发
想要学习一下在Android Studio中进行JNI的开发,文章挺多的,但是几乎没有一个完整的说明的,中间总是有一两步漏掉.分享技术就应该完整的让读者学会,藏着掖着不是君子所为.对于那些故意含糊过去 ...
- 使用Android Studio和Genymotion模拟器搭建Andriod开发环境
一.Android Studio下载 1.打开http://www.android.com/ 2.依照下图步骤打开下载页面 a.在页脚部分点击“App Developer Resources” b.点 ...
- 在Android Studio上进行OpenCV 3.1开发环境配置
开发环境: Windows 7 x 64 家庭版 Android Studio 1.5.1(Gradle版本2.8) JDK 1.8.0 Android 6.0(API 23) OpenCV 3.1. ...
随机推荐
- xinetd被动服务唤醒
rsync设置: 1.打开rsync控制开关(修改文件 /etc/default/rsync)2.sudo cp /usr/share/doc/rsync/examples/rsyncd.conf / ...
- maven入门 (二)_私服安装与上传下载
本篇文章主要介绍maven的私服安装和 jar包的上传与下载.毕竟大家还是在公司需要上传jar包到自己公司私服的. 1.安装私服 下载链接: https://pan.baidu.com/s/17dbQ ...
- Python实现猜数字游戏1.0版
本文由荒原之梦原创,原文链接:http://zhaokaifeng.com/?p=702 """ 功能: 随机生成一个数字,最多有3次猜测机会,如果第一次没有猜对,则从第 ...
- Rest接口和Thymeleaf的两个坑
spring boot thymeleaf 热部署 在使用spring boot 开发的时候,使用了Thymeleaf 作为前端的模板开发,发现在调试过程中,改动了Thymeleaf模板后,需要重新启 ...
- 解决_CRT_SECURE_NO_WARNINGS警告
VS中: 工程属性->属性->配置属性->C/C++->命令行 在命令行中添加一行: /D _CRT_SECURE_NO_WARNINGS OK!
- 任务调度--使用java.util.Timer实现
任务调度是指基于给定时间点,给定时间间隔或者给定执行次数自动执行任务. 举个例子,比如说我们希望一个系统每周日晚上9点都将数据库文件备份一次,这时我们就可以使用任务调度来实现.为了更加的方便,我们需要 ...
- BZOJ_1042_[HAOI2008]硬币购物_容斥原理+背包
BZOJ_1042_[HAOI2008]硬币购物_容斥原理+背包 题意: 硬币购物一共有4种硬币.面值分别为c1,c2,c3,c4.某人去商店买东西,去了tot次.每次带di枚ci硬币,买s i的价值 ...
- 用 fhq_Treap 实现可持久化平衡树
支持对历史版本进行操作的平衡树 Treap 和 Splay 都是旋来旋去的 这样平衡树可持久化听起来不太好搞? 还有 fhq_Treap ! 每次涉及操作就复制一个节点出来 操作历史版本就继承它的根继 ...
- Postman----Newman的使用
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #000000; background-color: #fffff ...
- WeTest----如何使用WeTest进行App性能测试?
使用Wetest可以测试手机app的性能,wetest主打游戏app测试,但是对于其余的app仍然适用,手机可以root,也可在非root的情况下进行测试, 此时可以获取的性能数据包括:FPS.整机C ...