java编程:关于android安卓编程的一个比较深的问题:高手进吧

我们都知道Android是架构在Linux的内核上的,看Android的架构图,也不难看出,java部分只是冰山的一角,其多个层都是用c或c++实现的。【问题是】那么我们... 我们都知道Android是架构在Linux的内核上的,看Android的架构图,也不难看出,java部分只是冰山的一角,其多个层都是用c或c++实现的。
【问题是】那么我们为什么不能跳过android,跳过java,直接用c或c++给我们的andorid手机编程呢?
如果能的话,怎么用C给andorid编写一个小程序呢?
展开
 我来答
彩首长
2012-05-13
知道答主
回答量:13
采纳率:0%
帮助的人:7.2万
展开全部
简单介绍一下怎么在android上开发基本的C程序。
如果做过ARM的C应用程序开发的话会发现,ARM一般情况下提供了十分完备的编译器,而android没有而已(android提供了完善的Java层开发工具,C的却不是那么完善)。

1 编写hello.c
这个太简单了,不是么?

#include <stdio.h>
int main(void)
{
printf("hello world!\n");
return 0;
}

4.2 编写Android的编译器配置文件make_android
在Android SDK中,并没有提供Android系统的C编译器。就算是在NDK中,也只是提供了ndk-build工具,用来编译native static/dynamic library。只有仔细翻阅NDK的手册(它的手册位于NDK根目录的doc/OVERVIEW.html,比较简略),才会发现有一个STANDALONE-TOOLCHAIN的页面,会提到单独编译C Level应用程序的方法。我这里提供一段简单的makefile,命名文件为make_android,用来配置CC宏:

# make_android: this is a sub makefile for android native compile
# you have to set ANDROID_VER and ANDROID_ROOT to your flavor to work
### these two things have to be set first!!!
ANDROID_VER=android-8
ANDROID_ROOT=/home/xzpeter/android PLATFORM_DIR=${ANDROID_ROOT}/prebuilt/ndk/android-ndk-r4/platforms
SYSROOT=${PLATFORM_DIR}/${ANDROID_VER}/arch-arm EABI_GCC=${ANDROID_ROOT}/prebuilt/linux-x86/toolchain/arm-linux-androideabi-4.4.x/bin/arm-linux-androideabi-gcc
CC=${EABI_GCC} --sysroot=${SYSROOT}

这里,ANDROID_ROOT和ANDROID_VER是需要针对自己的android source目录地址和android API level修改一下的。这里的android source是我用repo sync从github上mirror下来的android源代码。

4.3 编写Makefile
利用上面的make_android,写Makefile:

# to make x86 version of code, run: "make X86=1"
ifdef X86
CC=gcc
CLFAGS=-g
else
include make_android
endif
default: hello
hello: hello.o
clean: rm hello *.o

4 编译
可以用make X86=1先在本地编译一下,并运行./hello试试看。如果想编译android版本,先make clean一下,然后直接make就可以了。

5 在模拟器中运行
利用shell命令启动emulator并将文件放到目标模拟器上去:

emulator -avd my_avd # my_avd is my config name of avd
# wait for some time to boot up
adb push ./hello /data/hello
adb shell chmod 0755 /data/hello
adb shell ./data/hello

可以看到返回的”hello world!”字符串了。

PS:这是我偶然看到的一篇文章,感觉如果不是搞低层的,不必过于深入
追问
能给出文章的出处吗?非常感谢!
mxpasser
2012-05-27
知道答主
回答量:14
采纳率:0%
帮助的人:13.4万
展开全部
c++是面向对象的。其实完全可以用c或c++编,这样就更像ios的开发了,iso就是用的objective-c,oc就是类c的。java也很强悍啊,oracle,eclipse都是用java做出来的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
次智抽Ax
2012-05-13
知道答主
回答量:28
采纳率:0%
帮助的人:9.5万
展开全部
我是菜鸟,但我知道android和java都是面向对象的,c和c++是面向过程的,所有的编程语言都在向更加高级和更加让人容易理解的方向发展。
追问
你的这句话错了很多地方啊。
(1)andorid是操作系统(它可以用在很多地方,手机,平板电脑,甚至是手表上),就像windows,unix,linux,snow leopard....,谈不上什么面不面向对象。
(2)java和c++都是面向对象的编程语言,像ruby那样支持完全面向对象。
(3)编程语言的目的应该不是向着更为让人理解为目标发展的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
胡一湖
2012-05-13 · TA获得超过389个赞
知道小有建树答主
回答量:577
采纳率:0%
帮助的人:369万
展开全部
这是一个比较深的问题...
因为andriod是GG做的,GG的应用软件主要是java。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友b8f909b
2012-05-13 · TA获得超过795个赞
知道小有建树答主
回答量:554
采纳率:0%
帮助的人:472万
展开全部
貌似听说已经推出了C++的安卓编程。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(7)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式