type
status
date
slug
summary
tags
category
icon
password
之前说过使用VSCode阅读AOSP源码的方法,但是作为Android开发,还是对Android Studio熟悉一些,这里看下如何使用Android Studio查看AOSP源码.
如果你之前没完整的编译过AOSP,可以按照下面的流程进行配置:
第一步
source build/envsetup.sh make idegen
如果这一步成功了,没有报错,那么恭喜你,可以继续下一步了,如果报错了,到文章后面查看有没有你遇到的问题.
第二步
sudo ./development/tools/idegen/idegen.sh
这一步会在根目录下生成
android.ipr
和android.iml
两个文件第三步
使用Android Studio,选择
Open an existing Android Studio Project
打开上面生成的android.ipr
文件即可第四步
这一步要设置下JDK以及SDK:
这里需要按照自己下载的源码版本选择对应的SDK.
这一步需要新建一个不带classpath的JDK(点击+号,新建一个,改个名字,然后删除classpath就行),这个操作的话就会使用AOSP中的JDK环境了.
调试源码
可以找个模拟器,比如Genymotion,启动模拟器,然后在Android Studio里面选择对应的进程,就可以正常的进行调试了:
按需加载源码
如果一次性将所有源码都加载到Android Studio,第一次索引时间可能会非常久(半个小时都有可能).这个时候可以修改
android.iml
来让Android Studio不要加载哪些模块:在
android.iml
中搜索excludeFolder
,然后在下面新增一些你不想加载的模块即可:<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$/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$/hardware" /> <excludeFolder url="file://$MODULE_DIR$/kernel" /> <excludeFolder url="file://$MODULE_DIR$/out" /> <excludeFolder url="file://$MODULE_DIR$/pdk" /> <excludeFolder url="file://$MODULE_DIR$/platform_testing" /> <excludeFolder url="file://$MODULE_DIR$/prebuilts" /> <excludeFolder url="file://$MODULE_DIR$/sdk" /> <excludeFolder url="file://$MODULE_DIR$/system" /> <excludeFolder url="file://$MODULE_DIR$/test" /> <excludeFolder url="file://$MODULE_DIR$/toolchain" /> <excludeFolder url="file://$MODULE_DIR$/tools" /> <excludeFolder url="file://$MODULE_DIR$/.repo" />
当然,如果你的电脑性能非常好,可以不用修改这些,一次性加载就行
如果不想手动修改
android.iml
文件,还可以在Android Studio中操作:被你排除的module会显示为橙色,正常加载的module为灰色.
可能会遇到的问题
- Could not find a supported mac sdk: ["10.10" "10.11" "10.12" "10.13" "10.14"]
在我的Macbook Pro上是出现了这个问题的,其实就是当前AOSP的soong编译工具还不支持MacOS 10.15,而我使用的正好是10.15,因此找到
build/soong/cc/config/x86_darwin_host.go
文件,并新增10.15支持即可:darwinSupportedSdkVersions = []string{ "10.10", "10.11", "10.12", "10.13", "10.14", "10.15", }
结尾那个逗号一定要带上,要不然会报错
如果你不知道自己当前使用的sdk版本,可以使用下面的命令:
find /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs -iname "*.sdk"
- Java代码跳转错误
比如
ActivityThread
中有:import static android.app.ActivityManager.PROCESS_STATE_UNKNOWN;
一般不处理会“飘红”报错,那是因为引用的
ActivityManager
路径错了,引用到了test中去了.有两种解决办法:
android.iml
中的<oderEntry>
和 <sourceFolder>
,对于不需要的module先exclude
exclude
无效再查看<orderEntry>
,再不行就删除对应的<sourceFolder>
把dependencies里一些乱七八糟的依赖都删掉,一劳永逸.(如果害怕删错了,可以找到对应的jar包删除)
参考文章
- 作者:姜康
- 链接:https://jiangkang.tech/article/d3c6c1df-9cec-408f-b570-adb4a9021c76
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
相关文章