• Android Studio 导入 AOSP 源码


    有了 AOSP 源码,接下来就是如何看了,可以直接文本看,可以用 Source Insight,我当然选择 Android Studio,Android Studio 是我熟悉且十分强大的工具。问题来了,如何将 AOSP 源码导入 Android Studio?

    安装 Java

    虚拟机新装的 Ubutun 一开始是没有 Java 的,需要先安装,输入命令java,报以下错误:

    Command 'java' not found, but can be installed with:
    
    sudo apt install default-jre
    sudo apt install openjdk-11-jre-headless
    sudo apt install openjdk-8-jre-headless
    

    输入以上命令进行安装,然后整编(关于整编和单编下节细讲)代码又报错:

    Your version is: openjdk version "10.0.1" 2018-04-17 OpenJDK Runtime Environment (build 10.0.1+10-Ubuntu-3ubuntu1) OpenJDK 64-Bit Server VM (build 10.0.1+10-Ubuntu-3ubuntu1, mixed mode).
    The required version is: "1.8.x"
    

    提示 Java 版本只能是 1.8.x,需要指定 Java 版本:

    sudo update-alternatives --config java
    

    输出:

    有 2 个候选项可用于替换 java (提供 /usr/bin/java)。
    
    选择 路径 优先级 状态
    ------------------------------------------------------------
    * 0 /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1101 自动模式
    1 /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1101 手动模式
    2 /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java 1081 手动模式
    
    要维持当前值[*]请按<回车键>,或者键入选择的编号:2
    
    

    拓展

    JDK 也有门派之分的,那就是 Open JDK 和 Oacle JDK,其实我刚开编译时,用的是 Oracle JDK,整编报错:

    You asked for an OpenJDK based build but your version is
    java version "1.8.0_181" Java(TM) SE Runtime Environment (build 1.8.0_181-b13) Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode).
    

    idegen.jar

    在 Ubuntu 系统下,进入源码根目录,运行如下命令:

    source build/envsetup.sh
    mmm development/tools/idegen/
    

    报错:

    Command 'make' not found, but can be installed with:
    
    sudo apt install make
    sudo apt install make-guile
    

    命令安装 make 成功后,再次运行mmm development/tools/idegen/,会在源码目录下的 out/host/linux-x86/framework目录下生成了 idegen.jar 文件。

    如果命令 mmm development/tools/idegen/ 一直报错,可以尝试一下命令 make idegen 依赖编译下。

    android.iml 和 android.ipr

    在源码目录下继续执行如下命令:

    development/tools/idegen/idegen.sh
    

    会在根目录下生成
    android.iml 和 android.ipr 这两个文件,这两个文件是 Android Studio 的工程配置文件,这时候其实已经可以直接导入 Android Studio,但会导入所有的源码模块,会很慢,可以进行过滤,除了 frameworks 模块和 packages 模块,其他都给过滤掉,不导入 Android Studio,打开 android.iml 文件,搜下excludeFolder,在后面加入如下代码:

    <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$/hardware" />
    <excludeFolder url="file://$MODULE_DIR$/kernel" />
    <excludeFolder url="file://$MODULE_DIR$/libcore" />
    <excludeFolder url="file://$MODULE_DIR$/libnativehelper" />
    <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 Studio

    我把 Android 源码拷到我的 Mac 上,打开 Android Studio,选择 Open an existing Android Studio project,找到源码目录,点击 Android.ipr,Open,大约等 6 分钟,导入完毕,Enjoy coding

    问题

    发现 Android Studio 不停 scanning files to index,我的强迫症又犯了,解决:

    1 invalidate and restart 不起作用;

    2 右击项目 --> Open module setting --> Modules --> 找到 gen 文件夹 --> 右键选择 Resources,终于告别烦人的 scanning files to index。

    系列博客

    VirtualBox 安装 Ubuntu

    AOSP 源码下载

    AOSP 源码整编单编

    参考

    https://blog.csdn.net/HQZ820844012/article/details/80461196

    https://www.jianshu.com/p/fb16fa459acf

    https://blog.csdn.net/shisanmei911/article/details/79761569

    公众号

    我的公众号:吴小龙同学,欢迎关注交流~

  • 相关阅读:
    我的第一颗二叉链树的笔记
    我的kmp笔记
    链表操作笔记
    POJ 2559 Largest Rectangle in a Histogram (单调栈)
    牛客网 wyh的数列(循环节+快速幂)
    数论知识点
    牛客网 n的约数 (唯一分解定理)
    POJ 3783 Balls (DP)
    关于unordered_map和map
    2018年四校联合周赛-第二场 B.异或和问题(二维树状数组)
  • 原文地址:https://www.cnblogs.com/WuXiaolong/p/10440726.html
Copyright © 2020-2023  润新知