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
目录
相关文章
|
4月前
|
Java Android开发 C++
Android Studio JNI 使用模板:c/cpp源文件的集成编译,快速上手
本文提供了一个Android Studio中JNI使用的模板,包括创建C/C++源文件、编辑CMakeLists.txt、编写JNI接口代码、配置build.gradle以及编译生成.so库的详细步骤,以帮助开发者快速上手Android平台的JNI开发和编译过程。
309 1
|
1月前
|
存储 负载均衡 Java
如何配置Windows主机MPIO多路径访问存储系统
Windows主机多路径(MPIO)是一种技术,用于在客户端计算机上配置多个路径到存储设备,以提高数据访问的可靠性和性能。本文以Windows2012 R2版本为例介绍如何在客户端主机和存储系统配置多路径访问。
82 13
如何配置Windows主机MPIO多路径访问存储系统
|
24天前
|
监控 安全 网络安全
Windows Server管理:配置与管理技巧
Windows Server管理:配置与管理技巧
60 3
|
2月前
|
编译器 Android开发
配置环境变量,使CMakeLists.txt可直接使用Android NDK工具链编译项目
配置环境变量,使CMakeLists.txt可直接使用Android NDK工具链编译项目
|
2月前
|
Java Android开发 Windows
玩转安卓之配置gradle-8.2.1
为安卓开发配置Gradle 8.2.1,包括下载和解压Gradle、配置环境变量、修改配置文件以增加国内镜像,以及在Android Studio中配置Gradle和JDK的过程。
92 0
玩转安卓之配置gradle-8.2.1
|
2月前
|
弹性计算 关系型数据库 数据安全/隐私保护
阿里云国际版如何配置Windows服务器的虚拟内存
阿里云国际版如何配置Windows服务器的虚拟内存
|
4月前
|
Android开发
Android 配置蓝牙遥控器键值
本文详细介绍了Android系统中配置蓝牙遥控器键值的步骤,包括查看设备号、配置键位映射文件(kl文件)、部署kl文件以及调试过程,确保蓝牙遥控器的按键能正确映射到Android系统对应的按键功能。
181 1
|
4月前
|
搜索推荐 Android开发
学习AOSP安卓系统源代码,需要什么样的电脑?不同配置的电脑,其编译时间有多大差距?
本文分享了不同价位电脑配置对于编译AOSP安卓系统源代码的影响,提供了从6000元到更高价位的电脑配置实例,并比较了它们的编译时间,以供学习AOSP源代码时电脑配置选择的参考。
277 0
学习AOSP安卓系统源代码,需要什么样的电脑?不同配置的电脑,其编译时间有多大差距?
|
4月前
|
Ubuntu Android开发
安卓系统调试与优化:(一)bootchart 的配置和使用
本文介绍了如何在安卓系统中配置和使用bootchart工具来分析系统启动时间,包括安装工具、设备端启用bootchart、PC端解析数据及分析结果的详细步骤。
212 0
安卓系统调试与优化:(一)bootchart 的配置和使用
|
4月前
|
Java 应用服务中间件 开发工具
[App Service for Windows]通过 KUDU 查看 Tomcat 配置信息
[App Service for Windows]通过 KUDU 查看 Tomcat 配置信息