300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 【Android开发】NDK开发(1)-Hello World!

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

时间:2020-05-04 07:16:23

相关推荐

【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 4public native static int numFromFuck(); 5 6static{ 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 4public void onClick(View arg0) { 5 6 // TODO Auto-generated method stub 7 8 textView.setText(Fuck.numFromFuck() + ""); 9}10 });

4、build该工程,生成 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 __cplusplus11 12 extern "C" {13 14 #endif15 16 /*17 18 * Class:com_example_fuck_Fuck19 20 * Method: numFromFuck21 22 * Signature: ()I23 24 */25 26 JNIEXPORT jint JNICALL Java_com_example_fuck_Fuck_numFromFuck27 28 (JNIEnv *, jobject);29 30 #ifdef __cplusplus31 32 }33 34 #endif35 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 6return 42;7 8 }

如果你直接从.h文件拷过来的代码,一定要记得更改参数。

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

1 LOCAL_PATH := $(call my-dir)2 include $(CLEAR_VARS)3 4 LOCAL_MODULE := fuck5 6 LOCAL_SRC_FILES := Fuck.c7 8 include $(BUILD_SHARED_LIBRARY)

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

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。