Android Studio + NDK

来源:互联网 发布:软件和电子地图关系 编辑:程序博客网 时间:2024/05/29 17:45

  • 准备工作
  • 操作步骤
    • 新建Android工程
    • 申明native方法
    • 新建jni文件夹
    • 设置javah工具
    • 新建C源文件
    • 新建Androidmk文件
    • 新建Applicationmk文件
    • 设置ndk-build工具
    • 生成so文件
    • 修改gradle文件
  • 运行结果

本文将介绍在Android Studio中使用NDK的一种简便的方法,先给出一些参考:

  • 官方文档
  • Android NDK and OpenCV Development With Android Studio

由于对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文件夹:

新建jni文件夹

4. 设置javah工具:

打开设置窗口
设置javah工具
右键要生成头文件的java类文件,然后选择NDK Tools -> javah,这样在jni文件夹下就生成了相应的头文件。

5. 新建C源文件

新建main.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.cLOCAL_LDLIBS += -llogLOCAL_MODULE := helloinclude $(BUILD_SHARED_LIBRARY)

7. 新建Application.mk文件:

APP_ABI := armeabiAPP_PLATFORM := android-16

8. 设置ndk-build工具:

和设置javah的步骤相同。
ndk-build设置
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文件。
生成的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 = []    ... ...}

运行结果

通过以上步骤后的运行结果如下:
运行结果图

3 0
原创粉丝点击