前言:Android编译对PC机系统性能有要求,建议使用win7 64位操作系统,硬盘最小80GB剩余容量,否则编译Android源码会出现“No space left on device”。
1、搭建好的VMWare 虚拟机:
参考《韦东山Android系统视频使用手册20160303》文档说明,使用已经搭建好的VMWare 虚拟机映象文件,当然也可以参照文档自己安装ubuntu-12.04.5-64bit 系统。
2、设置ubuntu虚拟机的静态IP地址:
参考博文“Ubuntu9.10静态IP设置方法”、“设置ubuntu静态ip并联网”、“ifconfig 后看不到eth0,但是有eth3和eth4”设置ubuntu虚拟机的静态IP地址,然后用CRT即可登录虚拟机,用cuteftp在win之间传输文件;
参考:设置Ubuntu网络更新使用make menuconfig命令
参考:Tiny4412和PC传文件(含挂载NFS文件系统)方法
3、编译Android映像文件:
①准备工作:
目前只需要从网盘下载以下5 个文件:
Android-5.0.2.part1.rar
Android-5.0.2.part2.rar
Android-5.0.2.part3.rar
Android-5.0.2.part4.rar
linux-3.0.86-20150324.tgz
在Windows 下双击“Android-5.0.2.part1.rar”解压,得到android-5.0.2-fs-20150325.tar.gz,把它放到Ubuntu 的/work 目录下再次解压。
②在Ubuntu 下的解压内核并编译,命令为:
tar xzf linux-3.0.86-20150324.tgz
cd linux-3.0.86/
cp tiny4412_android_defconfig .config
make zImage
③在Ubuntu 下的解压Android 文件系统,命令为:
tar xzf android-5.0.2-fs-20150325.tar.gz
注意:在解压得到android-5.0.2 目录后,建议把android-5.0.2-fs-20150325.tar.gz 删掉以防空间不足。
④编译Android 系统
a.进入上述解压得到的android-5.0.2,执行以下命令(注意:“.”号后有一个空格):
. setenv
b.再执行“lunch”命令,输入“full_tiny4412-eng”前的数字标号,如下所示:
$ lunch
You're building on Linux
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. full_tiny4412-userdebug
8. full_tiny4412-eng
9. aosp_mako-userdebug
10. aosp_hammerhead-userdebug
11. aosp_tilapia-userdebug
12. aosp_grouper-userdebug
13. aosp_deb-userdebug
14. full_fugu-userdebug
15. aosp_fugu-userdebug
16. aosp_flo-userdebug
17. aosp_shamu-userdebug
18. aosp_manta-userdebug
19. mini_emulator_mips-userdebug
20. mini_emulator_x86_64-userdebug
21. mini_emulator_arm64-userdebug
22. m_e_arm-userdebug
23. mini_emulator_x86-userdebug
Which would you like? [aosp_arm-eng] 8 //输入8,表示生成版本full_tiny4412-eng,tiny4412工程机
c.接着执行“make”命令开始编译,也可以在make 后加上“-j”参数利用CPU 的多核加快编译速度,比如在4 核CPU 上可以执行“make –j4”。
注意:编译过程可能持续4、5 个小时。
d.执行以下命令生成映象文件:
./gen-img.sh
注意:如果提示如下错误,要先编译u-boot 以得到mkimage 工具,方法见后。
./gen-img.sh: line 31: mkimage: command not found
编译u-boot 以得到mkimage 工具的方法:
tar xzf uboot_tiny4412-20130729.tgz
cd uboot_tiny4412/
make tiny4412_config
make
sudo cp tools/mkimage /usr/bin/
sudo chmod 777 /usr/bin/mkimage
运行结果:
book@book-virtual-machine:/work/tiny4412/android-5.0.2$ ./gen-img.sh
Creating filesystem with parameters:
Size: 629145600
Block size: 4096
Blocks per group: 32768
Inodes per group: 7680
Inode size: 256
Journal blocks: 2400
Label:
Blocks: 153600
Block groups: 5
Reserved block group size: 39
Created filesystem with 1943/38400 inodes and 137316/153600 blocks
Creating filesystem with parameters:
Size: 2149580800
Block size: 4096
Blocks per group: 32768
Inodes per group: 7728
Inode size: 256
Journal blocks: 8200
Label:
Blocks: 524800
Block groups: 17
Reserved block group size: 135
Created filesystem with 18/131376 inodes and 17347/524800 blocks
Creating filesystem with parameters:
Size: 4299161600
Block size: 4096
Blocks per group: 32768
Inodes per group: 7952
Inode size: 256
Journal blocks: 16400
Label:
Blocks: 1049600
Block groups: 33
Reserved block group size: 263
Created filesystem with 18/262416 inodes and 35067/1049600 blocks
Creating filesystem with parameters:
Size: 10485760000
Block size: 4096
Blocks per group: 32768
Inodes per group: 8112
Inode size: 256
Journal blocks: 32768
Label:
Blocks: 2560000
Block groups: 79
Reserved block group size: 631
Created filesystem with 18/640848 inodes and 78756/2560000 blocks
Image Name: ramdisk
Created: Mon Nov 14 10:40:26 2016
Image Type: ARM Linux RAMDisk Image (uncompressed)
Data Size: 720530 Bytes = 703.64 kB = 0.69 MB
Load Address: 40800000
Entry Point: 40800000
即可生成ramdisk-u.img、system.img、userdata.img等映像文件。
⑤编译Android源码生成Android Studio所使用的索引文件:
a.进入Android 源码根目录执行:
mmm development/tools/idegen/
这行命令的意思是编译idegen这个项目,生成idegen.jar文件.生成成功后,会显示这个jar包的位置,并显示
#### make completed successfully (6 seconds) ####
注意:如果执行mmm命令出现“No command 'mmm' found”,则需要参考博文“No command 'mmm' found”解决,即使用m、mm、mmm命令之前要在android源码目录下执行命令:
. build/envsetup.sh
b.生成索引文件:
sh ./development/tools/idegen/idegen.sh
这行命令的意思是生成对应的文件:android.iws, android.ipr, android.iml .如果生成失败,后面也会讲到这种情况.
执行第二个命令的时候,碰到下面的问题:
Exception in thread "main"
at
at
at
at Configuration.parsePackageName(Configuration.
at Configuration.rootOf(Configuration.
at Configuration.traverse(Configuration.
at Configuration.traverse(Configuration.
at Configuration.traverse(Configuration.
at Configuration.traverse(Configuration.
at Configuration.traverse(Configuration.
at Configuration.traverse(Configuration.
at Configuration.traverse(Configuration.
at Configuration.traverse(Configuration.
at Configuration.(Configuration.
at Main.main(Main.
解决办法是将
./out/target/product/hammerhead/obj/GYP/shared_intermediates/res.java
修改为:
./out/target/product/hammerhead/obj/GYP/shared_intermediates/res.j
即可.
注意:参照Android源码目录并未找到该目录,查找以后发现目录已经变更为:
android-5.0.2/out/target/product/tiny4412/obj/GYP/shared_intermediates
于是执行以下命令:
sudo mv ./out/target/product/tiny4412/obj/GYP/shared_intermediates/res.java ./out/target/product/tiny4412/obj/GYP/shared_intermediates/res.j
再返回执行“b.生成索引文件”,得到:android.iml、android.ipr
⑥使用Android Studio查看Android源码:
生成对应的文件后,打开Android Studio,选择打开一个现有的Android Studio项目,选择Android源码的根目录,导入即可(起作用的是android.irp文件).在配置sdk版本之后就可以查看Android 源码了.
上一篇:Tiny4412-实验指令笔记
下一篇:Exynos4412电源管理芯片PMIC 的配置及使用方法
推荐阅读最新更新时间:2024-03-16 16:16