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

Android深度探索读后感 第四章

                                                                             第四章 源代码的下载和编译

    Android源代码包含的东西:内嵌在android系统中的应用程序:拍照,计算器,日历,相册,拨号器等的源代码;android SDK带的各种工具:如:adb,  emulator  mksdcard  apt等的源代码,android ndk的源代码。Hal源代码。

一、下载、编译和测试源代码:

1.配置android源代码下载环境:

1)创建一个用于存放下载脚本文件(repo)的目录(可将该脚本文件放到任何目录中,使用~/bin);

#madir  ~/bin

#path  ~/bin :$path

(2)下载repo脚本(用于下载源代码);

# curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo

#chmod a+x ~/bin/repo

(3)创建用于存放android源代码的目录(可放在其他目录中);

# mkdir android_reource

# cd android_source

4)初始化;# repo init -u https://android.googlesource.com/platform/manifest 

5)开始下载android源代码;# repo sync

 

2.android源代码目录结构解析;

android部分源代码的含义:

abi:应用程序二进制接口;

Device:与设备相关的代码;

Hardware:硬件层和库。

Sdk:在开发环境中使用的工具。

 3.下载android源代码中的一部分,

下载android源代码的子项目的方法:

使用reop sync命令# repo sync platform/bootable/recovery

或是使用git clone命令:# git clone http://android.googlesourse.com/<project name>

 4.编译android源代码的步骤:第一步:初始化编译环境:

# source build/envsetup.sh# . build/envsetup.sh 第二步;选择目标:# lunch full-eng 第三步:编译android源代码:# make   

 5.out目录结构分析;out目录是存放编译andriod源代码生成的目标文件的默认目录。镜像文件可以使用android模拟器或真机中测试。

 6.将自己的APK作为内置程序发布;为了测试文件,可以将一个自己生成的apk程序嵌入到文件中。

 7.用模拟器测试system.img文件。

二、下载和编译linux内核源代码:

下载linux内核源代码;git clone http://android.googlesource.com.kernel/common.git,执行这个命令可以下载到最新的内核源代码,查看当前的远程版本用git branch -a ,使用git checkout -b android-3.0 remotes/origin/android-3.0导出android3.0的内核;# git clone http://android,googlesourse.com/kernel/goldfish.git  

# git checkout -b android-goldfish-2.6.29 remotes/origin/android-goldfish-2.6.29   //导出goldfish

安装android内核的编译环境有4个步骤:1.准备工作

:将arm-linux-gcc-4.3.2.tgz文件和arm-none-linux-gnueabi-arm-2008q3-72-for-linux.tar,bz2文件复制到工作目录

2.解压

3.验证交叉编译器是否安装成功# ls /user/local/arm -1

4.安装libncurses5# apt-get install libncurses5-dev

5.配置和编译linux内核。

转载于:https://www.cnblogs.com/chen06/p/5438099.html

相关文章:

  • Android官方教程翻译(4)——启动另一个Activity
  • 动态生成自定义控件ascx如何给ascx传值
  • Android UI(二)DridView的菜单
  • HTML5 预加载
  • SonarQube简介
  • ​虚拟化系列介绍(十)
  • 用Python设计第一个游戏 - 零基础入门学习Python002
  • MFC 消息
  • Asp.net常用的三十多个代码(2)
  • 1、Nginx安装和配置文件
  • 小插曲之变量和字符串 - 零基础入门学习Python003
  • Linux rpm 命令参数使用
  • 不起眼的 z-index 却能牵扯出这么大的学问(转)
  • 创建简单存储过程
  • jquery ajax学习笔记
  • [分享]iOS开发-关于在xcode中引用文件夹右边出现问号的解决办法
  • Apache Pulsar 2.1 重磅发布
  • CAP理论的例子讲解
  • happypack两次报错的问题
  • Hexo+码云+git快速搭建免费的静态Blog
  • JavaScript学习总结——原型
  • k8s 面向应用开发者的基础命令
  • laravel5.5 视图共享数据
  • Logstash 参考指南(目录)
  • Promise初体验
  • Python_OOP
  • Spring Cloud Feign的两种使用姿势
  • webpack4 一点通
  • Web标准制定过程
  • 初识MongoDB分片
  • 从setTimeout-setInterval看JS线程
  • 多线程事务回滚
  • 七牛云假注销小指南
  • 前端_面试
  • 前言-如何学习区块链
  • 深入浅出webpack学习(1)--核心概念
  • 一份游戏开发学习路线
  • 优化 Vue 项目编译文件大小
  • 如何用纯 CSS 创作一个货车 loader
  • ​软考-高级-系统架构设计师教程(清华第2版)【第15章 面向服务架构设计理论与实践(P527~554)-思维导图】​
  • #鸿蒙生态创新中心#揭幕仪式在深圳湾科技生态园举行
  • (附源码)ssm高校升本考试管理系统 毕业设计 201631
  • (接口封装)
  • (蓝桥杯每日一题)平方末尾及补充(常用的字符串函数功能)
  • (十)c52学习之旅-定时器实验
  • (算法二)滑动窗口
  • (转)Android学习笔记 --- android任务栈和启动模式
  • (转载)PyTorch代码规范最佳实践和样式指南
  • .NET4.0并行计算技术基础(1)
  • .NET与java的MVC模式(2):struts2核心工作流程与原理
  • /bin/bash^M: bad interpreter: No such file ordirectory
  • /dev下添加设备节点的方法步骤(通过device_create)
  • ::前边啥也没有
  • @Documented注解的作用
  • @ResponseBody