Android 6.0源码编译及烧录到真机过程记录(3)

2 安装依赖

sudo apt-get install -y git flex bison gperf build-essential libncurses5-dev:i386 sudo apt-get install libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-dev g++-multilib sudo apt-get install tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386 sudo apt-get install dpkg-dev libsdl1.2-dev libesd0-dev sudo apt-get install git-core gnupg flex bison gperf build-essential sudo apt-get install zip curl zlib1g-dev gcc-multilib g++-multilib sudo apt-get install libc6-dev-i386 sudo apt-get install lib32ncurses5-dev x11proto-core-dev libx11-dev sudo apt-get install lib32z-dev ccache sudo apt-get install libgl1-mesa-dev libxml2-utils xsltproc unzip m4

Ubuntu 16.04请务必使用上面的依赖,Ubuntu 16.04需要的依赖和Ubuntu 14.04所需要的依赖是不同的

问题2:

clang: error: linker command failed with exit code 1 (use -v to see invocation)
build/core/host_shared_library_internal.mk:51: recipe for target 'out/host/linux-x86/obj/lib/libart.so' failed
make: *** [out/host/linux-x86/obj/lib/libart.so] Error 1
make: *** 正在等待未完成的任务....
据说这个错误只在ubuntu16.04 上出现

修改源码

修改 mydroid/art/build/Android.common_build.mk 文件,定位到75行,注释掉75-78:

 75 #ifneq ($(WITHOUT_HOST_CLANG),true)
 76  # By default, host builds use clang for better warnings.
 77 #  ART_HOST_CLANG := true
 78 #endif

如果不修改这里,会遇到一个比较棘手的编译错误,修改的目的是把CLANG这个编译选项关掉,详见后面的编译记录,百度搜狗都无解,这个错误只会在Ubuntu16.04上遇到,Ubuntu14.04则不存在这个问题

4、刷机

刷机过程碰到 fastboot reboot < waiting for any device > fastboot devices no permissions (verify udev rules); see [http://developer.android.com/tools/device.html] fastboot fastboot命令一直识别不了手机,一开始以为时fastboot版本的问题,后来发现不是这么回事 需要设置usb权限 因为ubuntu这样的系统都是默认以非root身份在运行的,要使用usb调试,需要sudo支持。 fastboot模式下插入手机 $ lsusb ninjame@ubuntu1604:~$ lsusb Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub Bus 001 Device 002: ID 04d9:a0cd Holtek Semiconductor, Inc. Bus 001 Device 030: ID 18d1:4ee0 Google Inc. Bus 001 Device 003: ID 093a:2510 Pixart Imaging, Inc. Optical Mouse Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub $sudo vim /etc/udev/rules.d/60-android.rules //60-android.rules为新建的。 加入以下内容: SUBSYSTEM=="usb", ATTRS{idVendor}=="18d1", ATTRS{idProduct}=="4ee0",MODE="0666" 其中的idvendor idProduct指的是USB的ID可以使用lsusb查询得到。 比如我的是: lsusb Bus 001 Device 030: ID 18d1:4ee0 Google Inc. ID 18d1 就是idVendor ,4ee0就是 idProduct 运行命令,重启udev: $sudo chmod a+rx /etc/udev/rules.d/60-android.rules $sudo service udev restart (很重要)拔掉usb重新连上再执行: fastboot devices ninjame@ubuntu1604:~$ fastboot devices 0779af0143a66640 fastboot


设置环境变量 sudo vim /etc/profile
export ANDROID_PRODUCT_OUT="/home/ninjame/aosp/out/target/product/hammerhead"
source /etc/profile


ninjame@ubuntu1604:~/aosp/out/target/product/hammerhead$ fastboot -w flashall
target reported max download size of 1073741824 bytes
wiping userdata...
Creating filesystem with parameters:
    Size: 13725835264
    Block size: 4096
    Blocks per group: 32768
    Inodes per group: 8144
    Inode size: 256
    Journal blocks: 32768
    Label:
    Blocks: 3351034
    Block groups: 103
    Reserved block group size: 823
Created filesystem with 11/838832 inodes and 93654/3351034 blocks
wiping cache...
Creating filesystem with parameters:
    Size: 734003200
    Block size: 4096
    Blocks per group: 32768
    Inodes per group: 7472
    Inode size: 256
    Journal blocks: 2800
    Label:
    Blocks: 179200
    Block groups: 6
    Reserved block group size: 47
Created filesystem with 11/44832 inodes and 5813/179200 blocks
--------------------------------------------
Bootloader Version...: HHZ12k
Baseband Version.....: M8974A-2.0.50.2.28
Serial Number........: 0779af0143a66640
--------------------------------------------
checking product...
OKAY [  0.100s]
sending 'boot' (9160 KB)...
OKAY [  0.500s]
writing 'boot'...
OKAY [  0.785s]
sending 'recovery' (10018 KB)...
OKAY [  0.566s]
writing 'recovery'...
OKAY [  0.825s]
erasing 'system'...
OKAY [  1.066s]
sending 'system' (358584 KB)...
OKAY [ 11.452s]
writing 'system'...
OKAY [ 25.345s]
erasing 'userdata'...
OKAY [  7.935s]
sending 'userdata' (137318 KB)...
OKAY [  4.511s]
writing 'userdata'...
OKAY [  9.139s]
erasing 'cache'...
OKAY [  0.584s]
sending 'cache' (13348 KB)...
OKAY [  0.630s]
writing 'cache'...
OKAY [  1.067s]
rebooting...

finished. total time: 65.037s

第一次开机如果卡住,只需要进到recovery模式下,执行wipe cache partition,清除系统缓存。

整个过程比较曲折,但看到开机画面弹出时,还是挺开心的。

编译的镜像烧入手机,比较精简,上几张图

截图直接保存到电脑:adb shell screencap -p | sed 's/\r$//' > screen.png

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/13887.html