Browsed by
月份:2016年12月

Binder机制慢慢话1——binder驱动初识

Binder机制慢慢话1——binder驱动初识

写在前面的话

Android系统中的Binder机制,差不多是许多程序员眼前一座大山。也许,有人会说,我们根本就不需要弄懂Binder具体实现的细节,一样可以理解Android系统的跨进程调用关系。但这样会让我们思路变得狭隘,让我们离“真相”越来越远;同样也失去征服崎途的快感,和体验美好风景的机会。

Read More Read More

Android编译系统03-build system overview

Android编译系统03-build system overview

1,完成编译环境的设置和项目相关的选择,就下来就进入make命令,我们以make otapackage为例。

执行make otapackage会进入make()函数
  1. function make()
  2. {
  3. local start_time=$(date +"%s")
  4. //$@是执行的参数即otapackage,get_make_command即调用系统的make命令。
  5. $(get_make_command) "$@"
  6. local ret=$?
  7. //做一些编译的时间记录,即start时间和end时间
  8. local end_time=$(date +"%s")
  9. local tdiff=$(($end_time-$start_time))
  10. local hours=$(($tdiff / 3600 ))
  11. local mins=$((($tdiff % 3600) / 60))
  12. local secs=$(($tdiff % 60))
  13. local ncolors=$(tput colors 2>/dev/null)
  14. if [ -n "$ncolors" ] && [ $ncolors -ge 8 ]; then
  15. color_failed="e[0;31m"
  16. color_success="e[0;32m"
  17. color_reset="e[00m"
  18. else
  19. color_failed=""
  20. color_success=""
  21. color_reset=""
  22. fi
  23. //编译完成之后的提示打印
  24. echo
  25. if [ $ret -eq 0 ] ; then
  26. echo -n -e "${color_success}#### make completed successfully "
  27. else
  28. echo -n -e "${color_failed}#### make failed to build some targets "
  29. fi
  30. if [ $hours -gt 0 ] ; then
  31. printf "(%02g:%02g:%02g (hh:mm:ss))" $hours $mins $secs
  32. elif [ $mins -gt 0 ] ; then
  33. printf "(%02g:%02g (mm:ss))" $mins $secs
  34. elif [ $secs -gt 0 ] ; then
  35. printf "(%s seconds)" $secs
  36. fi
  37. echo -e " ####${color_reset}"
  38. echo
  39. return $ret
  40. }

Read More Read More

Android编译系统01-envsetup.sh

Android编译系统01-envsetup.sh

以Android M为例
编译Android,按照google官方的指引,完成code下载之后,就会先执行一下$ source build/envsetup.sh或者$ . build/envsetup.sh来初始化整个编译环境。最直观的一感觉就是多了一些命令,比较用来选择编译项目的lunch,分别可以在java源码中,或者CPP,C源码中进行grep的定制命令jgrep和cgrep,croot进入源码基层目录,等等这些命令。那么接下来就来分析这个脚本。

Read More Read More

TOP