本文将介绍在Android Studio中使用NDK的一种简便的方法,先给出一些参考:
由于对Gradle的不熟悉,不想对build.gradle文件做过多的修改。那么可以通过先使用NDK编译so文件,然后再将so文件引入Android工程的步骤来配置Android Studio。
准备工作
-Android Studio
-Android sdk
-Android ndk
Android Studio使用的是稳定的1.4版本;ndk使用的是r10d版本。
操作步骤
1. 新建Android工程。
2. 申明native方法:
protected void onCreate(Bundle savedInstanceState) {
... ...
TextView textView = (TextView) findViewById(R.id.textview);
textView.setText(stringFromJNI());
... ...
}
private native static String stringFromJNI();
static {
System.loadLibrary("hello");
}
3. 新建jni文件夹:
4. 设置javah工具:
右键要生成头文件的java类文件,然后选择NDK Tools -> javah,这样在jni文件夹下就生成了相应的头文件。
5. 新建C源文件
#include "jonesx_ndkexample_MainActivity.h"
JNIEXPORT jstring JNICALL Java_jonesx_ndkexample_MainActivity_stringFromJNI(JNIEnv * env, jclass clazz)
{
return (*env)->NewStringUTF(env, "Hello from JNI!");
}
6. 新建Android.mk文件:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES := main.c
LOCAL_LDLIBS += -llog
LOCAL_MODULE := hello
include $(BUILD_SHARED_LIBRARY)
7. 新建Application.mk文件:
APP_ABI := armeabi
APP_PLATFORM := android-16
8. 设置ndk-build工具:
和设置javah的步骤相同。
Parameters:
NDK_PROJECT_PATH=$ModuleFileDir$/build/intermediates/ndk NDK_LIBS_OUT=$ModuleFileDir$/src/main/jniLibs NDK_APPLICATION_MK=$ModuleFileDir$/src/main/jni/Application.mk APP_BUILD_SCRIPT=$ModuleFileDir$/src/main/jni/Android.mk V=1
9. 生成so文件:
右键jni文件夹,选择NDK Tool -> ndk-build;这样会自动生成jniLibs目录,目录下有相应平台的so文件。
10. 修改gradle文件:
到现在还不能运行程序,因为会报错:
Error:Execution failed for task ':app:compileDebugNdk'.
> Error: NDK integration is deprecated in the current plugin. Consider trying the new experimental plugin. For details, see http://tools.android.com/tech-docs/new-build-system/gradle-experimental. Set "android.useDeprecatedNdk=true" in gradle.properties to continue using the current NDK integration.
还需要修改app\build.gradle文件,仅仅是添加一句:
android {
... ...
// add
sourceSets.main.jni.srcDirs = []
... ...
}
运行结果
通过以上步骤后的运行结果如下: