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