如何使用Android Studio在安卓平臺對Unity開發的應用進行性能檢查?

0x00 前言

你們經常會抱怨安卓平臺沒有一個統1、好用的性能檢查工具。不能像iOS的instrument那樣方便。html

圖片來自:Instruments Helpnode

好比,Unity Blog在3年前就已經教你們如何使用instrument來進行性能檢測了。android

Profiling with Instruments – Unity Blog​blogs.unity3d.com圖標git

其實目前的Android Studio已經提供了很好的安卓平臺的性能檢查工具。github

api

這裏主要介紹CPU Profiler來檢查Unity原生函數的性能。就像iOS上的instrument同樣。app

圖形相關的性能檢測,可使用函數

0x01 導出設置

下文中我使用的Android Studio版本爲:3.5 preview,Unity版本爲:2018.3.0b11。測試工程爲:SurvivalShooter(Asset Store) 。工具

首先,根據android studio的文檔:性能

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

相關文章
相關標籤/搜索