關於Android真機調測Profiler

U3D中的Profile也是能夠直接在連接安卓設備運行遊戲下查看的,導出真機連接U3D的Profile看數據,這樣能更好的測試具體緣由。
 
大概看了下官方的作法,看了幾張帖子順帶把作法記錄下來。
 
參考:http://docs.unity3d.com/Documentation/Manual/Profiler.html
 
用安卓真機調測Profile的數據,其實就兩種方法,WIFI和ADB的方式。其實通常用的都是ADB方式,由於不多狀況是你的電腦與手機是在同一子網WIFI下的。除非是你我的的網絡。
 
備註:
若是你須要導出的遊戲在非導出的機子上PROFILE的話,最好在導出的機子隨便先導個帶PROFILE的空項目。這樣才能很容易連接上,否則是很麻煩的事情。
 
1.以WIFI的方式。
這個方法須要電腦所在的網絡和手機所在的網絡在同一子網下才能進行。
(1)導出U3D項目的時候勾選Profile,安裝遊戲到手機。
(2)打開遊戲的時候,同時打開window->profiler,而後選擇選擇輸入IP,連上便可。
 
 
2.以ADB的方式。
注意防火牆是否屏蔽掉了54998~55511端口,若屏蔽就打開。
(1)導出U3D項目的時候勾選Profile,安裝遊戲到手機。
(2)打開CMD命令行,cd到adb根目錄,而後輸入如下命令。將下面"這裏加你的包名"改成你遊戲打包出來的名,即Bundle Identifier。例如:com.Company.aaa。
     adb forward tcp:54999 localabstract:Unity-這裏加你的包名
 
(3)打開遊戲的時候,同時打開window->profiler,而後選擇選擇AndroidProfiler(ADB@127.0.0.1:54999),連上便可。
 

咱們在使用Unity開發安卓遊戲的時候,雖然能夠很方便的在編輯器裏直接啓動查看運行效果,可是編輯器的環境始終比不上真機顯示來的直接,並且有些操做,相似多點觸控等等操做,必需要在手機端才能觸發,若是咱們不想一遍遍的編譯apk安裝到手機上的話,Unity Remote會是一個很好的選擇。html

注意:Remote在手機上的運行結果並不能取代打包安裝以後運行的結果,他只是將編輯器的顯示圖像同步到了手機上,並經過手機接收輸入而已。因此開發完成以後,仍是要按照完整的流程進行測試。android

1)使用Unity Remote的第一步是本身的機器上安裝Android SDK和你使用手機的驅動。SDK下載地址請自行baidu,手機驅動通常能夠在對應品牌的官網找到。這裏要注意,若是你的手機系統版本是4.1以上的,請將SDK中的adb升級至最新版本,目前最新版本爲1.0.31,不然在adb鏈接手機的時候會出現設備始終offline的狀況。緩存

上面這些東西所有安裝完成以後,檢測是否安裝正確的方法是經過SDK中adb程序來檢測(在SDK目錄platform-tools文件夾下),在控制檯中進入到adb程序所在的目錄後輸入 adb devices 命令,若是看到設備正常鏈接,即全部準備工做安裝就緒。網絡

注意:若是你的電腦上裝有相似豌豆莢之類的PC端手機管理軟件,請在任務管理器中將他們所有關閉,由於相似軟件會劫持adb進程致使其沒法正常工做。tcp

2)關閉手機wifi(重要),打開手機的USB調試功能,在手機端安裝Unity Remote 並運行。編輯器

3)啓動Unity並在編輯器中直接點擊Play,不出之外的話你將會看到手機屏幕上也出現了相同的畫面。ide

———————————— 華麗麗的分割線————————————————————————————工具

上面咱們介紹了不打包的狀況下怎麼在手機上看到運行結果,這畢竟不能代替真正的運行環境。有可能打包發佈運行以後還會在手機上出現各類各樣的問題,下面咱們就將介紹如何在手機程序運行時查看Unity的日誌文件。測試

其實,Unity在Android手機中運行時的全部日誌能夠經過Logcat捕獲到,咱們仍是能夠經過adb工具很方便的在pc上看到遊戲運行時打出的Log信息。ui

1)首先第一步是在保證各類安裝環境都正常的狀況下連接手機並運行遊戲。

2)輸入adb logcat -s Unity 便可看到遊戲運行過程當中經過Debug.log打出的全部日誌信息。

目前貌似不支持斷點調試,但能夠經過日誌打印(logcat)來跟蹤。

 在android SDK中有個adb工具,使用此工具來跟蹤運行的android應用:

 

[cpp]  view plain copy
 
  1. adb logcat  


啓動logcat,並將設備上運行的android應用的運行時信息所有打印出來。

 

[cpp]  view plain copy
 
  1. adb logcat -s Unity  


若是隻想打印Unity的輸出信息,使用此命令。

 

[cpp]  view plain copy
 
  1. adb logcat -d > logcat.txt  


將打印信息輸出爲文件。

 

清除adb logcat緩存  

[cpp]  view plain copy
 
  1. adb logcat -c

 

固然,更直接的作法是在應用中集成本身的調試信息窗口,將以下代碼關聯到一個gameobject:

[csharp]  view plain copy
 
  1. <p>using UnityEngine;  
  2. using System.Collections;</p><p>public class GuiTextDebug : MonoBehaviour   
  3. {  
  4.  private float windowPosition = -440.0f;  
  5.  private int positionCheck = 2;  
  6.  private static string windowText = "";  
  7.  private Vector2 scrollViewVector = Vector2.zero;  
  8.  private GUIStyle debugBoxStyle;  
  9.    
  10.  private float leftSide = 0.0f;  
  11.  private float debugWidth = 420.0f;  
  12.    
  13.  public bool debugIsOn = false;  
  14.    
  15.  public static void debug(string newString)  
  16.  {  
  17.   windowText = newString + "\n" + windowText;  
  18.   UnityEngine.Debug.Log(newString);  
  19.  }  
  20.     
  21.  void Start()   
  22.     {  
  23.   debugBoxStyle = new GUIStyle();  
  24.   debugBoxStyle.alignment = TextAnchor.UpperLeft;  
  25.   leftSide = 120;  
  26.  }  
  27.     
  28.    
  29.  void OnGUI()   
  30.     {  
  31.   if (debugIsOn)   
  32.         {  
  33.    GUI.depth = 0;    
  34.    GUI.BeginGroup(new Rect(windowPosition, 40.0f, leftSide, 200.0f));  
  35.      
  36.    scrollViewVector = GUI.BeginScrollView(new Rect (0, 0.0f, debugWidth, 200.0f),   
  37.                                                    scrollViewVector,   
  38.                                                    new Rect (0.0f, 0.0f, 400.0f, 2000.0f));  
  39.    GUI.Box(new Rect(0, 0.0f, debugWidth - 20.0f, 2000.0f), windowText, debugBoxStyle);  
  40.    GUI.EndScrollView();  
  41.      
  42.    GUI.EndGroup ();  
  43.      
  44.    if (GUI.Button(new Rect(leftSide, 0.0f,75.0f,40.0f), "調試"))  
  45.             {  
  46.     if (positionCheck == 1)  
  47.                 {  
  48.      windowPosition = -440.0f;  
  49.      positionCheck = 2;  
  50.     }  
  51.     else   
  52.                 {  
  53.      windowPosition = leftSide;  
  54.      positionCheck = 1;  
  55.     }  
  56.    }  
  57.      
  58.    if (GUI.Button(new Rect(leftSide + 80f,0.0f,75.0f,40.0f),"清除"))  
  59.             {  
  60.     windowText = "";  
  61.    }  
  62.   }  
  63.  }  
  64. }  
  65. </p>  
相關文章
相關標籤/搜索