Android源码编译
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Android源码编译
开发工具:Ubuntu10.04
在Ubuntu下使用root用户登录,注意root一开始是锁定的,使用如下命令解锁:sudopasswd root 按回车铵,提示输入当前密码,在提示输入二次密码。
输入完成切换用户使用root用户登录。
Android源码结构
Makefile (全局的Makefile)
bionic (Bionic含义为仿生,这里面是一些基础的库的源代码)
bootloader(引导加载器)
build (build目录中的内容不是目标所用的代码,而是编译和配置所需要的脚本和工具)
dalvik (JAVA虚拟机)
development(程序开发所需要的模板和工具)
external (目标机器使用的一些库)
frameworks (应用程序的框架层)
hardware (与硬件相关的库)
kernel (Linux2.6的源代码)
packages (Android的各种应用程序)
prebuil (Android在各种平台下编译的预置脚本)
recovery (与目标的恢复功能相关)
system (Android的底层的一些库)
Out (编译好的文件)
编译Android源码必需的安装的软件包
g++库文件有可能Ubuntu自带,使用g++ -v命令查找是否安装,如果没有自带请手动安装,使用如下命令,sudo apt-get-install g++-4.4.
注意:g++分很多版本,如果使用了最新版本4.6将没办法编译,建议安装4.4版本
Gcc库文件有可能Ubuntu自带,使用gcc–v命令查找是否安装,如果没有自带使用如下命令手动安装,sudo apt-get-install gcc-4.4.
注意:gcc分很多版本,如果使用了最新版本4.6将没办法编译,建议安装4.4版本
不过还有一些应该是linux系统自带的,如果缺少就按照提示install一下sudo apt-get install build-essential
sudo apt-get install make
sudo apt-get install libc6-dev
sudo apt-get install patch
sudo apt-get install texinfo
sudo apt-get install libncurses-dev
sudo apt-get install git-core gnupg
sudo apt-get install flex bison gperflibsdl-dev libesd0-dev
libwxgtk2.6-dev build-essential zip curl
sudo apt-get install ncurses-dev
sudo apt-get install zlib1g-dev
sudo apt-get install valgrind
sudo apt-get install python2.5
安装java环境
首先从sun官方网站下载jdk-6u16-linux-i586.bin文件并安装它。
使用./
jdk-6u16-linux-i586.bin命令进行安装
Java jdk环境变量配置,打开系统文件找到etc/profile文件打开将如下代码复制到,倒数第二行,注销用户才能生效
export JAVA_HOME=/usr/java/jdk1.6.0_14
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
注意:如果编译Android2.3源码就要安装程1.6版本的JDK,编译Android2.2源码就要安装1.5JDK。
配置jdk环境变量方法有好几种,那也是对应你ubuntu版本定,如果你使用ubuntu10.04请照以上方法配置.还有一点要注意的是在
etc/environment文件配置坏境变量,下次启动ubuntu将无法登录.
源码编译步骤
注意
arm-2010q1-202-arm-none-linux-gnueabi-i686-pc-linux-gnu 和
arm-2010q1 拷贝到/opt/目录下
编译rootfs
进入源码跟目录输入如下命令
. build/envsetup.sh(注意:”.”与build有个空格)
Lunch
输入12(注意:编译Android2.3源码才能输入12)
Make update-api更新api
make
编译rootfs需要2到5个小时,可能出现的错误如:
1.找不到命令,说明所需要的库文件没安装
解决方法,输入如下命令安装库文件
sudo apt-get install git-core flex bison gperflibsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev
sudo apt-get install git-core gnupg flex bison gperf build-essential
sudo apt-get install zip curl zlib1g-dev libc6-dev lib32ncurses5-dev ia32-libs
sudo apt-get install x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev
sudo apt-get install libgl1-mesa-dev g++-multilib mingw32 tofrodos
python-markdown
sudo apt-get install libxml2-utils
2.如果出现如下错误是JDK没安装好或配置环境变量配错
解决方法
使用命令Java –version查看是否JDK安装成功
首先从sun官方网站下载jdk-6u16-linux-i586.bin文件并安装它。
使用./
jdk-6u16-linux-i586.bin命令进行安装
Java jdk环境变量配置,打开系统文件找到etc/profile文件打开将如下代码复制到
倒数第二行,注销用户才能生效
export JAVA_HOME=/usr/java/jdk1.6.0_14
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
3.提示只能在64位系统下编译
Checking build tools versions...
build/core/main.mk:76: ********************************************** **************
build/core/main.mk:77: You are attempting to build on a 64-bit system. build/core/main.mk:78: Only 64-bit build environments are supported b eyond froyo/2.2.
build/core/main.mk:79: ********************************************** **************
build/core/main.mk:80: *** stop。
停止。
解决方法
因为Android2.3默认是64位的系统上编译,需要手动修改build/core/main.mk,把这个判断部分注释掉:
#ifneq (64,$(findstring 64,$(build_arch)))
#$(warning ********************************************************** **)
#$(warning You are attempting to build on a 32-bit system.)
#$(warning Only 64-bit build environments are supported beyond froyo/ 2.2.)
#$(warning ********************************************************** **)
#$(error stop)
#endif
4.提示如下错误,gcc库文件版本不对
解决方法
使用命令gcc–v查看gcc库文件信息,删除当前gcc库文件,重新安装4.4.3版本5.提示g++找不到命令,出现如下错误
解决方法
使用命令g++ -v查看g++库文件信息.打开ubuntu自带的新立得, 输入g++找到g++4.4.3版本,打勾点应用进行安装
编辑kernel
进入andorid源码的kernel目录
Make meson_refc03_defconfig
Make uImage
cp arch/arm/boot/uImage ../out/target/product/c03ref/
注意:编译出来的uimage文件大小3.6M左右
编辑recovery
进入android源码kernel目录
.env.sh
Make meson_refc03_defconfig
Make uImage
cp arch/arm/boot/uImage ../out/target/product/c03ref/uImage_recovery 注意:编译recovery的文件为3.8M,如果小于2M将无法安装,
解决方法,输入如下命令
. env.sh
Make meson_refc03_defconfig
Make menuconfig
选择第一项
找到如下项
输入如下路径,完成记得保存
重新编译kernel和recovery
Android源码打包,回到源码跟目录,输入如下命令
. build/envsetup.sh
Lunch
12
Make otapackage
打包完成将放在../out/target/product/c03ref下
1把自己项目copy到源码的packages/amlogic下
2项目里的bin和get文件删除
3添加Android.mk文件
3修改Android.mk,添加如下代码
#ifeq ($(BOARD_USE_DEFAULT_AML2DLAUNCHER_MBX),true)
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := $(call all-subdir-java-files)
LOCAL_PACKAGE_NAME :=com.hotel.jago.activity注意:这里是自己项目的包名
LOCAL_CERTIFICATE := platform
LOCAL_OVERRIDES_PACKAGES := Home
include $(BUILD_PACKAGE)
#endif
4打包自己的项目,在源代码跟目录输入如下命令
. build/envsetup.sh
Lunch
12
cd 进入自己项目的位置
mm
apk放在out/target/product/c03ref/system/app
apk有关文件放在out/target/product/c03ref/obj/apps
删除launch
device/amlogic/c03ref/c03ref.mk打开删除有关launch代码
out/target/product/c03ref/system/app找到有关的apk删除
out/target/product/c03ref/obj/apps找到有关文件删除
添加启动项
在项目的资源文件(androidManifext.xml)添加如下代码
<category android:name="android.intent.category.HOME" />
<category android:name="android.intent.category.DEFAULT" />。