分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

购买Nexus手机的朋友大多是为了自己修改系统玩,再加上其较高的性价比,在开发者中还是广受欢迎的。我的5太子被我升级到了6.0预览版,玩的正嗨,舍不得换回到5.1时代了。不过鉴于距6.0源码发布还有段日子,5.1的源码编译与烧写仍是主流,下面就记录了整个过程(持续了很长时间,我们要有耐心)。

搭建开发环境

系统推荐Ubuntu 14.04
1.openjdk is needed

$ sudo apt-get update$ sudo apt-get install openjdk-7-jdk
  • 1
  • 2

set it the default java version

$ sudo update-alternatives --config java$ sudo update-alternatives --config javac
  • 1
  • 2

2.required package

sudo apt-get install bison g++-multilib git gperf libxml2-utils make python-networkx zlib1g-dev:i386 zip
  • 1

遇到问题:

$ sudo apt-get install bison g++-multilib git gperf libxml2-utils make python-networkx zlib1g-dev:i386 zip[sudo] password for linc: Reading package lists... DoneBuilding dependency tree       Reading state information... Donemake is already the newest version.zip is already the newest version.git is already the newest version.git set to manually installed.libxml2-utils is already the newest version.libxml2-utils set to manually installed.Some packages could not be installed. This may mean that you haverequested an impossible situation or if you are using the unstabledistribution that some required packages have not yet been createdor been moved out of Incoming.The following information may help to resolve the situation:The following packages have unmet dependencies: g++-multilib : Depends: gcc-multilib (>= 4:4.8.2-1ubuntu6) but it is not going to be installedE: Unable to correct problems, you have held broken packages
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

按照如下步骤即可:

$ sudo apt-get install g++-multilib$ sudo apt-get install  bison git gperf libxml2-utils make python-networkx zlib1g-dev:i386 zip
  • 1
  • 2

gcc为必须

$ sudo apt-get install gcc$ gcc -vThread model: posixgcc version 4.8.4 (Ubuntu 4.8.4-2ubuntu1~14.04) 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

repo

$ mkdir ~/bin$ PATH=~/bin:$PATH$ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo$ chmod a+x ~/bin/repo
  • 1
  • 2
  • 3
  • 4
  • 5

check sh1 sum:

$ sha1sum repo b8bd1804f432ecf1bab730949c82b93b0fc5fede  repo
  • 1
  • 2
  • 3

For version 1.21, the SHA-1 checksum for repo is b8bd1804f432ecf1bab730949c82b93b0fc5fede

repo init

针对Nexus5的5.1.1的初始化如下:

LMY48I  android-5.1.1_r9    Lollipop    Nexus 4, Nexus 5, Nexus 6, Nexus 7 (flo), Nexus 9 (volantis/volantisg), Nexus 10
  • 1
$ repo init -u https://android.googlesource.com/platform/manifest -b android-5.1.1_r9Your identity is: linc <xxx@xxx.com>If you want to change this, please re-run 'repo init' with --config-nameTesting colorized output (for 'repo diff', 'repo status'):  black    red      green    yellow   blue     magenta   cyan     white   bold     dim      ul       reverse repo has been initialized in /home/linc/source-android/android-source
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

repo sync

$ repo sync
  • 1

一个晚上两个白天,终于下载完成,代码达34G.

Setting up ccache

Put the following in your .bashrc (or equivalent):

export USE_CCACHE=1
  • 1

run the command:

prebuilts/misc/linux-x86/ccache/ccache -M 50G
  • 1

Building the System

1.Set up environment

$ source build/envsetup.sh
  • 1

or

$ . build/envsetup.sh
  • 1

2.Choose a Target

$ lunch You're building on LinuxLunch 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. aosp_manta-userdebug     8. aosp_flo-userdebug     9. aosp_deb-userdebug     10. full_fugu-userdebug     11. aosp_fugu-userdebug     12. aosp_tilapia-userdebug     13. aosp_grouper-userdebug     14. aosp_mako-userdebug     15. aosp_hammerhead-userdebug     16. aosp_flounder-userdebug     17. aosp_shamu-userdebug     18. mini_emulator_x86-userdebug     19. mini_emulator_arm64-userdebug     20. mini_emulator_x86_64-userdebug     21. mini_emulator_mips-userdebug     22. m_e_arm-userdebugWhich would you like? [aosp_arm-eng] 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29

Nexus5就选择了15,如果只是用于模拟器就选择1好了。
3.build

make -j4
  • 1

如果遇到等待其他任务完成的错误,是多线程冲突,就直接make好了。
4.error
1)

No private recovery resources for TARGET_DEVICE hammerheadhost C++: bcc <= frameworks/compile/libbcc/tools/bcc/Main.cppclang++: error: unable to execute command: Executable "as" doesn't exist!clang++: error: assembler command failed with exit code 1 (use -v to see invocation)make: *** [out/host/linux-x86/obj32/EXECUTABLES/bcc_intermediates/Main.o] Error 1
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

try make clean.这是没有安装gcc的后果。

build successfully

#### make completed successfully (05:53:54 (hh:mm:ss)) ####
  • 1

目录结构如下:

out/target/product/hammerhead$ du -sh *4.0K    android-info.txt8.8M    boot.img4.0K    cache14M cache.img64K clean_steps.mk172K    data4.0K    fake_packages81M gen64K installed-files.txt8.1M    kernel16G obj4.0K    previous_build_config.mk700K    ramdisk.img1.4M    ramdisk-recovery.img2.2M    recovery9.5M    recovery.img1.3M    root2.9G    symbols288M    system307M    system.img135M    userdata.img
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

Flash device

To flash a device, you will need to use fastboot, which should be included in your path after a successful build. Place the device in fastboot mode either manually by holding the appropriate key combination at boot, or from the shell with

$ adb reboot bootloader
  • 1

Once the device is in fastboot mode, run

$ fastboot flashall -w
  • 1

The -w option wipes the /data partition on the device; this is useful for your first time flashing a particular device but is otherwise unnecessary.

For more information about building for and running on actual hardware, see Running Builds.

Flash emulator

1.build generic img
lunch 1即可,然后正常make。

make completed successfully (05:02:47 (hh:mm:ss))

2.启动模拟器

~/source-android/android-source/out/target/product/generic$ emulator -sysdir ~/source-android/android-source/out/target/product/generic -system system.img emulator: WARNING: system partition size adjusted to match image file (550 MB > 200 MB)emulator: WARNING: data partition size adjusted to match image file (550 MB > 200 MB)Creating filesystem with parameters:    Size: 69206016    Block size: 4096    Blocks per group: 32768    Inodes per group: 4224    Inode size: 256    Journal blocks: 1024    Label:     Blocks: 16896    Block groups: 1    Reserved block group size: 7Created filesystem with 11/4224 inodes and 1302/16896 blocks
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

模拟器顺利启动,与真机的区别有很多,比如开机画面不同,Home的UI和操控都有所不同。具体原因敬请期待。

给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow

Android实战技巧之四十 Android5 1 1源代码编译与烧写相关推荐

  1. Android实战技巧之四十:Android5.1.1源代码编译与烧写

    购买Nexus手机的朋友大多是为了自己修改系统玩,再加上其较高的性价比,在开发者中还是广受欢迎的.我的5太子被我升级到了6.0预览版,玩的正嗨,舍不得换回到5.1时代了.不过鉴于距6.0源码发布还有段 ...

  2. android 速度传感器,Android实战技巧之四十二:加速度传感器

    传感器字面上的意思就是传递感觉的仪器,哪些感觉呢? 视觉.听觉.味觉.触觉.嗅觉等等. 所以有人说,传感器的存在和发展,让物体有了触觉.味觉和嗅觉等感官,让物体慢慢变得活了起来. 当前Android设 ...

  3. Android实战技巧之十二:Android Studio导入第三方类库、jar包和so库

    第三方类库源码 将一网友的XMPP代码从ADT转到AS时,发现其使用了第三方类库,源码放在了lib下,直接在AS中Import project,第三方类库并没有自动导入进来,看来需要自己动手了. 项目 ...

  4. android studio导入jar包和so库,Android实战技巧之十二:Android Studio导入第三方类库、jar包和so库(示例代码)...

    第三方类库源码 将一网友的XMPP代码从ADT转到AS时,发现其使用了第三方类库,源码放在了lib下,直接在AS中Import project,第三方类库并没有自动导入进来,看来需要自己动手了. 项目 ...

  5. Android实战技巧之三十九:短信收发

    7月4日从广州出差回来就定下写作计划,但迟迟没有动笔.耽搁的原因还是老样子,工作上又有新任务,全部精力都投入过去了,每天精疲力竭的回来也打不起精神做其他事了.这就是精力管理不当所致,就像我把很多要做的 ...

  6. Android实战技巧之十:获得屏幕物理尺寸、密度及分辨率

    大家帮忙喽! 博主参加2014博客之星活动,大家帮忙投票啦!猛击这里! 通过程序去了解硬件情况是一件十分有意思的事情.很早我就研究在WM6.5上获得屏幕物理尺寸,但一直没有成功.后来又想要在Andro ...

  7. Android实战技巧之四十七:不用预览拍照与图片缩放剪裁

    副标题:Take Picture without preview Android Google出于对隐私的保护,制定了一条门槛,即在Android应用开发中编写拍照程序是必需要有图像预览的.这会对那些 ...

  8. Android实战技巧之十六:getprop与dumpsys命令

    Android设备连接PC后,我们可以通过adb命令完成绝大多数工作.下面借助getprop.dumpsys来了解一些系统相关信息. 一.getprop 此命令的原理很简单,就是从系统的各种配置文件中 ...

  9. Android实战技巧之十六 getprop与dumpsys命令

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! Andr ...

最新文章

  1. PHP+socket+SMTP、POP3协议发送、接收邮件
  2. python中使用flask实现人脸实时检测
  3. 百度echarts使用
  4. 银保监局招聘计算机岗位备考,2019年中国银保监会招聘计算机类如何备考?
  5. jieba分词实现原理(C++版 + python篇)(二)
  6. 电子测量与仪器第二次作业
  7. false-sharing原理浅析和测试
  8. 前端学习(8):HTML的基本属性和结构
  9. jenkins pipeline之语法篇
  10. java socket中的方法_Java中关于Socket的方法与作用详解
  11. button 样式_Tkinter (3)---Button
  12. 淘口令二合一生成php_3淘口令接口的封装 工具类的打造
  13. 中国用量子计算机仿生生物,中国科学技术大学研制一种可持续生物合成仿生多层级太阳能蒸汽发生器...
  14. Python TAB 补齐
  15. 方便快速地创建新浪微博表情选择对话框——jQuery Sina Emotion
  16. SpreadJS 15.0 隆重登场 SpreadJS
  17. 4.1.2. Constants
  18. Hexo图片外链生成专用文章
  19. 毕业季,作为程序员(it软件开发工程师),如何培养强大的解决问题的能力
  20. 小程序前端Vue里使用u-upload进行多图片上传

热门文章

  1. Linux下的动态库和静态库
  2. html加纵向滚动条,添纵向滚动条
  3. 程序员成长之旅——C语言三子棋
  4. 兄弟MFC-1919NW一体机远程连接默认密码
  5. HTML+CSS+JavaScript实现的动态爱心,超简单直接用!
  6. 遥感影像云检测-传统方法-:Haze Optimized Transformation(HOT)方法
  7. keras:神经网络的中间层输出
  8. [HNCTF]crypto-wps
  9. 数据分析sql面试必会6题经典_数据分析师SQL面试必备50题
  10. 114 Three.js实现深度遮挡的下雨特效