当前位置: 首页 > news >正文

JAVA安卓4.4.4_Android源码4.4.4_r1下载和编译

系统:ubuntu 16.04.2 TLS

1.源码下载:

sudo apt-getinstall curl

curl https://storage.googleapis.com/git-repo-downloads/repo > repo

chmod a+x repo

mkdir srcAndroid

cd srcAndroid

git config--global user.name "xunbu7"git config--global user.email "xunbu7@gmail.com"repo init-u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-4.4.4_r1

repo sync

选择目标版本源码,参考编译版本标签对照表:

2.驱动下载:

c9a7100559fa27d4734cb634c867b381.png

将下载下来的3个压缩包加压到源码目录,分别执行3个sh文件,输入“I ACCEPT”。可以看到源码目录多了一个vendor目录。删除sh文件即可。

3.环境配置

3.1 jdk环境

4.4.4_r1需要jdk6环境,而标准库不支持旧版本,所以下载方式如下:

Open the terminal and execute below commands one by one. It will install JDk as well as JRE. No need to configure anything. It will take care of everything.

sudo add-apt-repository ppa:webupd8team/java

sudo apt-getupdate

sudo apt-get install oracle-java6-installer //JDK 6 along with JREsudo apt-get install oracle-java7-installer //OR FOR JDK 7

有时候不知道java安装在哪里了,通过whereis java命令不能知道java真实的安装路径,可以通过update-alternatives --config java命令查看

bean@ubuntu :~$ update-alternatives --config java

Thereis only one alternative in link group java: /usr/lib/jvm/java-7-oracle/jre/bin/java

Nothing to configure.

或者官网下载到本地后

seven@ThinkPad:~/Downloads$ chmod a+x jdk-6u45-linux-x64.bin

seven@ThinkPad:~/Downloads$ ./jdk-6u45-linux-x64.bin

移动到自定义目录:

seven@ThinkPad:~/Documents/Android$ mv -f ~/Downloads/jdk1.6.0_45/.

seven@ThinkPad:~/Documents/Android/jdk1.6.0_45$ pwd/home/seven/Documents/Android/jdk1.6.0_45

修改配置文件:

seven@ThinkPad:~$ vim .bashrc

内容:

export JAVA_HOME=/home/seven/Documents/Android/jdk1.6.0_45

export JRE_HOME=${JAVA_HOME}/jre

export PATH=$PATH:${JAVA_HOME}/bin

export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib

seven@ThinkPad:~$ source .bashrc

seven@ThinkPad:~$ javac -version

javac1.6.0_45

3.2 安装make

ubuntu16.04自带的make版本过高,无法编译。因此需要将make降至3.82.

下载地址ftp://ftp.gnu.org/gnu/make/

下载后到Downloads下将文件拷到其他目录(home下即可),然后解压

tar -zxvf make3.8.2.tar.gz

解压后进入到make3.8.2的目录下

./configure

make

sudo make install

执行完后在/usr/local/bin中可得到新版本的make,复制到/usr/bin中即可

seven@ThinkPad:/usr/local/bin$ sudo mv make /usr/bin

注:make过程中可能会出现错误,不用理会,只要make install能够成功执行即可。

3.3 安装其他编译环境

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

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 unzip m4

4.编译

echo export USE_CCACHE=1 >> ~/.bashrc

prebuilts/misc/linux-x86/ccache/ccache -M 50Gsource build/envsetup.sh

lunch aosp_hammerhead-userdebug

//虚拟机中当时必须用sudo su (切换su,root下:否则上面5儿子配置会被虚拟机配置覆盖),后来用真实机不用也ok。

make –j8

5.刷机

源码编译完成后,我们开始将编译好的系统烧录进手机中。首先,先将我们的Nexus 5连接到电脑上,注意一定要打开USB调试,连接后手机可能会提示电脑要调试这台手机,允许即可。然后,我们令手机进入recovery模式,还是刚才的terminal(在源码根目录下),输入以下命令:

seven@ThinkPad:~/srcAndroid/src4.4.4_r1/out/host/linux-x86/bin$ ./adb reboot bootloader

seven@ThinkPad:~/srcAndroid/src4.4.4_r1/out/host/linux-x86/bin$ sudo ./fastboot devices(用sudo,否则发现不了设备)

[sudo] password for seven:

072ba3800ae5fd9cfastboot

seven@ThinkPad:~/srcAndroid/src4.4.4_r1/out/host/linux-x86/bin$ sudo ANDROID_PRODUCT_OUT=/home/seven/srcAndroid/src4.4.4_r1/out/target/product/hammerhead ./fastboot flashall -w(用sudo,否则发现不了设备)

或者也可以一个个img刷入:

0、重启进入刷机模式

adb reboot bootloader1、依次刷入其他镜像文件:

fastboot flash recovery recovery.img

fastboot flash boot boot.img

fastboot flash system system.img2、强烈建议双清(注意备份数据):

fastboot flash cache cache.img

fastboot flash userdata userdata.img3、再次重启:

fastboot reboot

相关文章:

  • java 设置listview单元格颜色_动态改变Listview的item背景颜色和item中字体的颜色
  • 最长递增子序列 java_动态规划深入6 最长递增子序列
  • yml mysql参数_yml配置--给参数设置默认值
  • ant java eclipse_(转)Eclipse中使用Ant
  • java json merge_JavaScript 如何合并两个Json对象
  • java setselectionend_Java Gallery.setSelection方法代码示例
  • stringbuffer java API_StringBuffer类
  • jasperreport java数据_ireport5.6.0+jasperreports 使用java对象做为数据源导出excel或者Pdf...
  • 与时间相关的java源码_JAVA的Date类与Calendar类
  • Java修改文件扩展属性_扩展PropertyPlaceholderConfigurer对prop文件中的属性加密(修正1)...
  • java定义显性构造函数_Java基础之三、类的特性和接口
  • mysql用其他表更新_mysql用一个表更新另一个表
  • java maven 打包jar_maven 打包可执行 jar包 java application 方法
  • java专业考独立本科_复旦大学-计算机网络(独立本科B080709)(停考过渡)
  • java 自定义组件状态改变事件_Swing自定义事件-一个组件的事件传递给另一个组件...
  • 2018天猫双11|这就是阿里云!不止有新技术,更有温暖的社会力量
  • Android单元测试 - 几个重要问题
  • Bootstrap JS插件Alert源码分析
  • django开发-定时任务的使用
  • java8 Stream Pipelines 浅析
  • java8-模拟hadoop
  • java多线程
  • Spring框架之我见(三)——IOC、AOP
  • 个人博客开发系列:评论功能之GitHub账号OAuth授权
  • 聊聊flink的TableFactory
  • 前端 CSS : 5# 纯 CSS 实现24小时超市
  • 浅谈Kotlin实战篇之自定义View图片圆角简单应用(一)
  • 使用API自动生成工具优化前端工作流
  • 说说动画卡顿的解决方案
  • 算法---两个栈实现一个队列
  • 腾讯优测优分享 | Android碎片化问题小结——关于闪光灯的那些事儿
  • 线上 python http server profile 实践
  • ​ssh-keyscan命令--Linux命令应用大词典729个命令解读
  • # Swust 12th acm 邀请赛# [ A ] A+B problem [题解]
  • #、%和$符号在OGNL表达式中经常出现
  • #13 yum、编译安装与sed命令的使用
  • #pragma once与条件编译
  • (04)odoo视图操作
  • (SpringBoot)第七章:SpringBoot日志文件
  • (二)pulsar安装在独立的docker中,python测试
  • (论文阅读31/100)Stacked hourglass networks for human pose estimation
  • (四)c52学习之旅-流水LED灯
  • (学习日记)2024.01.19
  • (转载)PyTorch代码规范最佳实践和样式指南
  • (转载)在C#用WM_COPYDATA消息来实现两个进程之间传递数据
  • (轉貼) VS2005 快捷键 (初級) (.NET) (Visual Studio)
  • **CI中自动类加载的用法总结
  • .NET处理HTTP请求
  • .NET开发人员必知的八个网站
  • .NET使用存储过程实现对数据库的增删改查
  • /proc/interrupts 和 /proc/stat 查看中断的情况
  • @Autowired @Resource @Qualifier的区别
  • @zabbix数据库历史与趋势数据占用优化(mysql存储查询)
  • [Android 13]Input系列--获取触摸窗口
  • [BZOJ 4129]Haruna’s Breakfast(树上带修改莫队)