android studio下第一个ndk程序

1.安装ndk

               下载一个android-ndk-r10e-windows-x86.exe文件,运行后会在选定目录下产生一个文件夹,就是ndk所在目录了。

2.配置ndk

                 file>project structure>SDk location>Android ndk location>选择ndk目录即可。这样之后在local.properties文件中可以看到ndk目录,当然可以直接在这个文件下设置目录,效果是一样的。

 

 3.编写jni的java类

                 在src目录下新建jni目录,jni下新建文件MathKit.java

 

public class MathKit {
    public static native int square(int num);

    static {
        System.loadLibrary("JniDemo");
    }
}

这里有必要解释一下System.loadLibrary("JniDemo");,

需要在defaultConfig中添加如下代码:

ndk{
    moduleName "JniDemo"
}

目的是指定生成的so文件(C库)的名称,然后在java文件中加载这个so文件(C库)。

so文件位置如下:E:\Android\workSpace\ListenForUninstall\app\build\intermediates\ndk\debug\lib\arm64-v8a\libJniDemo.so

,切换到project视图查看。

同时记得在工程目录下的gradle.properties文件中写入下面这行: 

android.useDeprecatedNdk=true 

4.生成.h文件

cmd下运行如下命令 javah -jni (加上java类的目录)

 这样就会生成头文件。

5.在main目录新建jni目录,把产生的头文件拷贝进去

6.在main/jni目录下新建对应的cpp文件(文件名和头文件一样),实现java类中定义的square函数

#include <jni_Mathkit.h>
#include "../../../../../../../SdkandNdk/android-ndk-r10e/platforms/android-21/arch-arm/usr/include/jni.h"

JNIEXPORT jint JNICALL Java_jni_MathKit_square
        (JNIEnv *env, jclass cls, jint num)
{
    return num*num;
}

这个cpp文件有必要解释一下内容,这个函数返回类型是jint(整形类型),参数是num,计算num的平方并返回。方法名称格式如下:

Java_包_类_函数名(注意包的.号改成-下划线,比如本例中jni.MathKit要写成jni_MathKit)。

8.在activity中调用square函数。

Log.i("", ""+MathKit.square(2));

至此结束

 

 

 

 

  • 大小: 3.3 KB
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值