Android 开发C 程序入门


Android 开发C 程序入门
1.软件准备
(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-essential,python,
valgrind,curl,git(ubuntu10.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
在打开的 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开发C 程序入门 2
将 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/ 目录下面有
system.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 命令
Android开发C 程序入门 3
要编译一个单独的模块,需要使用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 777 ./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/system下面。
(4)登陆模拟器运行helloworld
要运行编译生成的 helloworld 文件,需将Linux 系统下的helloworld 文件拷贝到
android 模拟器下。这里先使用adb shell 登录模拟器,在模拟器中创建一个目录存放编译生
成的helloworld 文件。adb 位于Linux 系统/home/android/out/host/linux-x86/bin 目录下,如果
Android开发C 程序入门 4
已经设置好了模拟器环境变量,则可直接在终端执行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/helloworld
/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!说明运行成功。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值