环境
Linux 版本:Ubuntu 11.04 (可由10.10的版本进行升级)64位系统
GCC版本:gcc version 4.5.2
Java版本:java version "1.6.0_26"
下载android源码前注意:
    1、保证Ubuntu系统中的容量在80G左右,以保证足够的空间来存放android源码以及编译后的相关文件。
    2、保证Ubuntu系统进行Internet访问。
联网方法:采用拨号进行连接。相关操作步骤如下所示:
1、虚拟机设置硬件网络适配器网络连接桥接
2、启动Ubuntu系统,打开终端(在普通用户下),输入相关命令如下:
$ pppoeconf  //打开后输入上网账号跟密码,确认保存
$ sudo pon dsl-provider  //上网连接命令
经过这两个步骤后就可以进行上网了。
Android源码编译所依赖的tools
01.$ sudo apt-get update
02.$ sudo apt-get -y install git-core
03.$ sudo apt-get -y install gnupg
04.$ sudo apt-get -y install sun-java6-jdk flex
05.$ sudo apt-get -y install bison
06.$ sudo apt-get -y install gperf
07.$ sudo apt-get -y install libsdl-dev
08.$ sudo apt-get -y install libesd0-dev
09.$ sudo apt-get -y install libwxgtk2.6-dev
10.$ sudo apt-get -y install build-essential
11.$ sudo apt-get -y install zip
12.$ sudo apt-get -y install curl
13.$ sudo apt-get -y install libncurses5-dev
14.$ sudo apt-get -y install zlib1g-dev
15.$ sudo apt-get -y install valgrind
注意:(如果是32bit的系统的话,则要更改几个Android.mk文件)
01./external/clearsilver/cgi/Android.mk
02./external/clearsilver/java-jni/Android.mk
03./external/clearsilver/util/Android.mk
04./external/clearsilver/cs/Android.mk
gedit游戏xml文件修改打开,修改m64m32即可
另外
build/core/main.mk中的ifneq (64,$(findstring 64,$(build_arch)))修改为:
ifneq (i686,$(findstring i686,$(build_arch)))
对于32位系统所出现的问题,解决方法:
Error1
make: ***
[out/host/linux-x86/obj/STATIC_LIBRARIES/libutils_intermediates/RefBase.o] error  1
在terminal中输入
$ gedit frameworks/base/libs/utils/Android.mk
LOCAL_CFLAGS += -DLIBUTILS_NATIVE=1 $(TOOL_CFLAGS)修改为:
LOCAL_CFLAGS += -DLIBUTILS_NATIVE=1 $(TOOL_CFLAGS) –fpermissive
Error2
make: *** [out/host/linux-x86/obj/EXECUTABLES/obbtool_intermediates/Main.o]  error 1
此处编译错误是由于ubuntu 11.10采用了GCC4.6.1导致的
修改源码目录下/build/core/combo/HOST_linux-x86.mk
并将以下语句:
HOST_GLOBAL_CFLAGS
+= -D_FORTIFY_SOURCE=0
修改为:
HOST_GLOBAL_CFLAGS
+= -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0
Android源码下载
1、安装repo
安装过程步骤如下所示:
    Repo下载安装
    1$ mkdir ~/bin  //home目录下创建bin文件夹
    2$ PATH=~/bin:$PATH  //环境变量设置
    3$ curl le/dl/googlesource/git-repo/repo > ~/bin/repo  //repo下载
    4$ chmod a+x ~/bin/repo  //权限设置,保证repo可执行
    Repo client初始化
    1$ mkdir Android  //创建Android目录,用于存放下载的android源码
2$ cd Android    //进入到Android目录
3$ repo init -u lesource/platform/manifest  //指定URL清单,定包含在Android源代码的各种存储库将被安置在工作目录中
当然也可以指定android版本,使用如下命令:
$ repo init -u lesource/platform/manifest -b android-4.0.1_r1
Android源码文件获取
$ repo sync
注意:在Android源码下载过程中凡出现问题,可以进入Android源码下载的相关source.android/source/downloading.html 进行查看。
Android源码编译
    环境初始化
1$ source build/envsetup.sh
    OR
    $ . build/envsetup.sh
    2$ lunch full-eng  //选择编译目标
    Code编译
    $ make -j4  //其中j4表示同时启动4个线程任务进行编译,可以直接使用make,这样就是最大程度使用线程数来进行编译
总结:到这里为止,android源码完成了编译过程,编译后,会在源码目录下的/out/target/product/generic/有三个镜像文件生成,分别是system.img、userdata.img以及ramdisk.img 。
注意:1、如果编译过程没有出问题,但是在/out/target/product/generic/下3个镜像文件不全,可以再次进行一次命令make,就可以解决问题了。
      2、如果是编译过程中出现错误,一般导致的原因是因为缺少了相关编译环境,可以根据提示进行安装,安装后,重新进行编译。
Windows XP下使用Android模拟器运行所编译好的文件。
    原理:将Android模拟器下所加载的system.img替换成编译后的system.img即可。
1、 将编译好的system.imgUbuntu中拷贝出来
方法:1)先拷贝到U盘或者移动硬盘中,再从U盘或移动硬盘拷贝到Windows XP硬盘下;
        2)先进行Windows XP跟Ubuntu文件夹共享,这样就可以将system.img拷贝到共享文件夹中;
        3)传FTP,从FTP上进行下载;
        4)在Ubuntu中上网将system.img作为附件进行邮件发送,然后从Windows XP下进行下载。
2、 将拷贝出来的system.img文件放置到Android模拟器下的对于文件夹中,如果Android4.0以上的版本的话,一般是在system-imges文件夹中。C:\Program Files\Android\android-sdk\system-images\android-15\armeabi-v7a
3、 启动模拟器就可以运行了。
注意:创建Android虚拟机的时候,Android版本应该跟Ubuntu下编译好的Android版本要保持一致,否则有可能替换system.img后,Android系统无法正常启动,或者无法进入Android启动界面。
Android源码修改并进行编译
    下面以2个实例来进行说明,实例1目的是实现Android系统永不休眠,实例2是实现Android系统启动后,不自动进入锁屏界面。
    实例1
    实现Android系统永不休眠其实很简单,只需要对源码下的配置文件XML下的参数进行修改即可。步骤如下:
    1$ cd frameworks/base/packages/SettingsProvider/res/values  //在下载的Android源码目录下输入此命令,进入到values目录下
    2$ l  //使用文本编辑器打开l文件
    3、将<integer name="def_screen_off_timeout">60000</integer>改为<integer name="def_screen_off_timeout">-1</integer>保存后退出 //其中60000单位是ms,表示60s,就是说60s屏幕会进行休眠状态,改为-1后,不再进入休眠
    4$ cd ../../../../../../    //返回到源码目录下
    5$ source ./build/envsetup.sh  //环境初始化
    6$ mmm frameworks/base/packages/SettingsProvider/  //SettingsProvider模块进行编译
    7$ make snod //重新打包system.img
到这里,模拟编译就完成了,查看效果的话,直接将Android模拟器下的system.img替换掉启动运行即可。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。