1.在安装好的as,打开:
配置ndk路径,如果没有下载在下面提示框中有选择自动下载。
2.在项目的gradle.properties文件中加上 android.useDeprecatedNdk = true (此项不同as版本好像可以不用添加)
3.为了方便生成头文件和so文件,我们可以在Android Studio → External Tools中设置两个命令,分别来生成头文件和生成.so文件。
program:$JDKPath$/bin/javah
Arguments:-encoding UTF-8 -d ../jni -jni $FileClass$
Working directory:$SourcepathEntry$\..\java
program:E:\Android\ndk-bundle\build\ndk-build.cmd (ndk-build.cmd所在文件夹的路径)
Arguments:可以不用填
Working directory:$ModuleFileDir$\src\main (这给路径一定要填对,不然找不到需要编译的C++源文件)
4.写测试类:
package com.example.williamwang.myapplication; public class NdkTest { static { System.loadLibrary("JniTest"); } public static native String getString(); }
5.右击这个类选择刚才写的javah命令,就会生成头文件。
6.根据头文件写一个测试的.cpp文件
Android.mk文件:
LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := JniTest LOCAL_SRC_FILES := com_example_williamwang_myapplication_NdkTest.cpp include $(BUILD_SHARED_LIBRARY)
7.然后右击jni文件夹选择我们的命令ndk-build
生成了so文件。
8.build.gradle添加配置
jniLibs.srcDirs是刚刚生成so的路径,不能写错,不然so不会编译进apk中。运行的时候会报错。
9.添加调用测试。
10.运行结果: