android ndk hello,world!

java 层受限于虚拟机。有些操作可能需要用ndk来实现。下面我简单的写一个demo . 这个demo主要作用是  在C层提供一个方法   add(int i , int i ) . 实现两个数的相加。

一。  在Java层写一个类  ,这个类包含   native方法。  如下

    

package com.test.ndk_hello;

public class NdkTools {
	
	public  native   int  add(int a , int b) ;
	
	
	static  {
		System.loadLibrary("ndktools");
	}

}

       其中  static 中的语句   主要是加载 ndktools 这个库。   ndktools  是我们下面要实现的库名字。

  二 。 编写ndk层   ,实现 add 函数。

    1 . add.c  

#include <jni.h>


jint  Java_com_test_ndk_NdkTools_add(JNIEnv *env, jobject obj, jint a, jint b)
{

    return  a+b ;

}

注意这个方法名 。它其实是 Java_  加上 包名 在加上类名方法名。  可以自己直接按照这种规则写。也可以先用javah   先得到头文件。具体做法如下

   C:/XX/bin/:
javah -classpath . -jni com.test.ndk.NdkTools然后 就会再classes目录下得到


这个头文件中就会有具体的方法名。



1.  Android.mk

   ndk的  makefile

LOCAL_PATH := $(call my-dir)

MY_USE_SPEEX := 1
include $(CLEAR_VARS)
ANDROID_DEBUG :=1


#Add target arm version
ifeq ($(TARGET_ARCH_ABI),armeabi)
MY_PJSIP_FLAGS := $(BASE_PJSIP_FLAGS) -DPJ_HAS_FLOATING_POINT=0
else
MY_PJSIP_FLAGS := $(BASE_PJSIP_FLAGS) -DPJ_HAS_FLOATING_POINT=1
endif


LOCAL_CFLAGS := $(MY_PJSIP_FLAGS)

APP_PLATFORM := android-9

LOCAL_MODULE    := ndktools
LOCAL_SRC_FILES := add.c
LOCAL_LDLIBS :=   -llog
include $(BUILD_SHARED_LIBRARY)
然后运行ndk-build   就会生成 ndktools.so .

然后把这个.so  copy到工程目录lib中  就可以用了。

 




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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值