1. 程式人生 > 實用技巧 >UE4 Android Studio除錯

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後,彈出工程對話方塊,左邊列出開啟過的專案工程,雙擊即可開啟

右邊是一些功能選單項:可新建、開啟和匯入一個專案工程

使用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

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目錄中拷貝一份

程式碼路徑對映

如果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"/>

Visual Studio除錯APK

值得一提的是,Visual Studio安裝了Android移動開發元件後,也可以除錯APK 詳見:UE4 Android聯機除錯

參考

Android除錯en

除錯預構建的 APK

UE4引擎在Android下的C++除錯