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聯機除錯
參考