您的位置:首页 > 移动开发 > Android开发

Android开发C程序入门

2011-07-13 23:27 281 查看
这是关于Android下C开发的资料,基于Linux系统。
1.软件准备(可参见【搭建Android系统入门】)
(1)操作系统ubuntu安装 在windows系统中使用wubi安装ubuntu-deskt-i386系统(版本8.04及以上)。
(2)系统软件下载 打开ubuntu终端,输入sudo apt-get install命令来通过ubuntu服务器在线安装需要使用的软件,这里不需要选择软件版本,
ubuntu服务器会做自动的版本匹配。
待安装的软件有flex,bison,gperf,libsdl- dev,libesd0-dev,libwxgtk2.6-dev,build-essen tial,python,valgrind,curl,git(ubuntu
10.04及以上版本安装git-core)。执行命令后使用 which命令验证是否安装成功,注意,如果缺少部分软件,或者安装没有成功,编译通常
都会遇到问题,无法完成。
(3)下载安装JDK1.5(只能是1.5版本) 将下载的jdk_1.5.0_22.bin安装到/usr目录下,
# cp $JDK$/jdk_1.5.0_22.bin /usr
其中$JDK$为下载的jdk_1.5.0_22.bin所在目录。然后进入/usr目录。 # cd /usr 执行一下命令安装jdk_1.5.0_22 # ./ jdk_1.5.0_22.bin 出现
提示后输入yes进行安装,安装完成后,使用一下命令设置java环境变量。
# export JAVA_HOME=/usr/jdk1.5.0_22
# export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar # export PATH=$PATH:$JAVA_HOME/bin
然后输入java –version查看jdk是否安装成功,若出现java版本信息,表明安装成功。 以上在终端设置的java环境变量只是暂时有效,若要
使jdk长期有效,需修改系统配置文件bashrc执行 # gedit /etc/bash.bashrc (或vim /etc/bash.bashrc) 在打开的bash.bashrc文件末尾添加
export JAVA_HOME=/usr/jdk1.5.0_22
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export PATH=$PATH:$JAVA_HOME/bin
然后保存修改。
(4)准备android源文件 在/home目录下创建android目录,并在创建的android目录下创建bin目录。通过执行一下命令完成:
# mkdir /home/android # mkdir /home/android/bin
将android_2.2.tar.gz文件放入 /home/android,假定android_2.2.tar.gz所在目录为$android_2.2.tar$,执行下列命令
# cp $android_2.2.tar$/android_2.2.tar.gz /home/android
在ubuntu中将该文件加压,发现/home/android目录下多出android_2.2目录,将该目录中的所有文件移动至/home/android目录下
# mv –r /home/android/android_2.2/* /home/android
# rm –r /home/android/android_2.2
2.android编译环境搭建
(1)android源码编译 将android安装在/home/android/目录下后,进入 /home/android # cd /home/android 使用make命令编译android源码
# make
编译源码大约持续1个多小时(双核CPU可用命令 #make -j2,四核CPU用命令#make - j4提高编译速度)。
(2)设置android的image路径 编译完成后应该可以看到/home/android/out/target/product/generic/目录下面有s ystem.img以及ramdisk.img
两个镜像文件,android模拟器运行时要加载这两个文件。设置环境变量,在终端执行
# export ANDROID_PRODUCT_OUT=/home/android/out/target/product/generic 若要使环境变量永久有效,在/etc/bash.bashec文件末尾加上
export ANDROID_PRODUCT_OUT=/home/android/out/target/product/generic
(3)调出模拟器(emulator) 环境搭建好之后,可以调出模拟器
# cd /home/android/out/host/linux-x86/bin # ./emulator 出现模拟器界面后先不要关闭,下面的helloworld会在模拟器中测试。
(4)设置模拟器环境变量 为了在每次调用模拟器(或其他命令,如adb)时不进入模拟器所在目录,需要设置环境变量,使用下列命令
# export PATH=$PATH:/home/android/out/host/linux-x86/bin 若要使环境变量永久有效,需要在/etc/bash.bashrc末尾添加
export PATH=$PATH:/home/android/out/host/linux-x86/bin 这样每次启动shell终端后可直接运行emulator命令启动模拟器。
3.helloworld测试
(1)设置mm命令 要编译一个单独的模块,需要使用mm命令。开启另一个终端(可使用Ctrl+Shift+N键),执行如下命令,否则
mm命令可能无法执行。
# source build/envsetup.sh 若要设置mm永久有效,需要在/etc/bash.bashrc末尾添加source / home/android/build/envsetup.sh。
(2)创建helloworld源程序以及make文件 在/home/development/目录下创建hello目录
# cd /home/android/development
# mkdir hello
通过一下命令更改hello目录的权限,便于访问或创建文件。 # chmod 755 ./hello 在创建的hello目录下创建hello.c和Android.mk两个文件。
编写hello.c程序:
#include <stdio.h>
int main() { printf("Hello World!\n"); return 0; }
编写Android.mk文件:
LOCAL_PATH:=$(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES:=\ hello.c
LOCAL_MODULE:=helloworld include
$(BUILD_EXECUTABLE)
上面LOCAL_SRC_FILES用来指定源文件;LOCAL_MODULE指定要编译的模块的名字,下一步骤编译时就要用到;
include $(BUILD_EXECUTABLE)表示要编译成一个可执行文件,如果想编译成动态库则可用BUILD_SHARED_LIBRARY,这些可以 在 $(YOUR_ANDROID)/build/core /config.mk查到。 另外,Android.mk文件中由LOCAL_MODULE指定的模块名helloworld即为目标文件。
(3)编译hello.c文件 首先进入/home/android/development/hello目录,然后使用mm命令编译hell.c文件
# cd /home/android/development/hello
# mm
如果输出“Install: out/target/product/generic/system/bin/helloworld”表示编译完成,
生成的目标文件helloworld 在/home/android/out/target/product/generic/s ystem下面。
(4)登陆模拟器运行helloworld 要运行编译生成的helloworld文件,需将Linux系统下的helloworld文件拷贝到andro id模拟器下。
这里先使用adb shell登录模拟器,在模拟器中创建一个目录存放编译生成的 helloworld文件。adb位于Linux系统
/home/android/out/host/linux-x86/bin目录下,
如果已经设置好了模拟器环境变量,则可直接在终端执行adb shell命令登陆模拟器;若尚未设置好模拟器环境变量,
则进入/home/android/out/host/linux-x86/bin目录调用adb登录模拟器
# cd /home/android/out/host/linux-x86/bin 运行adb shell登录模拟器
# ./adb shell 登录模拟器需等待模拟器初始化完成(之前已使用./emulator启动),否则会出现如下错误:
* daemon not running. starting it now * * daemon started successfully * error: device offline
当终端上出现#时, 表明adb登录成功。 模拟器根目录下有一个dev目录,在该目录下创建如下project,再在project目录下创建hello目录。
#mkdir /dev/project #mkdir /dev/project/hello
创建完成之使用exit命令后返回linux系统终端。然后用adb push命令将位于Linux系统中的helloworld文件拷贝到android模拟器中。
# ./adb push /home/android/out/target/peoduct/generic/system/bin/helloworl d /dev/project/hello
注:可以使用adb pull ,push 命令将文件复制到一个模拟器/设备实例的数据文件或是从数据文件中复制。install 命令只将一个.apk文件
复制到一个特定的位置,与其不同的是,pull 和 push 命令可令你复制任意的目录和文件到一个模拟器/设备实例的任何位置。 从模拟器
或者设备中复制文件或目录,使用(如下命):
adb pull <remote> <local>
将文件或目录复制到模拟器或者设备,使用(如下命令)
adb push <local> <remote> 在这些命令中, <local> 和<remote> 分别指通向自己的发展机(本地)和模拟器/设备实例(远程)上的目标文件/目录的路径
然后再登录模拟器,进入模拟器下的/dev/project/hello目录,运行helloworld。
# ./adb shell #cd /dev/project/hello
#./helloworld 若输出 Hello World!说明运行成功。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: