Android NDK 用C语言创建第一个本地应用程序

转自:http://hghhe.blog.163.com/blog/static/32377568201236102439271/

自从android2.3发布后,我们就可以使用C语言来编写程序了,不再需要用JAVA来创建窗口。当然写出来的程序也只能运行在android2.3及以上的设备上,但我相信不久的将来2.3的设备会占据绝大多数(其实现在估计也超过50%了吧)。本文很简单,用C语言写一个应用程序,打印经典的"Hello world!"。
    不得不说,首先得下载android的SDK、NDK等等(东西太多了,可参考其它同学关于android开发配置的博客)... 对于像我这样的懒人,直接装一个nvidia的Tegra Android Development Pack,它会自动安装并配置好android SDK、NDK、Eclipse、ADT等。
    用Eclipse创建一个新的工程"Hello":打开Eclipse,选择File->New->Other->Android->Android Project,输入Project Name为“Hello”,选择一个保存目录,

Build Target选择android2.3.1,修改Package Name为:com.test.hello(当然这个可以随便定义),去掉Create Activity选项,点击Finish创建工程完成,

 

在工程名上右键选择New->Other->C/C++->Convert to a C/C++ Project,然后Next再Finish完成。
    打开AndroidManifest.xml文件,在application标签属性中添加android:hasCode="false"(表示程序中没有JAVA),然后在application标签中添加

<activity android:name="android.app.NativeActivity" android:label="@string/app_name" android:configChanges="orientation|keyboardHidden"> <meta-data android:name="android.app.lib_name" android:value="Hello" /> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>

其中android.app.NativeActivity是系统提供的,android:value="Hello"中的Hello是jni中定义的库名(后面会介绍),android.intent.action.MAIN指定程序进入时调用此Activity。AndroidManifest.xml文件

    在Hello工程目录下,创建名为jni的文件夹,在jni文件夹下创建main.c和Android.mk文件。在Android.mk文件中添加以下代码:

LOCAL_PATH:=$(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE :=Hello
LOCAL_SRC_FILES:=main.c
LOCAL_LDLIBS    := -llog -landroid
include $(BUILD_SHARED_LIBRARY)

其中LOCAL_MODULE :=Hello中的Hello与上文中的android:value="Hello"中的相对应。在main.c中添加以下代码:

#include <android/log.h>
#include <android/native_activity.h>

#define LOGI(...) ((void)__android_log_print(ANDROID_LOG_INFO, "Hello", __VA_ARGS__))
#define LOGW(...) ((void)__android_log_print(ANDROID_LOG_WARN, "Hello", __VA_ARGS__))

void ANativeActivity_onCreate(ANativeActivity* activity,void* savedState, size_t savedStateSize)
{
 LOGI("---------------------------Hello world!---------------------------");
}

其中ANativeActivity_onCreate就是入口函数了,这里仅仅输出Hello world!(虚线是为了在logcat中容易被找到)。

    然后编译(如果make编译出错,可在工程属性的C/C++ Build->Build command修改为${NDKROOT}/ndk-build)、运行(工程中右键选Run AS->Android Application),就能在Logcat中找到Hello world!了Android NDK 用C语言创建第一个本地应用程序 - 独轮之月 - 听雨阁

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值