關於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會是一個很好的選擇。

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

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進程導致其無法正常工作。

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

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

———————————— 華麗麗的分割線————————————————————————————

上面我們介紹了不打包的情況下怎么在手機上看到運行結果,這畢竟不能代替真正的運行環境。有可能打包發布運行之后還會在手機上出現各種各樣的問題,下面我們就將介紹如何在手機程序運行時查看Unity的日志文件。

其實,Unity在Android手機中運行時的所有日志可以通過Logcat捕獲到,我們還是可以通過adb工具很方便的在pc上看到游戲運行時打出的Log信息。

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>  


 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM