如何使用Android Studio在安卓平台對Unity開發的應用進行性能檢查?
前言
大家常常會抱怨安卓平台沒有一個統一、好用的性能檢查工具。不能像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=enSampled (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