Android Studio导入AOSP源代码【亲测可行】
2019年6月8日从https://github.com/difcareer/AndroidSourceReader下载适合版本的项目文件,把三个文件放在WORKING_DIRECTORY
在Android Studio打开android.ipr文件。打开com/android/server/am/ActivityManagerService.java
WORKING_DIRECTORY/frameworks/base/services/core/java/com/android/server/am/ActivityManagerService.java
IDE提示设置SDK。设置SDK为1.8 no libraries。
然后IDE显示非常多红线。
打开Project Structure,在dependencies里删除所有项目,只剩下Module source和1.8 (no libraries)。[1]
打开Android Studio设置,取消选中Show code lens on scrollbar hover。
仍然有API level错误。我不知道怎么解决,只好先把这项检查关掉。在错误提示显示时,按ctrl+F1,会展开错误提示,最后写着issueid。发现这两个issue id是NewApi和InlinedApi。在settings->Editor->Inspections,把这两项检查关掉。
可选,该设置只应用到单个文件:在滚动条顶端右击,选择Customize Highlighting Level,滑动到Syntax。
打开WORKING_DIRECTORY/frameworks/base/core/java/android/app/ActivityManager.java
android/app/ActivityManager.java
IDE报告错误Duplicate class。
Duplicate class found in the file ‘WORKING_DIRECTORY/out/target/common/obj/JAVA_LIBRARIES/android_system_stubs_current_intermediates/src/android/app/ActivityManager.java’
用好一点的编辑器打开android.iml,找到
<sourceFolder url="file://$MODULE_DIR$/out/target/common/obj/JAVA_LIBRARIES/android_system_stubs_current_intermediates/src" isTestSource="false" />
把这行删掉。在Android Studio里Close Project,重开。
打开Navigate->File,输入ActivityManagerService,发现ActivityManagerService.class也在项目中,应予以排除。
WORKING_DIRECTORY/out/target/common/obj/JAVA_LIBRARIES/services.core_intermediates/classes/com/android/server/am/ActivityManagerService.class
WORKING_DIRECTORY/out/target/common/obj/JAVA_LIBRARIES/services_intermediates/classes/com/android/server/am/ActivityManagerService.class
很奇怪iml文件根本没有include这些文件夹,但它们还是被当做在项目里。只好在content节点最后添加一行
<excludeFolder url="file://$MODULE_DIR$/out/target/common/obj/JAVA_LIBRARIES/" />
打开frameworks/base/core/java/android/util/Log.java,发现这个类与/home/qiqi/Project/WORKING_DIRECTORY/packages/inputmethods/LatinIME/tools/dicttool/compat/android/util/Log.java重复,在iml文件里删除
<sourceFolder url="file://$MODULE_DIR$/packages/inputmethods/LatinIME/tools/dicttool/compat" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/packages/inputmethods/LatinIME/tools/dicttool/src" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/packages/inputmethods/LatinIME/tools/dicttool/tests" isTestSource="true" />
删除这些路径不是最好的办法。按照Visual Studio的解决方案结构,dicttool应该是一个单独项目。我目前不清楚怎么在Android Studio设置。
参考资料
- Shuhao Wu. Setting up Intellij with CyanogenMod/AOSP development. . 2014-04-27 [2019-06-08].↑
Thank you for testing the SQL injection!