1、下载NDK配置环境变量
添加 NDK_HOME D:\android-ndk-r11b(根据实际路径)
Path中添加 %NDK_HOME%/;
cmd执行ndk-build查看是否成功
2、SDK Location中配置NDK
3、生成头文件
新建类定义native方法
public class Hello { public native String helloC(); }
AndroidStudio命令行切换到debug目录执行
javah -jni cn.fbtrip.ndkdemo.Hello
4、创建c文件
拷贝上步生成的头文件
main文件下创建jni,新建c/c++源文件
拷贝mk文件,进行配置
5、mk文件修改
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := hello
LOCAL_SRC_FILES := cn_fbtrip_ndkdemo_Hello.c
include $(BUILD_SHARED_LIBRARY)
我们只需要修改LOCAL_MODULE和LOCAL_SRC_FILES两个参数即可。
LOCAL_MODULE参数是指定编译后的目标文件的名称,其实编译好的目标文件名为libhello.so,
LOCAL_SRC_FILES指定了要编译的源文件。
APP_ABI := all
6、生成so文件
切换到main路径下执行ndk-build
修改jni库目录
将app->src->main->libs改成
app->src->main->jniLibs
7、旧版需要配置支持ndk
根目录gradle.properties
在文件的最末行添加:
android.useDeprecateNdk=true
8、so库的调用
public class MainActivity extends AppCompatActivity { static { System.loadLibrary("hello"); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Hello h = new Hello(); System.out.println("------>"+h.helloC()); } }