Android NDK

主要讲一下Android Studio中NDK的简单使用

  1. 编译生成so包
  2. 在项目中使用生成的so包

1.编译生成so包
1.1Android Studio可以在setting中自动下载NDK包
勾选LLDB和NDK

Android NDK_第1张图片

1.2 在gradle.properties中添加android.useDeprecatedNdk=true,支持NDK

1.3新建一个类,用来声明一个原生的方法:


public class NdkJniUtils {
    static {
        System.loadLibrary("YanboberJniLibName");   //defaultConfig.ndk.moduleName
    }
    public native String getCLanguageString();

}

这里的loadlibrary是用来加载so包的,可以暂时忽略,后面说

1.4 头文件生成
cmd进入到该文件路径下/ Android studio Terminal 定位到 src/main/java ;
然后javah +com…(报名+类名
这样会在src目录下生成一个.h头文件,这个文件的作用类似于接口,进行方法说明
1.5 实现c/c++文件
include .h文件,并把方法名拷过去,进行实现内容
1.6 配置gradle文件
在defaultConfig 中加入

ndk{
            moduleName "test"         //生成的so名字
            abiFilters "armeabi", "armeabi-v7a", "x86"  //输出指定三种abi体系结构下的so库
        }

至此,编译 就可以得到so包了,位置在app/build/intermediates/ndk/debug/lib

  1. 直接使用so包
    一种情况就是可以直接使用上面的方法来进行jni使用,还有一种情况就去掉C/C++代码,直接用so包,可以简化代码。
    介绍直接使用so包
    将生成的so全部拷入libs文件夹下,在gradle中奖ndk{}配置删除,在Android{}下引入
 sourceSets{
        main {
            jniLibs.srcDirs=['libs']
        }
    }

同时也可以删除c/c++代码啦!

ps:遇到各种奇怪的异常,记得先clean一下。

你可能感兴趣的:(Android爬坑)