当前位置:文档之家› Android开发入门文档 v1.1

Android开发入门文档 v1.1

RK28平台技术文档Android 开发入门部 门: 内核组 版 本: V1.1 作 者: 陈美友 文件状态:[√] 草稿[ ] 正式发布[ ] 正在修改日 期: 2008-12-1 关键字 Linux 、Android 、Native C/C++、编译、下载概 述 本文档主要讲述了Android 的下载、编译,以及本地C/C++程序的开发、Android 应用程序的开发等…本文档适用了Android 开发的初学者目录下载ANDROID源码 (3)编译ANDROID源码: (4)编译ANDROID中的LINUX内核: (5)编译NATIVE C/C++程序 (6)运行NATIVE C/C++应用程序 (7)在WINDOWS XP操作系统上构建ANDROID应用程序开发环境 (8)编写ANDROID应用程序 (9)ANDROID SDK文件夹结构分析 (9)ANDROID源代码结构 (10)ANDROID应用程序生成 (10)注:如果你要创建Android的SDK,那么你必须安装JDK5,不要安装JDK6 $sudo apt-get install sun-java5-jdk如果你使用apt-get下载安装程序时,发现某些安装包无法下载的情况,那么你可以从网络上其它地方用其它的工具下载安装包,然后进行安装。

我通常是通过Windows上的迅雷下载,然后通过VMware中的文件共享传到Linux系统中。

我的电脑:主系统:Windows XP模拟器安装在Windows XP上VMware中安装Linux:Ubuntu8.10Android源码存放路径:~/mydroid下载Android源码在这里面以Ubuntu(x86)操作系统为例,说明下载Android的步骤:下载必要工具:下载GIT工具:$ sudo apt-get install git-core gnupg下载JDK6:$ sudo apt-get install sun-java6-jdk下载下列工具包:flex, bison, gperf, libsdl-dev, libesd0-dev, libwxgtk2.6-dev (optional), build-essential, zip, curl$ sudo apt-get install flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev下载Valgrind工具(可选):$ sudo apt-get install valgrind安装Repo工具:创建目录存放Repo:$ cd ~$ mkdir bin$ export PATH=~/bin:$PATH下载Repo:$ curl /repo >~/bin/repo$ chmod a+x ~/bin/repo创建文件夹用于存放Android源码:$ mkdir ~/mydroid$ cd ~/mydroid配置Repo:$ repo init -u git:///platform/manifest.git下载Android源代码:$ repo sync注意:因为网络不稳定的原因,下载过程中经常发生下载中断的现象,这里提供通过脚本的方式自动下载当下载中断发生时,命令如下:cat >> getAndroid.sh << "EOF"#!/bin/bashecho "======start repo sync======"repo syncwhile [ $? = 1 ]; doecho “======sync failed, re-sync again======”sleep 3repo syncdoneEOF$ chmod 711 getAndroid.sh然后运行该脚本即可下载Android源代码:$./getAndroid.sh编译Android源码:Android 的源码编译比较简单,如果你的源码是在Linux OS上下载的,那么直接进入Android所在目录运行make即可:#make如果你的源码是从其它地方拷贝得来,那么你在make之前需要安装以下这些软件包:#sudo apt-get install flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-devbuild-essential zip make#sudo apt-get install sun-java6-jdk python(注:如果你要创建Android的SDK,那么你必须安装JDK5,不要安装JDK6)#sudo apt-get install libsdl1.2-dev libsdl1.2debian源代码的编译是一个很慢长的过程,在我的电脑上花费了大约3个小时。

创建SDK:sdk$make会在myandroid/out/host/linux-x86/sdk中生成sdk编译Android中的Linux内核:1、获取.config文件,这里从模拟器中获取.config文件:a、启动模拟器后,打开MS-DOS窗口并进入SDK的Tools目录b、输入>adb pull /proc/config.gz d:\ 将文件保存到d:\config.gzc、将config.gz文件解压并改名为.configd、将.config文件拷贝到/home/cmy/mydroid/kernel/2、添加交叉编译链的路径:$sudo -s -H$exportPATH=$PATH:/home/cmy/mydroid/prebuilt/linux-x86/toolchain/arm-eabi-4.2.1/bin3、配置内核:$cd /home/cmy/mydroid/kernel$make ARCH=arm menuconfig在弹出的窗口中,在底部找到“Load Config”的字样,将.config载入修改配置,保存后,选择底部的退出,将所做的修改保存4、编译内核:$make zImage ARCH=arm CROSS_COMPILE=arm-eabi-5、如果要清除上次的编译,以便开始新的编译,请输入命令:$make mrproper如果你不想每次make时都要输入ARCH=arm、CROSS_COMPILE=arm-eabi-那么你可以修改\kernel\Makefile,在Makefile文件中找到ARCH与CROSS_COMPILE这两个变量,修改如下:ARCH:=armCROSS_COMPILE:=arm-eabi-编译kernel使用:$make menuconfig$make zImage编译Native C/C++程序Native程序,也就是可以在Android的Linux系统下直接运行的程序I、使用Android SRC中自带的toolchain工具动态编译C/C++程序:先进入Android SRC目录,如:$HOME/mydroid---- Build C File ----编译生成hello.o:$prebuilt/linux-x86/toolchain/arm-eabi-4.2.1/bin/arm-eabi-gcc -Ibionic/libc/arch-arm/include -I bionic/libc/include -I bionic/libstdc++/include -Ibionic/libc/kernel/common -I bionic/libc/kernel/arch-arm -includesystem/core/include/arch/linux-arm/AndroidConfig.h -c -o hello.o hello.c动态链接生成hello:$prebuilt/linux-x86/toolchain/arm-eabi-4.2.1/bin/arm-eabi-gcc -nostdlib -Bdynamic-Wl,-T,build/core/armelf.x -Wl,-dynamic-linker,/system/bin/linker -Wl,--gc-sections-Wl,-z,nocopyreloc -o hello -Lout/target/product/generic/obj/lib-Wl,-rpath-link=out/target/product/generic/obj/lib -lc -lstdc++ out/target/product/generic/obj/lib/crtbegin_dynamic.o hello.o-Wl,--no-undefined ./prebuilt/linux-x86/toolchain/arm-eabi-4.2.1/bin/../lib/gcc/arm-eabi/4.2.1/interwork/libgcc.a out/target/product/generic/obj/lib/crtend_android.o-------- Build C++ File --------编译生成hello_cpp.o:$prebuilt/linux-x86/toolchain/arm-eabi-4.2.1/bin/arm-eabi-g++ -Ibionic/libc/arch-arm/include -I bionic/libc/include -I bionic/libstdc++/include -Ibionic/libc/kernel/common -I bionic/libc/kernel/arch-arm -includesystem/core/include/arch/linux-arm/AndroidConfig.h -fno-exceptions -fno-rtti -c -ohello_cpp.o hello_cpp.cpp动态链接生成hello_cpp:$prebuilt/linux-x86/toolchain/arm-eabi-4.2.1/bin/arm-eabi-g++ -nostdlib -Bdynamic-Wl,-T,build/core/armelf.x -Wl,-dynamic-linker,/system/bin/linker -Wl,--gc-sections-Wl,-z,nocopyreloc -o hello_cpp -Lout/target/product/generic/obj/lib-Wl,-rpath-link=out/target/product/generic/obj/lib -lc -lstdc++ out/target/product/generic/obj/lib/crtbegin_dynamic.o hello_cpp.o-Wl,--no-undefined ./prebuilt/linux-x86/toolchain/arm-eabi-4.2.1/bin/../lib/gcc/arm-eabi/4.2.1/interwork/libgcc.a out/target/product/generic/obj/lib/crtend_android.o--------------------------------------------------------------------------------------------II、不使用Android SRC中自带的toolchain工具,步骤如下:1、下载toolchain:/gnu_toolchains/arm/portal/subscription30572、解压:我下载的是arm-2008q3-41-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2,解压到$HOME3、写个Hello World程序并编译:$HOME/arm-2008q3/bin/arm-none-linux-gnueabi-gcc -static -o hello hello.c这边必须静态链接,使用动态链接生成的程序无法在Android模拟器上运行。

相关主题