首页 > 系统 > Android > 正文

Android Studio 调试、开发Framework源码

2019-11-09 17:20:34
字体:
来源:转载
供稿:网友

源码首先需要编译一次

cd <phoenix_root>source build/envsetup.shlunch aosp_flounder-userdebug(flounder:Nexus 9 flo Nexus 7二代 grouper Nexus 7一代)

编译

全部编译:

make -j16(-j16 CPU核数)

生成android.ipr和android.iml文件

进入源码根目录

执行:

这行命令的意思是编译idegen这个项目,生成idegen.jar文件.生成成功后,会显示这个jar包的位置,并显示 #### make completed successfully

mmm development/tools/idegen/

执行:

这行命令的意思是生成对应的文件:android.iws, android.iPR, android.iml

sh ./development/tools/idegen/idegen.sh

使用Android Studio debug

File–>Open–>找到源码目录,打开android.ipr文件,Studio就会开始索引源码

过滤不需要的目录,加快索引速度:

修改android.iml文件,可以去除或者添加需要Studio进行索引的目录,仿照下列标签配置,可以指定不需要索引的目录。

<excludeFolder url="file://$MODULE_DIR$/.repo" /><excludeFolder url="file://$MODULE_DIR$/abi" />

到达这一步,源码可以看了,但是还不能调试:

细心地读者可能会发现Attach debugger to Android process按钮还不能启用。

我们需要修改android.iml文件。

在文件开头寻找

“<component name="NewModuleRootManager" inherit-compiler-output="true">”

在上述代码的前面加入下面的内容:

<component name="FacetManager"> <facet type="android" name="Android"> <configuration /> </facet></component>去除不需要debug的<sourceFolder/>标签内容

删除所有标签

保留以下两个:

<orderEntry type="sourceFolder" forTests="false" /><orderEntry type="jdk" jdkName="Android API 22 Platform" jdkType="Android SDK" />

下面是修改的代码模板(大家可以仿照这个格式进行修改)

<?xml version="1.0" encoding="UTF-8"?> <module relativePaths="true" type="java_MODULE" version="4"> <component name="FacetManager"> <facet type="android" name="Android"> <configuration /> </facet> </component> <component name="NewModuleRootManager" inherit-compiler-output="true"> <exclude-output /> <content url="file://$MODULE_DIR$"> <!--sourceFolder标签表示需要索引的代码目录--> <sourceFolder url="file://$MODULE_DIR$/frameworks/base/core/java" isTestSource="false" /> <sourceFolder url="file://$MODULE_DIR$/gen" isTestSource="false" generated="true" /> <!--excludeFolder标签表示这个目录下所有内容都不索引--> <excludeFolder url="file://$MODULE_DIR$/.repo" /> <excludeFolder url="file://$MODULE_DIR$/abi" /> <excludeFolder url="file://$MODULE_DIR$/art" /> <excludeFolder url="file://$MODULE_DIR$/bionic" /> <excludeFolder url="file://$MODULE_DIR$/bootable" /> <excludeFolder url="file://$MODULE_DIR$/build" /> <excludeFolder url="file://$MODULE_DIR$/cts" /> <excludeFolder url="file://$MODULE_DIR$/dalvik" /> <excludeFolder url="file://$MODULE_DIR$/developers" /> <excludeFolder url="file://$MODULE_DIR$/development" /> <excludeFolder url="file://$MODULE_DIR$/device" /> <excludeFolder url="file://$MODULE_DIR$/docs" /> <excludeFolder url="file://$MODULE_DIR$/external" /> <excludeFolder url="file://$MODULE_DIR$/external/bluetooth" /> <excludeFolder url="file://$MODULE_DIR$/external/chromium" /> <excludeFolder url="file://$MODULE_DIR$/external/emma" /> <excludeFolder url="file://$MODULE_DIR$/external/icu4c" /> <excludeFolder url="file://$MODULE_DIR$/external/jdiff" /> <excludeFolder url="file://$MODULE_DIR$/external/webkit" /> <excludeFolder url="file://$MODULE_DIR$/frameworks/base/docs" /> <excludeFolder url="file://$MODULE_DIR$/frameworks/base/tests" /> <excludeFolder url="file://$MODULE_DIR$/frameworks/base/tools" /> <excludeFolder url="file://$MODULE_DIR$/hardware" /> <excludeFolder url="file://$MODULE_DIR$/libcore" /> <excludeFolder url="file://$MODULE_DIR$/libnativehelper" /> <excludeFolder url="file://$MODULE_DIR$/ndk" /> <excludeFolder url="file://$MODULE_DIR$/out" /> <excludeFolder url="file://$MODULE_DIR$/pdk" /> <excludeFolder url="file://$MODULE_DIR$/platform_testing" /> <excludeFolder url="file://$MODULE_DIR$/prebuilt" /> <excludeFolder url="file://$MODULE_DIR$/sdk" /> <excludeFolder url="file://$MODULE_DIR$/tools" /> <excludeFolder url="file://$MODULE_DIR$/vendor" /> <excludeFolder url="file://$MODULE_DIR$/toolchain" /> <excludeFolder url="file://$MODULE_DIR$/system" /> <excludeFolder url="file://$MODULE_DIR$/prebuilts" /> <excludeFolder url="file://$MODULE_DIR$/phoenix" /> </content> <orderEntry type="sourceFolder" forTests="false" /> <orderEntry type="jdk" jdkName="Android API 22 Platform" jdkType="Android SDK" /> </component> </module>

如果想要在IDE中修改源码,需要关闭Android Studio的auto import功能,否则IDE会自动导入一些东西,会引起编译错误。原因未明。知道原因的小伙伴,麻烦不吝赐教啦。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表