Android Studio 导入源码模块并debug

Android Studio 导入源码模块并debug

做系统开发,经常需要导入源码,但是导入全部源码又太卡了,这时候,有什么办法只导入我们需要修改的模块呢。答案是肯定的。
导入所有源码的方法,参见如何使用Android Studio开发/调试Android源码

1. 导入需要开发的模块

在这里插入图片描述

2. 配置Android Sdk并且加载src,支持android studio里面的java文件跳转

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

这样做是为了重新加载.java文件,添加索引,这样之后,点击ctrl+鼠标左键 直接跳转过去
在这里插入图片描述
在这里插入图片描述
删除SDK中的jar包
这一部是防止跳转的时候,跳转到sdk中的class文件中去
在这里插入图片描述
此时有可能会出现String和其他一些类找不到的情况,
一般情况下,我还添加/out/target/common/obj/JAVA_LIBRARIES/android_system_stubs_current_intermediates/下的资源,这个里面有基本库,String类等

注意:

在开发系统的时候,有时候,代码中会有一些相同名的文件名,为了规避跳转到不对应的地方,我们需要把不需要的文件名Exclude掉
比如下图,framework/base/package/SystemUI 并不是我们编译进系统的SystemUI
真正的地方在Vendor下面,
那我们可以把framework下的SystemUI给Exclude掉
在这里插入图片描述

3. debug调试

首先要保证你刷机的镜像和本地的代码保持一致,否则会出现代码无法识别的情况
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这样就可以跟正常的app 应用开发打断点了

正常情况下,如果你选择的进程不是对应的代码,那前面的小红点不会有变化。
如果你选择debug的进程对应了你所需要调试的代码,前面的小红点会打钩。
此时,你就可以进行断点,如果程序运行到断点位置,就会停下来。
此时通过F5、F6、F7等就可以调试。和普通的断点调试没有任何区别

重启android

	root@android:/system/vendor/modules # ps |grep servicemanager

	system 1250 1 892 336 c04193a8 400a6fe8 S /system/bin/servicemanager 

	root@android:/system/vendor/modules # kill -9 1250 

如果只是杀死servicemanager这个进程,则只重启android
或者在 adb shell进去,然后stop -> start 也可以进行重启

注意:
有可能调试模块的时候出现能调试全局变量,但是不能调试局部变量的情况,此时有可能是因为你的代码进行了混淆。
我们只需要在Android.mk文件中,把代码混淆去掉,重新编译就行了
指定不需要混淆的native方法与变量的proguard.flags文件如:LOCAL_PROGUARD_FLAG_FILES := proguard.flags
制定编译的工程,不要使用代码混淆的工具进行代码混淆如:LOCAL_PROGUARD_ENABLED := disabled
不设置,默认使用LOCAL_PROGUARD_ENABLED := full.即将该工程代码全部混淆

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值