历史上的今天
返回首页

历史上的今天

今天是:2024年10月14日(星期一)

正在发生

2018年10月14日 | Tiny4412_Android编译步骤

2018-10-14 来源:eefocus

前言: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 源码了.


推荐阅读

史海拾趣

DURACELL公司的发展小趣事

1920年,一位年轻而聪明的科学家山谬·鲁本(Samuel Ruben)和另一位年轻而富有的钨丝电线制造商菲立普·马洛里(Philip Rogers Mallory)在一次偶然的机会中相遇。鲁本到马洛里公司寻找实验设备,两人在交谈中共同意识到将发明天赋和制造力量结合起来的巨大机会。这个巧合开启了他们的合作之旅,最终导致了金霸电池的诞生。鲁本的发明为当时的电池科技带来了革命性的改变,奠定了DURACELL公司坚实的基础。

冠西电子(COSMO)公司的发展小趣事

冠西电子一直重视产品质量和客户服务,通过了国际标准化组织的ISO9001质量管理标准认证,以及各国的安规认证,如UL、TUV等。这些认证不仅证明了冠西电子产品的品质卓越,也为其赢得了更多国际客户的认可。此外,冠西电子还积极与国际知名企业开展合作,共同推动电子行业的发展。

Cadeka公司的发展小趣事

随着电子行业的快速发展,Cadeka公司意识到单一市场的局限性。为了拓展业务,公司开始实施全球化战略布局。首先,Cadeka在欧洲和亚洲设立了研发中心,与当地高校和研究机构合作,共同开发新技术。同时,公司还在全球范围内建立了生产基地和销售网络,以便更好地服务全球客户。

兵字(BingZi)公司的发展小趣事

随着市场的不断变化和客户需求的日益多样化,兵字公司意识到,要想在市场中保持领先地位,就必须不断进行技术创新。于是,公司投入大量研发资源,成功研发出了小型精密互感器。这一创新产品不仅填补了市场空白,还为公司带来了可观的收益。同时,兵字公司也凭借这一技术突破,进一步巩固了在电子元器件领域的领先地位。

EVER-WAY公司的发展小趣事

随着公司规模的扩大和产品质量的提升,EVER-WAY公司开始积极拓展国内外市场。公司制定了详细的市场拓展计划,通过参加国际展会、开展国际贸易合作等方式,逐步打开了国际市场的大门。同时,公司还加强了与国内客户的合作,通过提供定制化服务、优化供应链管理等方式,赢得了客户的信任和支持。这些市场拓展的跨越不仅为公司带来了更多的商业机会,也进一步提升了公司的品牌价值和市场地位。

Advanced Monolythic Ceramics公司的发展小趣事

EVER-WAY公司成立于XX世纪初,当时电子行业正处于蓬勃发展的阶段。创始人李明看准了市场机遇,决定创立一家专注于电子元器件制造的公司。他带领一支由几名工程师组成的小团队,开始了艰苦的创业之路。初期,公司面临着资金短缺、技术落后和市场竞争激烈等多重挑战。然而,李明和他的团队凭借坚定的信念和不懈的努力,逐渐在市场中站稳脚跟。他们不断优化产品性能,提高生产效率,同时积极拓展国内外市场,逐步扩大了公司的知名度和影响力。

问答坊 | AI 解惑

无线通信距离的计算

    这里给出自由空间传播时的无线通信距离的计算方法:所谓自由空间传播系指天线周围为无限大真空时的电波传播,它是理想传播条件。电波在自由空间传播时,其能量既不会被障碍物所吸收,也不会产生反射或散射。 &nbs ...…

查看全部问答>

上传点资料

深入浅出ARM7-LPC213x_214x(上).pd 下册在5楼——daicheng提供…

查看全部问答>

LPC1114申请

您好!    我是福州佳宝智能科技有限公司的研发工程师,最近了解了一下LPC1114的性价比,感觉很适合用在智能家居系列的产品上,希望能申请到该芯片来进行项目的评估,谢谢!可以的话,请短信通知,谢谢!邮箱也可以我的邮箱:linyu0395@g ...…

查看全部问答>

怎样选择:arm开发板

我看中了两款开发板 TQ2440 和 mini2440 下面是链接 http://item.taobao.com/item.htm?id=3727179227 http://item.taobao.com/item.htm?id=2190406747 学习用,不知道这两款哪个更好一些 谁帮忙看下…

查看全部问答>

菜鸟

问一下,数据库连接经常出错为什么????????…

查看全部问答>

请教版主STM32定时器问题?

最近读STM32手册定时器部分, The auto-reload register is preloaded. Writing to or reading from the auto-reload register accesses the preload register. The content of the preload register are transferred into the shadow regist ...…

查看全部问答>

2011年全国大学生电子设计竞赛全国专家工作成都会议纪要

1、“综合测评”测试对象为赛区推荐上报全国评奖的优秀参赛队全体队员,并在各赛区以封闭方式进行。测试题目与评分标准由全国专家组负责统一制定,并委托各赛区在当地组织,赛区专家组完成相应测试工作。全国专家组将排遣专家参加综合测评。 2、 ...…

查看全部问答>

MSP430G2452点亮段式液晶

我这个是用LaunchPad驱动HT1621B型芯片,从而达到控制段式液晶,至于段式液晶屏,一定是3V地。 有图有真象先上图先:     段显显示:   我是用线搭的,DATA、WR、CS、接P1的0、1、2、   上程序:   此程序 ...…

查看全部问答>

ModelSim仿真 没有work库?????

小弟初学,按照教程步骤来的。 1,新建工程,file-new-project 2,加入文件,add to project-existing file 3,编译文件,compile-compile all      显示编译成功,compile of xxx.v is successful. 4,在library选项卡 ...…

查看全部问答>

求ADUCM360.H文件

版本较旧,缺少头文件,求ADUCM360.H文件,谢谢…

查看全部问答>