-
1. 导入需要开发的模块
2. 配置Android Sdk并且加载src,支持android studio里面的java文件跳转
这一步可以加载其他模块,比如我把package目录、system目录等模块加载进来,注意,每次加载之后,都要用下面的方式,让模块中的java类重新生成下依赖,否则,不会实现跳转
这样做是为了重新加载.java文件,添加索引,这样之后,点击ctrl+鼠标左键 直接跳转过去
下面我们还需要给模块配置SDK,这个SDK需要把.jar去除,否则,跳转的时候,会跳转到Android 自带的sdk中的.class文件中,而不跳转到我们自己的代码
删除SDK中的jar包
这一部是防止跳转的时候,跳转到sdk中的class文件中去
此时有可能会出现String和其他一些类找不到的情况,
一般情况下,我还添加/out/target/common/obj/JAVA_LIBRARIES/android_system_stubs_current_intermediates/下的资源,这个里面有基本库,String类等
也可以导入libcore/ojluni,这个里面包含了常用库,也会最终生成/out/target/common/obj/JAVA_LIBRARIES/android_system_stubs_current_intermediates/
注意:
在开发系统的时候,有时候,代码中会有一些相同名的文件名,为了规避跳转到不对应的地方,我们需要把不需要的文件名Exclude掉
比如下图,framework/base/package/SystemUI 并不是我们编译进系统的SystemUI
真正的地方在Vendor下面,
那我们可以把framework下的SystemUI给Exclude掉
3. debug调试
首先要保证你刷机的镜像和本地的代码保持一致,否则会出现代码无法识别的情况
支持打断点,还需要添加一下Facets,随便选一个模块添加就行,添加完成后,能直接在Android Studio中查看logcat和进行单步debug
这样就可以跟正常的app 应用开发打断点了
正常情况下,如果你选择的进程不是对应的代码,那前面的小红点不会有变化。
如果你选择debug的进程对应了你所需要调试的代码,前面的小红点会打钩。
此时,你就可以进行断点,如果程序运行到断点位置,就会停下来。
此时通过F5、F6、F7等就可以调试。和普通的断点调试没有任何区别
注意:
有可能调试模块的时候出现能调试全局变量,但是不能调试局部变量的情况,此时有可能是因为你的代码进行了混淆。
我们只需要在Android.mk文件中,把代码混淆去掉,重新编译就行了
- 指定不需要混淆的native方法与变量的proguard.flags文件如:LOCAL_PROGUARD_FLAG_FILES := proguard.flags
- 制定编译的工程,不要使用代码混淆的工具进行代码混淆如:LOCAL_PROGUARD_ENABLED := disabled
- 不设置,默认使用LOCAL_PROGUARD_ENABLED := full.即将该工程代码全部混淆
4. Profile 分析
使用Profile分析需要配置
file → project structure → Project Settings → Modules → 添加 → Apk
配置config
配置完之后,就能使用Profile功能了