Android JNI Windows配置

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

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

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

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

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

}

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

  1. 开始创建头文件,操作如下图(注意在Test.java文件上点击右键)
img_0ab37df6eccc6d0b7ca4258bc4345ec4.png
图3.png
  1. 执行完成后jni目录下就创建了com_mazaiting_jni_Test.h文件,然后我们在jni目录下编写 Test.cpp、Android.mk、Application.mk这三个文件,代码如下:
img_505717edadbf1996e176dfb7498e02e5.png
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目录上点击右键)
img_e019ebe0ca57d1ee9a4d5272a259623e.png
ndk-build.png
  1. 得到.so文件
img_3198c2d80ede1024e58ecbdcf7608997.png
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. 程序运行结果


    img_fd22db01ea2dbf14b0f2dfd55e1d98bc.png
    success.png
目录
相关文章
|
2月前
|
Windows
修改Windows服务的配置
修改Windows服务的配置
|
3月前
|
C++ Windows
Windows下boost安装及其在VS2013中配置
Windows下boost安装及其在VS2013中配置
|
3月前
|
存储 Java Windows
Java21 JDK下载安装及Windows环境变量配置
JDK是Java的开发工具包,要进行Java学习或开发之前,需先下载安装,下载地址如下:提示:这网址里面有三个扩展名的文件,分别是“.zip”、“.exe”和“.msi”,鄙人选择的是.exe的文件,下方的安装和环境的配置也是安装该文件的安装程序进行的。
261 2
|
1月前
|
应用服务中间件 nginx Windows
windows下快速安装nginx 并配置开机自启动
windows下快速安装nginx 并配置开机自启动
windows下快速安装nginx 并配置开机自启动
|
1月前
|
算法 应用服务中间件 网络安全
windows下采用 nginx配置websocket支持wss流程
windows下采用 nginx配置websocket支持wss流程
|
1月前
|
存储 Oracle Java
windows配置java环境
windows配置java环境
43 0
|
1月前
|
Android开发
[Android jni] Bitmap与Mat对象的相互转换
[Android jni] Bitmap与Mat对象的相互转换
47 0
|
1月前
|
弹性计算 网络安全 Apache
windows server2012服务器下PHPstudy配置ssl证书(https配置)
windows server2012服务器下PHPstudy配置ssl证书(https配置)
66 0
|
2月前
|
Windows 网络安全
Windows【工具 05】使用freeSSHd搭建sftp环境(安装+配置+避坑)freeSSHd version 1.3.1安装包网盘分享
【2月更文挑战第2天】使用freeSSHd搭建sftp环境(安装+配置+避坑)freeSSHd version 1.3.1安装包网盘分享
349 0
Windows【工具 05】使用freeSSHd搭建sftp环境(安装+配置+避坑)freeSSHd version 1.3.1安装包网盘分享
|
2月前
|
NoSQL Linux Redis
Redis--安装与配置(Linux与Windows)
Redis--安装与配置(Linux与Windows)