zoukankan      html  css  js  c++  java
  • 将Android系统源码导入Android studio的方法

    Android源码目录结构如下:

    |-- Makefile
    |-- abi (applicationbinary interface,应用程序二进制接口,生成libgabi++.so相关库文件)
    |-- art (google在4.4后加入用来代替Dalvik的运行时)
    |-- bionic (Android的C library,即C库文件)
    |-- bootable (启动引导相关代码)
    |-- build (存放系统编译规则及generic等基础开发配置包)
    |-- cts (Android兼容性测试套件标准)
    |-- dalvik (dalvik JAVA虚拟机)
    |-- developers (开发者用,存放几个例子)
    |-- development (开发者需要的一些例程及工具)
    |-- device (设备相关代码,这是各厂商需要配置和修改的代码)
    |-- docs (介绍开源相关文档)
    |-- external (android使用的一些开源的模组)
    |-- frameworks (核心框架——java及C++语言)
    |-- hardware (部分厂家开源的硬解适配层HAL代码)
    |-- kernel (驱动内核相关代码)
    |-- libcore (核心库相关)
    |-- libnativehelper (JNI用到的库)
    |-- ndk (ndk相关)
    |-- out (编译完成后的代码输出目录)
    |-- packages (应用程序包)
    |-- pdk (google用来减少碎片化的东西)
    |-- prebuilt (x86和arm架构下预编译的一些资源)
    |-- sdk (sdk及模拟器)
    |-- tools (工具)
    |-- system (底层文件系统库、应用及组件——C语言)
    |-- vendor (厂商定制代码)

    我们可以发现在源码根目录有个development文件夹,里面放了开发者需要的一些例程及工具,要将Android系统源码导入Android studio就需要用到里面的工具。

    首先导入系统源码需要占用大量的内存所以需要在Android studio安装目录下的bin文件夹中的studio64.exe.vmoptions或者studio.exe.vmoptions文件中中-Xms和-Xmx的值改大(根据电脑内存自行修改)。

    接下来,执行Android系统代码编译环境相关初始化命令后,执行下面命令:

    mmm development/tools/idegen/

    然后执行

    development/tools/idegen/idegen.sh

    等出现下面结果

    Read excludes: 13ms
    Traversed tree: 143977ms

    执行完后,会在源码的根目录下生成android.ipr和android.iml文件。使用Android studio打开android.ipr文件,就可以导入系统源码了。

    由于Android系统源码比较庞大,导入比较耗时,建议先修改android.iml排除一些代码,语法如下:

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

     比如,我只关注framework中的源码,我就可以把其他目录排除(其他目录只是以文件方式导入,其中的类之间不存在链接)。

    <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$/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$/packages" />
    <excludeFolder url="file://$MODULE_DIR$/pdk" />
    <excludeFolder url="file://$MODULE_DIR$/prebuilt" />
    <excludeFolder url="file://$MODULE_DIR$/prebuilts" />
    <excludeFolder url="file://$MODULE_DIR$/sdk" />
    <excludeFolder url="file://$MODULE_DIR$/system" />
    <excludeFolder url="file://$MODULE_DIR$/tools" />

    导入源码后如何设置源码依赖

    首先删除原来的依赖,只留下下图红框项

     

    把SDKs中不必要的SDK项删除,同时把Android API的classpath和sourcepath下的内容都删掉

    接着点击加号的JARs or directories将你源码的frameworks及external和你用到的其他跳转目录添加到依赖中,然后apply即可。

    参考:

    http://www.cnblogs.com/Lefter/p/4176991.html

    http://www.jianshu.com/p/c2389cb35565

  • 相关阅读:
    翻转链表二
    最短路径算法
    在二叉树中插入节点
    LightOJ 1341
    串的基本操作
    链队列的基本操作
    LightOJ 1370
    poj 3060 Visible Lattice Points
    欧拉函数介绍及简单模板
    zoj 3593 One Person Game
  • 原文地址:https://www.cnblogs.com/l2rf/p/6433773.html
Copyright © 2011-2022 走看看