编译系统是Ubuntu 16.04,64位,Android源码版本为5.0.2和4.4。
编译adb不需要先把整个源码都编译通过,下载到的源码直接就可以编出adb。
下面是编译过程:
1. 在终端cd到Android源码根目录
2. 准备编译环境
# source ./build/envsetup.sh
# lunch然后选择某个版本
3. 编译adb
有几种方式:
方式1:
# make -j8 adb
方式2:
# mmm system/core/adb/
方式3:
# cd system/core/adb/
# mm
最后生成的adb文件:out/host/linux-x86/bin/adb。
3种编译方式对比:
只对一行代码加注释,3者的速度:方式1为1m17s,方式2和方式3为2s。
方式1最慢的原因是会遍历一堆Android.mk文件,这个过程相当耗时。。。,最后才真正编译adb。
方式2和方式3差不多,都很快。
推荐使用方式3:因为是在adb目录下,可以随时用vi修改文件,用git查看文件的修改情况,即使想回到源码根目录也可以通过croot迅速实现,然后cd -又回到adb目录。
7.1.2的系统只能使用第1种方式,后两种方式会提示错误:
ninja: error: 'out/target/product/generic_arm64/obj/SHARED_LIBRARIES/libc++_intermediates/export_includes', needed by 'out/target/product/generic_arm64/obj/STATIC_LIBRARIES/libadbd_intermediates/import_includes', missing and no known rule to make it
make: *** [ninja_wrapper] Error 1
暂时不知道怎么解决,有解决方法的同学欢迎留言。