源码首先需要编译一次
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会自动导入一些东西,会引起编译错误。原因未明。知道原因的小伙伴,麻烦不吝赐教啦。
新闻热点
疑难解答