注意:Android Studio需要是1.3及以上版本,且版本号小于2.2,见文末说明。
步骤1:新建一个项目,打开Project Structure,设置Android NDK Location目录。
如果没有提前下载NDK包,可打开SDK Manager下载,如图:
步骤2:新建一个类,写一个本地Native方法。
由于没有头文件,因此,图示中的新建本地方法sayHello()会报错。
生成头文件方法:
打开AS的Terminal窗口,切换到app(可自定义项目名)->src->main->java目录,运行命令javah -d …/jni com.example.administrator.ndktest.Hello。
其中,
javah为生成头文件的命令符号,
-d表示指定头文件的输出目录,
…/jni表示在当前目录的上一层目录生成jni目录,
com.example.administrator.ndktest.Hello表示包名.类名,针对Hello.java生成头文件。
命令执行成功后,会在java同级目录下生成jni目录,内含头文件。然后,点击AS的项目同步按钮(Sync Projects with Gradle Files)让jni代码同步。
若同步之后,报图示的错误,请在项目的gradle.properties中添加代码android.useDeprecatedNdk=true,然后再次点击同步按钮。
步骤3:在jni目录下新建C/C++ Source File,Name名称与生成头文件的类名相同即可(此处即Hello),选中Create an associated header复选框,点击ok,jni目录下会生成hello.cpp和hello.h文件。
步骤4:打开jni下的hello.cpp文件,导入头文件com.example.administrator.ndktest.Hello.h,实现
JNIEXPORT jstring JNICALL Java_com_example_administrator_ndktest_Hello_sayHello
(JNIEnv , jclass);
方法。代码见图示。
步骤5:打开Module下的build.gradle,在defaultConfig{}中添加脚本代码
ndk{
/指定.so文件名称为hello.so,NDK的配置选项可在NdkOptions.java中查找*/
moduleName “hello”
}
然后再次同步项目。
步骤6:回到Hello.java中,添加图示代码。
未完待续(Android Studio 2.2以上版本按此方法配置无法成功)。
此文适合Android Studio 2.2之前的版本,因此建议参考以下转载文章:
Android NDK开发(一) 使用CMake构建工具进行NDK开发
Demo地址:https://github.com/keyyoo/NDKDemo
Android NDK开发(二) 使用ndk-build构建工具进行NDK开发
Demo地址:https://github.com/keyyoo/NDKBuild