精华内容
下载资源
问答
  • Android源码编译

    2016-10-31 00:36:57
    Android 源码 编译需要哪些准备操作
  • android源码编译

    2016-10-11 15:20:18
    android源码编译命令

    整体编译

            1. 在源码目录下执行. build/envsetup.sh

            2.执行lunch 命令lunch

            3.执行make命令make -j16

            用16个线程编译整个源码,清除之前编译的结果需在源目录下执行make clean

    模块化编译

           模块化编译需要对应的模块下有Android.mk文件

           mm 对当前文件文件夹下的所有文件进行编译

           mmm file 编译file(file中需要有Android.mk文件)

    make输出

                make n& >file将编译信息输入到file

            n=0 标准输入

            n=1 标准输出

            n=2 标准错误信息输出

    展开全文
  • Android源码编译.html

    2021-04-12 13:24:29
    Android源码编译
  • Android源码编译速度优化 -- ccache设置

    万次阅读 2021-02-04 16:32:23
    Android源码编译时,设置ccache可有效的降低编译时间。 谷歌给出的指导方法(优化编译环境章节):点击进入 2. 方法 要想长久方便使用,需要将以下环境 变量写入/etc/profile或者~/.bashrc中 export USE_CCACHE=1 ...

    1. 前言

    Android源码编译时,设置ccache可有效的降低编译时间。
    谷歌给出的指导方法(优化编译环境章节):点击进入

    2. 方法

    要想长久方便使用,需要将以下环境 变量写入/etc/profile或者~/.bashrc

    export USE_CCACHE=1
    export CCACHE_DIR=/<path_of_your_choice>/.ccache
    

    其中<path_of_your_choice>是要设置ccache缓存的目录,如果不设置,则默认缓存到~/.ccache中。
    然后进入Android源码的编译目录,执行:

    prebuilts/misc/linux-x86/ccache/ccache -M 50G
    

    后面继续执行:

    source build/envsetup.sh
    lunch xxxxx
    make -j16 V=s
    

    编译系统即可。

    3. 备注

    第一次编译时间可能会有点长,后面编译实测速度会增加。
    上面的设置会永久存储在CCACHE_DIR中。
    可通过ccache -s查看缓存使用情况,如下图:

    cache directory                     /<path_of_your_choice>/.ccache
    cache hit (direct)                 80773
    cache hit (preprocessed)              98
    cache miss                         37495
    called for link                     4536
    unsupported source language         4221
    files in cache                    115179
    cache size                          14.1 Gbytes
    max cache size                     100.0 Gbytes
    
    展开全文
  • Android 源码编译

    2011-08-01 22:17:25
    Ubuntu 11.04 编译Android 源码,并验证编译的成功性。
  • Android 源码编译过程

    2014-05-13 09:55:41
    Android 源码编译过程, 编译过程中标准输出
  • 主要介绍了解决Android 源码编译错误的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • Android源码编译过程及刷机过程详解

    万次阅读 2020-09-01 13:55:35
    本文将详细介绍Android源码编译过程,以及编译完成后如何进行刷机。

    Android编译环境进行初始化


    我们完成AOSP源码下载之后,就可以准备源码进行编译了。但编译之前,首先要对编译环境进行初始化工作。

    在这个过程中,主要是指定编译的类型和目标设备的型号。

    Android的编译类型主要有eng、userdebug和user三种,而支持的目标设备型号则是不确定的,它们由当前的源码配置情况所决定。为了确定源码支持的所有目标设备型号,Android编译系统在初始化的过程中,需要在特定的目录中加载特定的配置文件。

    清除缓存(如果需要的话)

    如果之前执行过编译工作,或者编译出错了,可以执行清除命令:

    $ make clobber
    

    执行envsetup.sh,配置编译环境

    打开一个终端(bash),cd到源码根目录,并且将build/envsetup.sh加载到该终端中:

    $ source build/envsetup.sh
    或
    $ . ./build/envsetup.sh 
    
    including device/generic/car/vendorsetup.sh
    including device/generic/mini-emulator-arm64/vendorsetup.sh
    including device/generic/mini-emulator-armv7-a-neon/vendorsetup.sh
    including device/generic/mini-emulator-mips/vendorsetup.sh
    including device/generic/mini-emulator-mips64/vendorsetup.sh
    including device/generic/mini-emulator-x86/vendorsetup.sh
    including device/generic/mini-emulator-x86_64/vendorsetup.sh
    including device/generic/uml/vendorsetup.sh
    including device/google/crosshatch/vendorsetup.sh
    including device/google/cuttlefish/vendorsetup.sh
    including device/google/marlin/vendorsetup.sh
    including device/google/muskie/vendorsetup.sh
    including device/google/taimen/vendorsetup.sh
    including device/linaro/hikey/vendorsetup.sh
    including sdk/bash_completion/adb.bash
    

    我们来看命令的输出,文件build/envsetup.sh在加载的过程中又会加载一些其他文件。

    • 在device目录中加载那些名称为vendorsetup.sh的文件。

    • 在sdk/bash_completion目录下的adb.bash文件也会加载到当前终端来。

      它是用来实现adb命令的bash completion功能的。也就是说,加载了该文件之后,我们在运行adb相关的命令的时候,通过按tab键就可以帮助我们自动完成命令的输入。

    执行lunch命令

    执行命令lunch,选择编译的目标:

    $ lunch
    
    You're building on Darwin
    
    Lunch menu... pick a combo:
         1. aosp_arm-eng
         2. aosp_arm64-eng
         3. aosp_mips-eng
         4. aosp_mips64-eng
         5. aosp_x86-eng
         6. aosp_x86_64-eng
         7. aosp_car_arm-userdebug
         8. aosp_car_arm64-userdebug
         9. aosp_car_x86-userdebug
         10. aosp_car_x86_64-userdebug
         11. mini_emulator_arm64-userdebug
         12. m_e_arm-userdebug
         13. m_e_mips-userdebug
         14. m_e_mips64-eng
         15. mini_emulator_x86-userdebug
         16. mini_emulator_x86_64-userdebug
         17. uml-userdebug
         18. aosp_crosshatch-userdebug
         19. aosp_blueline-userdebug
         20. aosp_cf_x86_auto-userdebug
         21. aosp_cf_x86_phone-userdebug
         22. aosp_cf_x86_tablet-userdebug
         23. aosp_cf_x86_tablet_3g-userdebug
         24. aosp_cf_x86_tv-userdebug
         25. aosp_cf_x86_wear-userdebug
         26. aosp_cf_x86_64_auto-userdebug
         27. aosp_cf_x86_64_phone-userdebug
         28. aosp_cf_x86_64_tablet-userdebug
         29. aosp_cf_x86_64_tablet_3g-userdebug
         30. aosp_cf_x86_64_tv-userdebug
         31. aosp_cf_x86_64_wear-userdebug
         32. cf_x86_auto-userdebug
         33. cf_x86_phone-userdebug
         34. cf_x86_tablet-userdebug
         35. cf_x86_tablet_3g-userdebug
         36. cf_x86_tv-userdebug
         37. cf_x86_wear-userdebug
         38. cf_x86_64_phone-userdebug
         39. cf_x86_64_tablet-userdebug
         40. cf_x86_64_tablet_3g-userdebug
         41. cf_x86_64_tv-userdebug
         42. cf_x86_64_wear-userdebug
         43. aosp_marlin-userdebug
         44. aosp_marlin_svelte-userdebug
         45. aosp_sailfish-userdebug
         46. aosp_walleye-userdebug
         47. aosp_walleye_test-userdebug
         48. aosp_taimen-userdebug
         49. hikey-userdebug
         50. hikey64_only-userdebug
         51. hikey960-userdebug
    

    lunch命令输出了一个Lunch菜单,该菜单列出了当前Android源码支持的所有设备型号及其编译类型。

    编译的类型:

    • user: limited access; suited for production(有限的访问权限,一般用于发布版)。
    • eng:具有开发配置,并且有额外的调试工具(注:工程师模式engineer)。
    • userdebug: 这个和user类似,但是可以获取root权限,并且能够调试。

    当我们选定了一个Lunch菜单项序号(1-51)之后,按回车键,就可以完成Android编译环境的初始化过程。

    注:lunch命令也可以直接这么用 $ lunch aosp_arm-eng

    编译环境初始化结果

    Android编译环境初始化完成之后,获得了以下三样东西:

    1. 将vendor和device目录下的vendorsetup.sh文件加载到了当前终端。
    2. 新增了lunch、m、mm和mmm等命令。
    3. 通过执行lunch命令设置好了TARGET_PRODUCT、TARGET_BUILD_VARIANT、TARGET_BUILD_TYPE和TARGET_BUILD_APPS等环境变量。

    AOSP源码编译


    对整个系统进行编译

    使用make命令开始整个系统的编译:

    make -j8
    

    这里的-j参数后面的数字是编译需要的线程数,建议电脑的CPU数量的1~2倍来设置。

    然后就是漫长的等待过程了……

    分模块编译

    我们也可以用m/mm/mmm/make命令编译源代码。

    当然,这要求每一个模块都有一个Android.mk文件。Android.mk实际上是一个Makefile脚本,用来描述模块编译信息。Android编译系统通过整合Android.mk文件完成编译过程。

    m、mm和mmm命令也分别是由定义在build/envsetup.sh文件中的函数m、mm和mmm提供的,而这三个函数又都是通过make命令来对源代码进行编译的。

    m/mm/mmm使用简介

    • m: Makes from the top of the tree.
    • mm: Builds all of the modules in the current directory, but not their dependencies.
    • mmm: Builds all of the modules in the supplied directories, but not their dependencies.
      To limit the modules being built use the syntax: mmm dir/:target1,target2.
    • mma: Builds all of the modules in the current directory, and their dependencies.
    • mmma: Builds all of the modules in the supplied directories, and their dependencies.

    事实上,命令m就是对make命令的简单封装,并且是用来对整个Android源代码进行编译,而命令mm和mmm都是通过make命令来对Android源码中的指定模块进行编译。

    m的实现:

    function m()
    {
        local T=$(gettop)
        if [ "$T" ]; then
            _wrap_build $T/build/soong/soong_ui.bash --make-mode $@
        else
            echo "Couldn't locate the top of the tree.  Try setting TOP."
            return 1
        fi
    }
    

    当在Android源码中定义的各个模块都编译好之后,我们还需要将编译得到的文件打包成相应的镜像文件,例如system.img、boot.img和recorvery.img等,这样我们才可以将这些镜像烧录到目标设备去运行。

    安装系统


    系统编译完成之后,我们可以通过使用模拟器来运行,或者使用真机进行刷机。

    模拟机启动

    $ source build/envsetup.sh
    $ lunch //(选择刚才设置的目标版本,例如如果之前我们选择1,那就是aosp_arm-eng)
    $ emulator //模拟器启动
    

    刷真机

    1. 进入fastboot模式
    $ adb reboot bootloader
    
    1. 把img文件刷进去
    $ fastboot flashall -w  //这个 -w 是为了wipes the /data partition擦除/data分区
    

    **PS:更多精彩内容,请查看 --> 《AOSP 专栏》
    **PS:更多精彩内容,请查看 --> 《AOSP 专栏》
    **PS:更多精彩内容,请查看 --> 《AOSP 专栏》

    展开全文
  • Ubuntu系统下Android源码编译.pdf
  • Android源码编译参考文档,主要适合于从事Android系统开发或者Framework开发的朋友!
  • Android源码编译之Nexus5真机编译-附件资源
  • 模板名称Android源码编译命令汇总1. 概述2. 编译命令1. 初始化编译环境2. 编译源码(全编)3. 编译源码3.1. 代码编译3.1.1. m 在源码树的根目录执行编译3.1.2. mm 编译当前路径下所有模块,但不包含依赖3.1.3. mmm ...

    模板名称

    Android源码编译命令汇总

    提示:
    博主:_ 小小码nong
    博客地址:http://blog.csdn.net/qq_29924041


    1. 概述

       以下命令都是我在编译过程中相对比较常用的一些命令汇总



    2. 编译命令

    1. 初始化编译环境

       source build/envsetup.sh //指定此次编译的目标设备以及编译类型

    2. 编译源码(全编)

       lunch //指定此次编译的目标设备以及编译类型
       make -j12 //开始编译,默认为编译整个系统,其中-j12代表的是编译的job数量为12



    3. 编译源码

    3.1. 代码编译

    3.1.1. m 在源码树的根目录执行编译

       主要是在源码树下面执行编译,编译的是根目录下所有的代码

    3.1.2. mm 编译当前路径下所有模块,但不包含依赖

       编译当前路径下所有模块,但是不包含依赖关系

    3.1.3. mmm 编译指定路径下的所有模块

       mmm [module_path] 编译指定路径下所有模块,但不包含依赖

    3.1.4. mma 编译当前路径下所有模块,且包含依赖

       编译当前路径下的所有模块,包含依赖模块的编译

    3.1.5. mmma [module_path] 编译指定路径下所有模块,且包含依赖

       编译指定路径下的所有的模块,并且会把依赖模块也给编译一遍

    3.1.6. make [module_name] 无参数,则表示编译整个Android代码

       如果没有参数,默认是编译整个代码,如果有module_name,是会遍历module,编译指定的module


    3.2. 部分模块示例:

    模块make命令mmm命令
    initmake init mmmsystem/core/init
    zygotemake app_processmmm frameworks/base/cmds/app_process
    system_servermake servicesmmm frameworks/base/services
    java frameworkmake frameworkmmm frameworks/base
    framework资源make framework-resmmm frameworks/base/core/res
    jni frameworkmake libandroid_runtimemmm frameworks/base/core/jni
    bindermake libbindermmm frameworks/native/libs/binder
    RefBase等make libutilsmmm framworks/base/libs/utils
    Looper等make frameworkmmm framworks/base
    AudioTrackmake libmediammm framworks/base/media/kibmedia
    AudioFlingermake libaudiofligingermmm framworks/base/libs/audioflinger
    AudioPolicyServicemake libaudiopolicymmm hardware/msm7k/libaudio-qsd8k
    SurfaceFlingermake libsurfaceflingermmm frameworks/base/libs/surfaceflinger
    Voldmake voldmmm system/vold
    Rildmake rildmmm hardware/ril/rild
    MediaProvidermake MediaProvidermmm packages/providers/MediaProvider
    Phonemake phonemmm packages/apps/Phone

    总结:
       上述mmm命令同样适用于mm/mma/mmma,编译系统采用的是增量编译,只会编译发生变化的目标文件。当需要重新编译所有的相关模块,则需要编译命令后增加参数-B,比如make -B [module_name],或者 mm -B [module_path]。


    3.3. 注意

    1:对于m、mm、mmm、mma、mmma这些命令的实现都是通过make方式来完成的。

    2:mmm/mm编译的效率很高,而make/mma/mmma编译较缓慢;

    3:make/mma/mmma编译时会把所有的依赖模块一同编译,但mmm/mm不会;

    建议:首次编译时采用make/mma/mmma编译;当依赖模块已经编译过的情况,则使用mmm/mm编译。



    4. 代码搜索命令

    4.1. 搜索命令

    4.1.1. cgrep 所有C/C++文件执行搜索操作

    4.1.2. jgrep 所有Java文件执行搜索操作

    4.1.3. ggrep 所有Gradle文件执行搜索操作

    4.1.4. mangrep [keyword] 所有AndroidManifest.xml文件执行搜索操作

    4.1.5. mgrep [keyword] 所有Android.mk文件执行搜索操作

    4.1.6. sepgrep [keyword] 所有sepolicy文件执行搜索操作

    4.1.7. resgrep [keyword] 所有本地res/*.xml文件执行搜索操作

    4.1.8. sgrep [keyword] 所有资源文件执行搜索操作


    5. 导航指令

    5.1 代码目录切换命令

    5.1.1. croot 切换至Android根目录

    5.1.2. cproj 切换至工程的根目录

    5.1.3. godir [filename] 跳转到包含某个文件的目录


    6. 信息查询

    6.1. 信息查询指令

    6.1.1. hmm 查询所有的指令help信息

    6.1.2. findmakefile 查询当前目录所在工程的Android.mk文件路径

    6.1.3. print_lunch_menu 查询lunch可选的product

    6.1.4. printconfig 查询各项编译变量值

    6.1.5. gettop 查询Android源码的根目录

    6.1.6. gettargetarch 获取TARGET_ARCH值


    7. make指令

    7.1. 所有make指令

    7.1.1. make clean:执行清理操作,等价于 rm -rf out/

    7.1.2. make update-api:更新API,在framework API改动后需执行该指令,Api记录在目录frameworks/base/api;

    7.1.3. make sdk 编译出 Android 的 SDK。

    7.1.4. make clean-sdk 清理 SDK 的编译产物

    7.1.5. make update-api 更新 API

        在 framework API 改动之后,需要首先执行该命令来更新 API,公开的 API 记录在 frameworks/base/api 目录下。

    7.1.6. make dist 执行 Build,并将 MAKECMDGOALS 变量定义的输出文件拷贝到 /out/dist 目录

    7.1.7. make all 编译所有内容,不管当前产品的定义中是否会包含。

    7.1.8. make help 帮助信息,显示主要的 make 目标。

    7.1.9. make snod 从已经编译出的包快速重建系统镜像。

    7.1.10. make libandroid_runtime 编译所有 JNI framework 内容

    7.1.11. make framework 编译所有 Java framework 内容

    7.1.12. make services 编译系统服务和相关内容。

    7.1.13. make <local_target> 编译一个指定的模块,local_target 为模块的名称。

    7.1.14. make clean-<local_target> 清理一个指定模块的编译结果。

    7.1.15. make dump-products 显示所有产品的编译配置信息,

        例如:产品名,产品支持的地区语言,产品中会包含的模块等信息。

    7.1.16. make PRODUCT-xxx-yyy 编译某个指定的产品。

    7.1.17. make bootimage 生成 boot.img

    7.1.18. make recoveryimage 生成 recovery.img

    7.1.19. make userdataimage 生成 userdata.img

    7.1.20. make cacheimage 生成 cache.img

    7.1.21. make otapackage 生成升级包

    7.1.22. make systemimage 编译生成system.img






       以上主要是一些常用的编译命令    对于具体的module,其实还是需要在mk文件里面去进行查找的。


    欢迎继续访问,我的博客
    展开全文
  • Android源码编译文档

    2018-06-20 21:59:38
    主要总结了Android源码的下载和编译,其中,编译和制作镜像通过shell脚本实现。
  • android 源码编译报错

    2015-12-29 03:42:30
    android 源码编译报错,在网上查找没有类似的回答,是否有大神遇到类似问题。![图片说明](https://img-ask.csdn.net/upload/201512/29/1451360520_728726.png)
  • android 源码编译环境

    2018-05-16 20:50:55
    编译环境的搭建,Android源码 开发,基于UBUNTU14.04 / UBUNTU16.10
  • Android 源码编译的jar包,包括4.4和5.0版的
  • linux下android源码编译文档 详细步骤
  • 01 OrangePi H3 Android源码编译-附件资源

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 120,358
精华内容 48,143
关键字:

安卓源码编译