利用AS创建第一个JNI工程

步骤:

1.下载AS。我安装的是AS 2.2.3.

    下载方法很多,大家可自行下载。

2.下载NDK,配置环境变量。

    1) 下载  AS内提供下载NDK的接口,File-->Settings--->Android SDK--->SDK Tools--->NDK 直接上图。

   

android studio不能打开俩个工程_java

   

android studio不能打开俩个工程_Android_02

   2)配置环境

       A: 创建环境变量 

            变量名:NDK_ROOT(貌似大家都用这个)

            变量值:C:\Users\h218072\android-sdks\ndk-bundle(你存放NDK的地方)

       B:Path中添加NDK,可全局使用NDK的命令。

           末尾添加%NDK_ROOT%;

       C:验证NDK

           在cmd中输入命令ndk-build。如果出现下图提示,说明环境配置成功。

    

android studio不能打开俩个工程_JAVA_03

           

android studio不能打开俩个工程_JAVA_04

    

android studio不能打开俩个工程_JAVA_05

3.下载JDK,配置环境变量。

    1)下载JDK。下载方式很多,我用的是jdk1.7.0_17

    2)JDK环境变量配置


A: 创建环境变量 

             变量名:JAVA_HOME(貌似大家都用这个)

             变量值:C:\Program Files\Java\jdk1.7.0_17(你存放JDK的地方)


        B:添加CLASSPATH。

CLASSPATH

           变量值:.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar

        C:Path中添加JDK,可全局使用JDK的命令。

           末尾添加%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;;

        D:验证JDK

           在cmd中输入命令java -version。如果出现下图提示,说明环境配置成功。

android studio不能打开俩个工程_java_06

    

android studio不能打开俩个工程_JAVA_07

    

android studio不能打开俩个工程_JAVA_08

android studio不能打开俩个工程_JAVA_09

4.配置AS下NDK环境

Android NDK location  如果你之前没有下载ndk,可点击download下载,如果你已经下载了NDK,可选择Select default NDK或者自行找到你保存的NDK

  

android studio不能打开俩个工程_Android_10

5.创建JNI文件,且编译生成.o文件

   1)在MainActivity中添加如下代码,java中调用jni生成库文件。

public static native int calculate(int numa,int numb);
   static {
        System.loadLibrary("MyJni");
   }

   

2)打开AS自带的Terminal,生成.h文件

   cd到app\src\main\java,输入命令javah -jni com.main.myjniapp.MainActivity 生成如图所以的.h文件

   

android studio不能打开俩个工程_Android_11

app下面会多出来一个CPP,其实它的正确路径是这样的MyJniApp\app\src\main\jni

      然后将上面生成.h move到jni文件夹下面。

      

android studio不能打开俩个工程_java_12

  4)创建.c文件

    cpp右键--->new--->C/C++ source file--->选择.c或者.cpp,名字为了统一,我依然写的同.h的文件名

   

android studio不能打开俩个工程_java_13

   创建的.c中添加实现代码 

#include <com_main_myjniapp_MainActivity.h>
  JNIEXPORT jint JNICALL Java_com_main_myjniapp_MainActivity_calculate(JNIEnv *env, jclass cls, jint numa, jint numb) {
      return numa * numb;
  }


   5)生成.o文件

   创建Android.mk 添加如下代码


LOCAL_PATH := $(call my-dir)
  include $(CLEAR_VARS)
  LOCAL_MODULE := MyJni
  LOCAL_SRC_FILES := com_main_myjniapp_MainActivith.c
  include $(BUILD_SHARED_LIBRARY)

    在AS自带的Terminal中cd到jni下面,运行ndk-build。完成后,在app\src\main\libs下面会找到libMyJni.so。

6.配置android工程调用NDK的环境。
   1)添加显示调用jni计算结果的代码


private TextView Jni_text;
  Jni_text= (TextView) findViewById(R.id.Jni_text);
  Jni_text.setText("5*6="+calculate(5,6));

   2)在gradle.properties中添加如下代码


Android.useDeprecatedNdk=true

   3)在build.gradle中android()末尾添加如下代码 


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

6.编译且验证。

   点击build--->Make project。如果没有error说明编译完成。

   然后点击Run--->run app.在模拟器中验证结果


到这里我相信大家已经对As创建简单调用jni的流程有了清晰的理解。