Android Studio JNI学习之(1)-hello jni

1、下载开发工具和NDK

  • Android Studio下载  
  • NDK下载
  • CMake : Android Studio默认使用CMake编译原生库,如果你只打算用ndk-build编译的话就不需要下载这个组件
  • LLDB:使用它来调试本地代码

      你可以使用SDK Manager来安装上述组件



2、创建项目,JNI包,JniTest.java类


    

package com.study.eric.jni;

public class JniTest {
    static {
        System.loadLibrary("app"); //jni模块加载名称
    }
    public native String getJniString(); //该方法是红色的,暂时不用理会
}

代码出现红色可查看我另一篇博客处理这个问题 http://blog.csdn.net/liangjiangli/article/details/72779342


3、执行javah生产c头文件

        打开Terminal cd 到java包,然后执行命令:javah -classpath . -jni -o ../jni/JniTest.h com.study.eric.jni.JniTest,生产JniTest.h文件





为了方便使用javah命令使用,可以新建External Tools



$JDKPath$/bin/javah (我的是mac,windows的应该填入javah.exe的路径)

-classpath . -jni -o $ModuleFileDir$/src/main/jni/"JniTest.h" $FileClass$

$ModuleFileDir$/src/main/java


    下面在JniTest.h所在目录新建com_study_eric_JniTest.c


#include "JniTest.h"

JNIEXPORT jstring JNICALL Java_com_study_eric_jni_JniTest_getJniString
        (JNIEnv *env, jobject object) {
    return (*env)->NewStringUTF(env, "Hello from JNI !");
}

4、执行ndk-build编译文件生产.so包

新建Android.mk



LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)

LOCAL_MODULE := app
LOCAL_LDFLAGS := -Wl,--build-id
LOCAL_SRC_FILES := \
	/Users/daredos/Android/Study/app/src/main/jni/com_study_eric_JniTest.c \

LOCAL_C_INCLUDES += /Users/daredos/Android/Study/app/src/main/jni
LOCAL_C_INCLUDES += /Users/daredos/Android/Study/app/src/debug/jni

include $(BUILD_SHARED_LIBRARY)

新建Application.mk

APP_MODULES := app
APP_ABI := all

执行ndk-build



/Users/daredos/android-ndk-r13b/ndk-build (ndk安装路径)

$ModuleFileDir$/src/main




    最终在目录生产libs文件夹


5、应用到项目

    build.gradle添加.so包

sourceSets {
        main.jni.srcDirs = []
        main.jniLibs.srcDir "src/main/libs"
    }


   gradle.properties添加:android.useDeprecatedNdk=true

   Java调用如下:

  

   运行结果:

   


未完。。。


   
发布了18 篇原创文章 · 获赞 10 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/LIANGJIANGLI/article/details/72845354