源码分析相关面试题

与XMPP相关面试题

与性能优化相关面试题

与登录相关面试题

与开发相关面试题

与人事相关面试题

本文配套视频

很多哥们在后台公众号留言,让讲讲如何编译源码,感觉源码开发很神秘,好吧,今天就手把手教大家安装虚拟机编译源码,文字部分的东西就别看了,毕竟源码或者技术这种东西三言两语也讲不明白,直接看视频吧,通过本文我录制的视频希望对大家能起到抛砖引玉的作用,不过这个视频是我在三年前录制的,讲的是通过源码编译不需要root权限实现静默安装和偷拍,然后也把Android系统安装源码给大家分析了,毕竟三年前随堂录制的视频,也比较简单的东西,如果没有收获随便看看就行,有收获点个赞就行,对静默安装感兴趣就从第一个视频开始看起,如果只是单纯对源码编译感兴趣,直接从第二个视频15分钟开始看就行,这样能节约大家的时间,视频时间有点长。

四年前写的静默安装代码,有兴趣看看吧:http://www.apkbus.com/forum.php?mod=viewthread&tid=120895

Android源码分析

1. 了解虚拟机的的使用

Android 系统的编译环境目前只支持 Linux 以及 Mac OS 两种操作系统 虚拟机可以很方便的搭建不同系统的开发环境 虚拟机可以完整的模拟一台电脑 虚拟机中的系统独立于主系统存在,子系统的损坏与否不影响主系统功能

1.1. 了解虚拟机的安装和创建新虚拟机的方法

静默安装和静默偷拍

静默安装和静默偷拍

静默安装和静默偷拍

静默安装和静默偷拍

静默安装和静默偷拍

静默安装和静默偷拍

静默安装和静默偷拍

静默安装和静默偷拍

静默安装和静默偷拍

1.2. 了解虚拟机里安装Ubuntu系统的方法

静默安装和静默偷拍

静默安装和静默偷拍

静默安装和静默偷拍

静默安装和静默偷拍

静默安装和静默偷拍

静默安装和静默偷拍

静默安装和静默偷拍

Android源码下载

Android源码下载支持的系统目前只有Ubuntu和Mac OS两种操作系统, 本次以Ubuntu系统为例.

官方网站: https://source.android.com/source/downloading.html

  1. 下载Git(版本控制工具). 调出命令行: ctrl + alt + T
  1. sudo apt-get install git
  1. 安装curl(上传和下载数据的工具).
  1. sudo apt-get install curl
  1. 安装repo(一个基于git的版本库管理工具, 这里用于自动批量下载android整个项目.).
  1. // 创建目录
  2. mkdir bin
  3. // 下载repo脚本到本地bin文件夹下
  4. curl https://android.git.kernel.org/repo >~/bin/repo
  5. // 如果上面下载失败, 采用下面这种方式
  6. curl "https://php.webtutor.pl/en/wp-content/uploads/2011/09/repo" >~/bin/repo
  7. // 给所有用户追加可执行的权限
  8. chmod a+x ~/bin/repo
  9. // 临时把repo添加到环境变量中, 方便后面执行.
  10. // 注意: 每次重启ubuntu之后此环境变量失效, 重新配置就可以了.
  11. export PATH=~/bin:$PATH
  1. 创建文件夹, 用于存放下载的Android源码.
  1. // 创建目录
  2. mkdir android_source
  3. // 修改权限
  4. chmod 777 android_source
  5. cd android_source
  1. 初始化库.
  1. // 需要先配置git的用户信息
  2. git config --global user.email "ad_307@yeah.net"
  3. git config --global user.name "liyindong"
  4. repo init -u httpss://android.googlesource.com/platform/manifest -b android-2.3_r1
  5. // 如果上面初始化失败, 用下面的代码
  6. repo init -u git://codeaurora.org/platform/manifest.git -b gingerbread
  7. // 或
  8. repo init -u git://android.git.kernel.org/platform/manifest.git -b gingerbread
出现以下信息成功初始化
  1. repo initialized in /home/liyindong/android_source
  1. 开始同步下载.
  1. repo sync

注意: 下载过程中, 因为网络问题, 可能会中断下载. 当中断下载时, 继续使用repo sync命令继续下载.

Android源码编译

在编译源码之前需要做一些准备操作, 详细步骤如下:

1. 安装JDK, google官方要求编译2.3源码需要JDK1.6.

  1. sudo mkdir /usr/java
  • 3). 把下载好的jdk-6u45-linux-x64.bin拷贝到上面创建的目录下.
  1. sudo cp /home/liyindong/jdk-6u45-linux-x64.bin /usr/java
  • 4). 添加可执行权限.
  1. sudo chmod 755 /usr/java/jdk-6u45-linux-x64.bin
  • 5). 解压.
  1. cd /usr/java
  2. sudo ./jdk-6u45-linux-x64.bin
  • 6). 配置环境变量.
  1. export JAVA_HOME=/usr/java/jdk1.6.0_45
  2. export PATH=$PATH:$JAVA_HOME/bin
  3. export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
  • 7). 验证是否成功.
  1. liyindong@liyindong-VirtualBox:~$ java -version
  2. java version "1.6.0_45"
  3. Java(TM) SE Runtime Environment (build 1.6.0_45-b06)
  4. Java HotSpot(TM) 64-Bit Server VM (build 20.45-b01, mixed mode)

2. 安装其他编译时依赖的软件.

注意: ubuntu自带的源中速度比较慢, 有些软件找不到, 所以需要修改为国内的源, 修改源步骤如下:

  • 1). 备份ubuntu自带的源.
  1. sudo cp /etc/apt/sources.list /etc/apt/sources.list.old
  • 2). 修改源文件.
  1. sudo gedit /etc/apt/sources.list
  • 3). 这时会弹出一个文本编辑框, 先删除所有内容, 然后把以下内容拷贝进去, 并保存.
  1. deb https://mirrors.163.com/ubuntu/ trusty main restricted universe multiverse
  2. deb https://mirrors.163.com/ubuntu/ trusty-security main restricted universe multiverse
  3. deb https://mirrors.163.com/ubuntu/ trusty-updates main restricted universe multiverse
  4. deb https://mirrors.163.com/ubuntu/ trusty-proposed main restricted universe multiverse
  5. deb https://mirrors.163.com/ubuntu/ trusty-backports main restricted universe multiverse
  6. deb-src https://mirrors.163.com/ubuntu/ trusty main restricted universe multiverse
  7. deb-src https://mirrors.163.com/ubuntu/ trusty-security main restricted universe multiverse
  8. deb-src https://mirrors.163.com/ubuntu/ trusty-updates main restricted universe multiverse
  9. deb-src https://mirrors.163.com/ubuntu/ trusty-proposed main restricted universe multiverse
  10. deb-src https://mirrors.163.com/ubuntu/ trusty-backports main restricted universe multiverse
  11. deb https://mirrors.sohu.com/ubuntu/ trusty main restricted universe multiverse
  12. deb https://mirrors.sohu.com/ubuntu/ trusty-security main restricted universe multiverse
  13. deb https://mirrors.sohu.com/ubuntu/ trusty-updates main restricted universe multiverse
  14. deb https://mirrors.sohu.com/ubuntu/ trusty-proposed main restricted universe multiverse
  15. deb https://mirrors.sohu.com/ubuntu/ trusty-backports main restricted universe multiverse
  16. deb-src https://mirrors.sohu.com/ubuntu/ trusty main restricted universe multiverse
  17. deb-src https://mirrors.sohu.com/ubuntu/ trusty-security main restricted universe multiverse
  18. deb-src https://mirrors.sohu.com/ubuntu/ trusty-updates main restricted universe multiverse
  19. deb-src https://mirrors.sohu.com/ubuntu/ trusty-proposed main restricted universe multiverse
  20. deb-src https://mirrors.sohu.com/ubuntu/ trusty-backports main restricted universe multiverse
  21. deb https://mirrors.oschina.net/ubuntu/ trusty main restricted universe multiverse
  22. deb https://mirrors.oschina.net/ubuntu/ trusty-backports main restricted universe multiverse
  23. deb https://mirrors.oschina.net/ubuntu/ trusty-proposed main restricted universe multiverse
  24. deb https://mirrors.oschina.net/ubuntu/ trusty-security main restricted universe multiverse
  25. deb https://mirrors.oschina.net/ubuntu/ trusty-updates main restricted universe multiverse
  26. deb-src https://mirrors.oschina.net/ubuntu/ trusty main restricted universe multiverse
  27. deb-src https://mirrors.oschina.net/ubuntu/ trusty-backports main restricted universe multiverse
  28. deb-src https://mirrors.oschina.net/ubuntu/ trusty-proposed main restricted universe multiverse
  29. deb-src https://mirrors.oschina.net/ubuntu/ trusty-security main restricted universe multiverse
  30. deb-src https://mirrors.oschina.net/ubuntu/ trusty-updates main restricted universe multiverse
  • 4). 保存之后, 更新数据源.
  1. sudo apt-get update
  • 执行完上面几步, 数据源就更新完成了, 下面就开始安装编译依赖的软件, 同样, 在终端中以行为单位依次输入以下命令:

  1. sudo apt-get install gnupg
  2. sudo apt-get install flex
  3. sudo apt-get install bison
  4. sudo apt-get install gperf
  5. sudo apt-get install zip
  6. sudo apt-get install curl
  7. sudo apt-get install build-essential
  8. sudo apt-get install libesd0-dev
  9. sudo apt-get install libwxgtk2.6-dev
  10. sudo apt-get install libsdl-dev
  11. sudo apt-get install lsb-core
  12. sudo apt-get install lib32readline-gplv2-dev
  13. sudo apt-get install g++-multilib
  14. sudo apt-get install lib32z1-dev
  15. sudo apt-get install libswitch-perl

3. 开始编译, 在源码的目录下, 执行一下命令:

  1. make

5. 了解SourceInsight的使用方法

静默安装和静默偷拍

静默安装和静默偷拍

静默安装和静默偷拍

静默安装和静默偷拍

静默安装和静默偷拍

静默安装和静默偷拍

  • 欢迎关注微信公众号,长期推荐技术文章和技术视频
  • 微信公众号名称:Android干货程序员

img