1. 配置Android Studio;
    File -> Settings -> Tools -> External Tools点击加号框如下图:
Android JNI Windows配置
External Tools.png
Android JNI Windows配置
External Tools_1.png

配置javah 、ndk-build、ndk-build clean这三个命令

Program: $JDKPath$/bin/javah
Parameters: -classpath $Classpath$ -v -jni $FileClass$
Working directory: $SourcepathEntry$\..\jni  
Android JNI Windows配置
javah.png
Program: D:\java\androidstudio\sdk\ndk-bundle\ndk-build.cmd
Parameters: 
Working directory: $ProjectFileDir$\app\src\main
Android JNI Windows配置
ndk-build.png
Program: D:\java\androidstudio\sdk\ndk-bundle\ndk-build.cmd
Parameters: clean
Working directory: $ProjectFileDir$\app\src\main
Android JNI Windows配置
ndk-build clean.png
  1. 使用javah 、ndk-build、ndk-build clean这三个命令位置
Android JNI Windows配置
use.png
  1. 配置完成,我们开始新建工程JNI,然后新建jni目录
Android JNI Windows配置
jni.png
  1. 修改app下的build.gradle文件, 如下图

android {
    ...
  defaultConfig {
    ...
    ndk{
      moduleName "test"
    }
    sourceSets {
        main {
            jni.srcDirs = []
            jniLibs.srcDirs = ['libs']
        }
    }
  }
  buildTypes {
      ...
  }
}
Android JNI Windows配置
图1.png
  1. 修改JNI下的gradle.properties文件(如果没有此文件,自己新建一个),如下图
android.useDeprecatedNdk=true
Android JNI Windows配置
图2.png
  1. 新建Test.java
public class Test {

  static {
    System.loadLibrary("Test");
  }
  public native String getString();

}

注:先build下整个工程,然后执行第7步

  1. 开始创建头文件,操作如下图(注意在Test.java文件上点击右键)
Android JNI Windows配置
图3.png
  1. 执行完成后jni目录下就创建了com_mazaiting_jni_Test.h文件,然后我们在jni目录下编写 Test.cpp、Android.mk、Application.mk这三个文件,代码如下:
Android JNI Windows配置
JNI Files.png

com_mazaiting_jni_Test.h

/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class com_mazaiting_jni_Test */

#ifndef _Included_com_mazaiting_jni_Test
#define _Included_com_mazaiting_jni_Test
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     com_mazaiting_jni_Test
 * Method:    getString
 * Signature: ()Ljava/lang/String;
 */
JNIEXPORT jstring JNICALL Java_com_mazaiting_jni_Test_getString
  (JNIEnv *, jobject);

#ifdef __cplusplus
}
#endif
#endif

Test.cpp

//
// Created by Administrator on 2017/10/30.
//
#include "com_mazaiting_jni_Test.h"

JNIEXPORT jstring JNICALL Java_com_mazaiting_jni_Test_getString
        (JNIEnv *env, jobject){
    return (*env).NewStringUTF("This is test jni!");
}

Applicaition.mk

APP_MODULES := Test
APP_ABI := all

Android.mk
具体解释请查看Android .mk文件语法规范

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := Test
LOCAL_SRC_FILES := Test.cpp
include $(BUILD_SHARED_LIBRARY)
  1. 执行ndk-build,请看下图:(注意在jni目录上点击右键)
Android JNI Windows配置
ndk-build.png
  1. 得到.so文件
Android JNI Windows配置
so.png
  1. 在程序中应用

public class MainActivity extends AppCompatActivity {

  @Override protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    TextView textView = (TextView) this.findViewById(R.id.textView);
    textView.setText(new Test().getString());
  }
}
  1. 程序运行结果


    Android JNI Windows配置
    success.png

相关文章:

  • 2021-06-14
  • 2021-12-03
  • 2022-12-23
  • 2022-01-11
  • 2021-08-06
  • 2021-11-13
  • 2021-11-12
  • 2022-01-08
猜你喜欢
  • 2021-05-02
  • 2021-08-23
  • 2022-01-19
  • 2021-05-02
  • 2021-12-25
  • 2021-09-20
  • 2021-08-14
相关资源
相似解决方案