UE4 Android Studio調試


Android Studio(wiki:en  chs)是Google為Android應用開發(支持Java及NDK開發)而制作的一款跨平台IDE(可在Windows、OS X和Linux平台上運行)

基於Gradle構建,並內置了Android SDK和AVD管理器。下載地址:https://developer.android.com/studio 

首先要注意的是:Android Studio打開或調試項目,會從網上拉取一些文件(放在當前用戶的文件夾中,見下圖),因此,在運行Android Stuido時要把上網代理打開,保證能訪問google等網站

 

啟動Android Stuido后,彈出工程對話框,左邊列出打開過的項目工程,雙擊即可打開

右邊是一些功能菜單項:可新建、打開和導入一個項目工程

 

重要

使用當前的Android Studio4.0.1版本,調試Development版本的游戲包時,放置的斷點有時會出現不生效(可能是優化后,斷點和代碼行出現了不一致),另外,一些局部變量會被優化掉,導致看不到它的值

要避免上述問題,目前只能打Debug版本包來調試

 

Android Studio全局Android SDK路徑配置      見:菜單File -- Settings...

 

查看項目相關的SDK Location     注:該信息為項目私有,非Android Studio的全局配置       見:菜單File -- Project Structure...

 

使用ue4 Android工程進行調試

這種調試方式需要自己打ue4的Android包,在本地生成出gradle android工程

1. 點擊Open an existing Android Studio project,選擇並打開ue4項目的%GameDir%\Intermediate\Android\APK\gradle目錄

注:如果是首次使用AndroidStudio,會觸發一些文件的下載,可能會卡幾分鍾

 

2. 設置調試的類型與lldb調試器腳本

點擊菜單“Run” -- “Edit Configurations”

Debug type設置為Dual (Java + Native),使得可同時調試java代碼和c++代碼

LLDB Startup Commands設置為:command script import "C:\svn\UnrealEngine\Engine\Extras\LLDBDataFormatters\UE4DataFormatters.py"  可使用更友好的方式來查看ue4數據類型

注1:Java代碼所在目錄:Intermediate\Android\APK\gradle\app\src\main\java    下圖為ue4引擎自帶的java代碼生成得到的

 

在手機上裝好apk包,連接好手機線,就可以調試apk應用了

 

注1:如果是首次使用AndroidStudio,這個步驟也會觸發一些文件的下載,可能會卡幾分鍾  如:系統庫調試符號文件,會放在C:\Users\<當前用戶>\.lldb\module_cache\remote-android目錄中

注2:在直接運行、調試運行、Attach時,彈出如下對話框,可將-Xmx修改為8000,然后重啟Android Studio

注3:-Xms<size>        // 設置初始 Java 堆大小
         -Xmx<size>        // 設置最大 Java 堆大小
         -Xss<size>        // 設置 Java 線程堆棧大小

 

Debug 'app-app'來調試啟動apk

Native堆棧

Java堆棧

 

Attach Debugger to Android Process

選擇Debugger為Dual (Java + Native),並選擇要調試的應用

Native堆棧

Java堆棧

 

Debug APK

點擊工程對話框右邊的“Debug or profile APK”,選擇一個apk,會在C:\Users\<當前用戶>\ApkProjects新建一個apk的項目工程

 

配置libUE4.so文件對應的符號版本的libUE4.so(Intermediate\Android\APK\gradle\app\build\intermediates\jniLibs\debug\arm64-v8a\libUE4.so)

注:Intermediate\Android\APK\gradle\app\build\intermediates\jniLibs\debug\arm64-v8a\libUE4.so也會往Binaries\Android目錄中拷貝一份

 

Debug APK調試app啟動階段方法

然后用Android Stuido附加到app上進行調試

 

代碼路徑映射

如果APK的c++代碼在D:\UAGroup中,而本地的C++代碼在E:\MyProject中,可通過建立軟鏈接來將E:\MyProject目錄映射到D:\UAGroup

將映射后目錄的c++代碼拖入Android Studio中,就可以放置斷點進行調試

mklink /j "D:\UAGroup" "E:\MyProject"

 

Default Activity not found

原因1:Default Activity需要設置其action為"android.intent.action.MAIN",category設置為"android.intent.category.LAUNCHER

<activity android:debuggable="true" android:label="@string/app_name" android:launchMode="singleTask" android:name="com.epicgames.ue4.SplashActivity" android:screenOrientation="landscape" android:theme="@style/UE4SplashTheme">
       <intent-filter>
            <action android:name="android.intent.action.MAIN"/>
            <category android:name="android.intent.category.LAUNCHER"/>
       </intent-filter>
 </activity>

原因2:點擊菜單“File” -- “Invalidate Caches / Restart”,然后重啟編輯器

原因3:AndroidManifest.xml不合規范,如:在權限申請里面有permission節點

<permission android:name="com.tencent.mf.uam.permission.XGPUSH_RECEIVE" android:protectionLevel="signature"/>
<uses-permission android:name="com.tencent.mf.uam.permission.XGPUSH_RECEIVE"/>

 

Entry name 'META-INF/android.arch.lifecycle_extensions.version' collided

UE4的Gradle項目的Gradle版本與本機安裝的Gradle版本不一致

 

10/19 10:19:59: Launching 'app' on Xiaomi Mi 10.
Timed out waiting for process (com.tencent.mf.uam) to appear on xiaomi-mi_10-f2f53b9e.

無法拉起app進行調試

解決方法:在手機上卸載掉app,然后調試啟動,讓android studio自己安裝app

更多請參考:Timed out waiting for process to appear on device

 

Visual Studio調試APK

值得一提的是,Visual Studio安裝了Android移動開發組件后,也可以調試APK   詳見:UE4 Android聯機調試

 

參考

Android調試en

調試預構建的 APK

UE4引擎在Android下的C++調試 

 


免責聲明!

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



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