编译 Android 代码

Type the following command to install it:

$ tar -xvzf Android_PlatformRel_Linux_MHLV_2010WW05.tgz -C [installed_directory]

Building Android

Download android donut release into [Android_directory]

$ repo init -u git://android.git.kernel.org/platform/manifest -b donut

$ repo sync

Notes: please refer manifest file of [installed_directory]/pxa_donut/src/donut/manifest.xml

Apply PXA patches by following command

$ cp [installed_directory]/pxa_donut/src/donut/donut_patches/* [Android_directory]/ -rf

$ cd [Android_directory]/

$ ./apply_donut_patches.sh

$ tar zxvf [installed_directory]/pxa_donut/src/donut/vendor.tgz -C [Android_directory]/

如果之前装了 java6 sdk ,但编译 Android 需要 jdk5 ,所以先把 Java6 屏蔽掉。

[email protected]:~$ ls /usr/bin/j*

/usr/bin/java /usr/bin/javaws /usr/bin/jexec /usr/bin/jockey-text

/usr/bin/java_vm /usr/bin/jcontrol /usr/bin/jockey-gtk /usr/bin/join

[email protected]:~$ sudo mv /usr/bin/java /usr/bin/java.bak

[email protected]:~$ sudo mv /usr/bin/javaws /usr/bin/javaws.bak

[email protected]:~$ sudo mv /usr/bin/java_vm /usr/bin/java_vm.bak

[email protected]:~$ ls /usr/bin/j*

/usr/bin/java.bak /usr/bin/jcontrol /usr/bin/jockey-text

/usr/bin/java_vm.bak /usr/bin/jexec /usr/bin/join

/usr/bin/javaws.bak /usr/bin/jockey-gtk

比如 jdk-1_5_0_21-linux-i586.bin 放到如下目录

/home/lua/Downloads

shell 窗口执行 sh jdk-1_5_0_21-linux-i586.bin

jdk5 将安装到 /home/lua/Downloads/jdk1.5.0_21

/home/lua/Downloads/jdk1.5.0_21/bin 添加到 PATH

[email protected]:~$ echo $PATH

/home/lua/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/lua/arm-marvell-linux-gnueabi/bin:/home/lua/bin:/home/lua/work/android-sdk-linux_86/tools:/home/lua/work/eclipse:/home/lua/Downloads/jdk1.5.0_21/bin

测试 Java ,系统能找到 java 且版本正确。

[email protected]:~$ which java

/home/lua/Downloads/jdk1.5.0_21/bin/java

[email protected]:~$ which javac

/home/lua/Downloads/jdk1.5.0_21/bin/javac

[email protected]:~$ java -version

java version "1.5.0_21"

Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_21-b01)

Java HotSpot(TM) Client VM (build 1.5.0_21-b01, mixed mode, sharing)

[email protected]:~$ javac -version

javac 1.5.0_21

编译 donut 代码

[email protected]:~$ cd donut/

[email protected]:~/donut$ ls

apply_donut_patches.sh build external out prebuilt

apply_donut_patches.sh~ dalvik frameworks packages system

bionic development hardware patch.log vendor

bootable donut_patches Makefile patch.log~ vendor.tgz

[email protected]:~/donut$ . build/envsetup.sh

[email protected]:~/donut$ choosecombo

Build for the simulator or the device?

1. Device

2. Simulator

Which would you like? [1]

Build type choices are:

1. release

2. debug

Which would you like? [1]

Which product would you like? [generic] littleton

Variant choices are:

1. user

2. userdebug

3. eng

Which would you like? [eng] user

============================================

PLATFORM_VERSION_CODENAME=Donut

PLATFORM_VERSION=Donut

TARGET_PRODUCT=littleton

TARGET_BUILD_VARIANT=user

TARGET_SIMULATOR=false

TARGET_BUILD_TYPE=release

TARGET_ARCH=arm

HOST_ARCH=x86

HOST_OS=linux

HOST_BUILD_TYPE=release

BUILD_ID=Donut

============================================

如果是四核 CPU ,把虚拟机配置为 4 核,效率会提高 ( 需要关闭系统,然后设置 )

[email protected]:~/donut$ make -j4

<!-- [endif]-->编译 Android Linux 内核

解压 linux kernel

$tar zxvf [installed_directory]/pxa_donut/src/linux-2.6.29-patches/base/linux-2.6.29.tgz -C [Android_directory]

打上 marvell patch

$ cd [installed_directory]/pxa_donut/src/linux-2.6.29-patches/patches/

$ ./apply_kernel_patch.sh [Android_directory]/linux-2.6.29

进入 linux kernel 目录

$ cd [Android_directory]/linux-2.6.29

$ cp [Android_directory]/out/target/product/littleton/root root –a

要先将 arm-eabi-gcc 的路径添加到环境变量 PATH ,如果 Platform 的版本为: Android_PlatformRel_Linux_MHLV_2010WW05 则其 arm-eabi-gcc 的路径为 /donut/prebuilt/linux-x86/toolchain/arm-eabi-4.2.1/bin

$ export ARCH=arm

$ export CROSS_COMPILE=arm-eabi-

配置编译选项

$ make pxa3xx_android_defconfig

编译

$ make zImage

最终产生目标文件

After a short while, the binaries will be generated under arch/arm/boot/zImage

更多相关文章

  1. Android Studio实现代码混淆
  2. Android之打开闪光灯关键代码
  3. Android笔记: Android版本号
  4. Android代码混淆官方实现方法
  5. Android进度条源代码
  6. Android版本下载以及切换
  7. Android中使用ViewPage进行广告轮播测试代码
  8. Android Wi-Fi 设置带宽代码流程
  9. Android第一行代码笔记

随机推荐

  1. Android之TabLayout使用和默认选中+移动(
  2. SuperMap iClient 6R(2012) SP3新特性预
  3. 实时监听Android系统的网络连接状态
  4. Android(安卓)app 适配
  5. android 应用程序的内存分析
  6. Google Play services SDK的安装
  7. Android之BroadcastReceiver(三):发送自定义
  8. Android(安卓)AppWidget核心之AppWidgetS
  9. Android架构组件(3)LiveData框架
  10. EventBus源码解析-总结篇