【Android开发】NDK开发(1)-Hello World!

上半年,公司的一个项目,本身我是不喜欢Android开发的,但是学习到的东西总需要整理一下。


从iOS转到Android,真心有些不习惯。就IDE来说,eclipse比Xcode差的不是一点半点。Android模拟器竟然还要开机!我勒个去。。

今天写个最简单的Android NDK的小栗子。
 
首先,什么是Android NDK? NDK 全称是:Native Development Kit,其他的,移步百度百科:android ndk_百度百科
 
1、新建一个Android Application Project,Fuck。
2、新建类 Fuck,声明本地静态方法:numFromFuck()。代码如下:
 1 package com.example.fuck;
 2 public class Fuck {
 3 
 4     public native static int numFromFuck();
 5 
 6     static{
 7 
 8         System.loadLibrary("fuck");    //fuck代表动态链接库libfuck.so文件
 9 
10     }
11 
12 }

3、给程序添加一个按钮button,在点击button时,通过调用类Fuck中本地方法更改textView的text,代码如下

 

 1 button.setOnClickListener(new OnClickListener(){
 2     @Override
 3 
 4     public void onClick(View arg0) {
 5 
 6         // TODO Auto-generated method stub
 7 
 8         textView.setText(Fuck.numFromFuck() + "");
 9     }
10 });

 

 

 

4build该工程,生成 Fuck.class 类文件(在bin目录下),这一步比较重要。

5、在终端cd到工程目录下,新建个文件夹:【mkdir jni】(终端输入命令都在中括号中,下同),然后输入命令:【javah -classpath bin/classes -d jni com.example.fuck.Fuck】 ,
然后会在jni文件夹下发现一个文件:com_example_fuck_Fuck.h,其中代码如下:
 1 /* DO NOT EDIT THIS FILE - it is machine generated */
 2 #include <jni.h>
 3 
 4 /* Header for class com_example_fuck_Fuck */
 5 
 6 #ifndef _Included_com_example_fuck_Fuck
 7 
 8 #define _Included_com_example_fuck_Fuck
 9 
10 #ifdef __cplusplus
11 
12 extern "C" {
13 
14 #endif
15 
16 /*
17 
18  * Class:     com_example_fuck_Fuck
19 
20  * Method:    numFromFuck
21 
22  * Signature: ()I
23 
24  */
25 
26 JNIEXPORT jint JNICALL Java_com_example_fuck_Fuck_numFromFuck
27 
28   (JNIEnv *, jobject);
29 
30 #ifdef __cplusplus
31 
32 }
33 
34 #endif
35 
36 #endif

 

6、在 jni 目录中新建Fuck.c,实现5中生成的.h文件中的方法:
1 #include "com_example_fuck_Fuck.h"
2 JNIEXPORT jint JNICALL Java_com_example_fuck_Fuck_numFromFuck (JNIEnv *env, jobject obj)
3 
4 {
5 
6     return 42;
7 
8 }
如果你直接从.h文件拷过来的代码,一定要记得更改参数。

 

7、在 jni 文件目录中新建文件 Android.mk 文件:

1 LOCAL_PATH := $(call my-dir)
2 include $(CLEAR_VARS)
3 
4 LOCAL_MODULE    := fuck
5 
6 LOCAL_SRC_FILES := Fuck.c
7 
8 include $(BUILD_SHARED_LIBRARY)

LOCAL_MODULE:=fuck 表示要生成的so文件名为:libfuck.so,这就是在步骤2中需加载的动态链接库。

 
8、回到终端,cd 到工程目录,输入命令:【ndk-build】,没错的话会在工程目录 libs/armeabi 中生成文件:libfuck.so。
最后运行程序:
【Android开发】NDK开发(1)-Hello World!
 
点击按钮button,textView的内容就会变成“42”。
【Android开发】NDK开发(1)-Hello World!
over~
 
 
2014-03-08 
                                                           

【Android开发】NDK开发(1)-Hello World!,布布扣,bubuko.com

【Android开发】NDK开发(1)-Hello World!

上一篇:Android:创建可穿戴应用 - 语音操作


下一篇:android 反编译 混淆过程中注意事项