adb 交叉编译

2019-07-12 21:54发布

一.安卓下载源指定
在做安卓源码,adb,fastboot等等各种编译,环境的配置(各种依赖包)前,最后先确认那些源可以使用,否则一切徒劳

需要翻墙的源:
安卓官网:https://android.googlesource.com/platform/manifest 
repo init -u https://android.googlesource.com/platform/manifest
国内源(无须翻墙):
清华: repo init -u git://aosp.tuna.tsinghua.edu.cn/android/platform/manifest
    本人测试这个源也无法使用,repo报错
可能是忘了修改repo中的REPO_URL 把'https://gerrit.googlesource.com/git-repo')
修改为git://aosp.tuna.tsinghua.edu.cn/android/git-repo,有需要的童鞋们可以测试一下
 
华中科技大源:
repo init -u git://mirrors.ustc.edu.cn/aosp/platform/manifest
修改REPO_URL为https://gerrit-googlesource.lug.ustc.edu.cn/git-repo

这个源本人测试通过
参考:http://wp.aesean.com/?p=329


注:更新源码:
Improving on Organic Marble's answer, to only install the latest tools (not the whole sdk), 
use the platform-tool filter as below:

tools/android update sdk -t platform-tool --no-ui

二、确定源之后就可以配置环境

注:编译安卓源码最后用64bit的Ubuntu,否则要改很多东西。。。。(这是后来才发现的,第一次装的是32bit,后来编译源码时
发现需要64bit系统,找好找了个1T的硬盘,把源码考下来,重装,在拷贝。。。。很蛋疼的一个过程)

1.Ubuntu系统 14.04LTS 
注:第一次使用的是14.10版本,遇到的问题是sudo apt-get install 安装软件各种不行,提示找不到源码包
2.虚拟机 VMWare 10.0 如果您的电脑是32bit的,就别用最新的VMWare了(好像的12.4的,此版本只支持64bit系统)

3.Ubuntu环境配置
  (1).安装openjdk-7-jdk
sudo apt-get install openjdk-7-jdk
配置环境变量
在/etc/profile 文件末尾加上:
JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64/  
PATH=$PATH:$HOME/bin:$JAVA_HOME/bin  
export JAVA_HOME  
export PATH  

以上是 在15.04之前的版本
以后的版本需要 openjdk-8-jdk
$ sudo apt-get update
$ sudo apt-get install openjdk-8-jdk

  (2).安装编译依赖的软件
sudo apt-get install git gnupg flex bison gperf build-essential zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa- dri:i386 libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386 dpkg-dev

如果是64bit 安装mingw-w64  sudo apt-get install mingw-w64

sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so

  (3)下载repo 源码同步工具
  
   <1> 创建repo目录
mkdir ~/bin 
PATH=~/bin:$PATH
   <2> 下载repo
git clone git://aosp.tuna.tsinghua.edu.cn/android/git-repo.git/

克隆下来后将git-repo中的repo文件拷贝到bin目录
cp git-repo/repo ~/bin/

并修改权限即可:
chmod a+x repo

修改repo文件,设置REPO_URL(按【一.安卓下载源指定】中指定修改)
   <3> 创建源下载目录
mkdir ~/WORKING_DIRECTORY
进入下载目录
cd ~/WORKING_DIRECTORY
   <4> 初始化repo
repo init -u git://mirrors.ustc.edu.cn/aosp/platform/manifest (华中科技大源)
在初始化时,提示需要email验证,使用如下命令:
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
事先注册自己的Gmail邮箱
<5> 下载源码
repo sync 
下载源码是个比较蛋疼的等待,依童鞋们的网速而定,快的几个小时,慢的两三天
此处可以中断,repo sync可断点续传,中断后进入WORKING_DIRECTORY继续执行repo sync即可

源码下载过程中在WORKING_DIRECTORY 目录下是看不到东西了, repo默认把同步的东西放到了
目录下的隐藏文件夹[.repo],自己查看磁盘可用空间是不是在变小就OK了,参考:http://www.eoeandroid.com/thread-57257-1-1.html

OK,至此源码现在的工作基本完了,接下来就是源码编译的问题了,让我们继续。。。
    
注:本人在配置ubuntu虚拟机是只分配了20G的空间,到后来发现不够用了,就用gparted+LVM扩展了分区(详细步骤查看文章最后【虚拟机磁盘空间扩充】一节)
三.编译windows版本的adb
    交叉编译需要用到 mingw32 在【二-配置环境-安装编译依赖的软件】一节中已下载,并且环境编译默认已配置好

参考:http://blog.csdn.net/wzz_momo/article/details/6577039
  
$ source build/envbuild.sh
$ make USE_MINGW=y adb
 
最终编译出来的adb有11M左右,通过strip命令可以去符号信息
$cd WORKING_DIRECTORY/out/host/windows-x86/bin
$strip adb

adb可缩减成1点几M

五.

六.虚拟机磁盘空间扩充  参考http://blog.itpub.net/205377/viewspace-1293725/
1.通过VMWare先扩充空间,完事后会提示,请到客户机完成空间的扩充啥啥啥的(我从20G扩充到100G)  ,【首先关闭ubuntu系统】
2.gpared+LVM扩充ubuntu空间  【开起ubuntu】
 安装gparted
 sudo apt-get install gpared
 安装完成后启动:
 $ sudo gparted
 在图中/dev/sda3是源码扩充出来的未分配的80G控件
 显示为 未分配  -----
 在此右键新建 文件系统格式指定为lvm2,然后点上边的【√】完成新建,为分配区域会显示成/dev/sda3
 
3.通过gparted新建完分区后,通过LVM来扩充个目录系统空间
<1>.查看磁盘空间情况
$df -l
/dev/mapper/ubuntu--vg root  【---其他显示 】

<2>.扩展文件系统
创建PV  //vgextend指令用于动态的扩展卷组,它通过向卷组中添加物理卷来增加卷组的容量。
$ sudo vgextend ubuntu-vg /dev/sda3  【注意此处是 ubuntu-vg 而不是ubuntu--vg】
结果:Volume group "ubuntu-vg" successfully extended

(其中是当前需要扩充的lvm组名,可以通过df -h查看,例如我的是: /dev/mapper/ubuntu-vg-root,有的人可能是/dev/mapper/VolGroup00-LogVol00)  
<3>.显示LNM卷组的元数据信息
$sudo vgdisplay
--- Volume group --- 
VG Name VolGroup00 
System ID 
Format lvm2 
Metadata Areas 2 
Metadata Sequence No 4 
VG Access read/write 
VG Status resizable 
MAX LV 0 
Cur LV 2 
Open LV 2 
Max PV 0 
Cur PV 2 
Act PV 2 
VG Size 20.88 GB 
PE Size 32.00 MB 
Total PE 1276 
Alloc PE / Size 636 / 100.9 GB 
Free PE / Size 640 / 80.09 GB 
VG UUID GEwLeI-DRdi-NKXI-cB89-JQ81-2eMf-C2quKf
(主要查看Free PE / Size 640 / 80.09 GB,说明我们最多可以有80GB的扩充空间。)
扩展LV,这里的扩展空间要小于VG的Free PE
   <4>.扩充
   $lvextend -L+80G /dev/ubuntu-vg/root /dev/sda3
            <5>.再查看VG的信息
$ sudo vgdisplay    
--- Volume group --- 
VG Name VolGroup00 
System ID 
Format lvm2 
Metadata Areas 2 
Metadata Sequence No 5 
VG Access read/write 
VG Status resizable 
MAX LV 0 
Cur LV 2 
Open LV 2 
Max PV 0 
Cur PV 2 
Act PV 2 
VG Size 100.00 GB 
PE Size 32.00 MB 
Total PE 1276 
Alloc PE / Size 1270 / 100.9 GB 
Free PE / Size 6 / 192.00 MB 
VG UUID GEwLeI-DRdi-NKXI-cB89-JQ81-2eMf-C2quKf
<6> resize2fs指令被用来增大或者收缩未加载的“ext2/ext3”文件系统的大小
   $ resize2fs
$ df -h 查看文件系统空间
查看是否已扩充
如果resize2fs 之后文件系统空间没增加可以尝试重启虚拟机。

安卓编译环境配置步骤【官网】
https://source.android.com/source/initializing.html
安卓源码下载步骤【官网】
https://source.android.com/source/downloading.html
安卓源码编译不知【官网】
https://source.android.com/source/building.html