• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

android studio JNI开发

武飞扬头像
Ueming
帮助1

一、JNI的作用:

1.使Java与本地其他类型语言(C、C )交互;

2.在Java代码调用C、C 等语言的代码 或者 C、C 调用Java代码。

由于JAVA具有跨平台的特点,所以JAVA与本地代码的交互能力弱,采用JNI特性可以增强JAVA与本地代码的交互能力。

二、AndroidStudion中JNI的使用方法:

1、在AS,点击File ->Setting,下载NDK 和 CMake。学新通

 2、配置环境变量:

path中添加环境变量:C:\Users\a\AppData\Local\Android\Sdk\ndk\26.0.10404224\build(我的环境)。

配置的是NDK在系统里安装的位置。

 学新通

 三、测试demo:

1. 新建一个工程JNITest,在工程的包名下,新建一个JAVA类,类名为JNITest:

  1.  
    package com.example.myapplication;
  2.  
     
  3.  
    public class JNITest {
  4.  
    public native String getJNIString();
  5.  
    }

2. 使用javac命令编译JNITest.java文件,生成JNITest.class文件。

在工程目录下执行如下命令:javac .\JNITest.java

学新通

执行完毕后可以看到包名下面生成了对应的class文件,如下图所示:

学新通

 3. 生成JNITest.class文件后,需要生成对应的.h文件:

在工程目录下执行如下命令:javah -d app/src/main/jni -classpath app/src/main/java/ -jni -v com.example.myapplication.JNITest

执行完毕后可以看到在app/src/main目录下生成了jni目录,目录里生成了对应的.h文件,文件名为com_example_myapplication_JNITest.h

4. 在jni目录下,新建一个cpp文件,命名为JNITest.cpp,文件里实现JNITest.java文件里定义的本地方法:

右击jni->New->C/C Source File->输入JNITest

JNITest.cpp 文件代码:

  1.  
    #include <jni.h>
  2.  
    #include "JNITest.h"
  3.  
     
  4.  
    JNIEXPORT jstring JNICALL Java_com_example_myapplication_JNITest_getJNIString
  5.  
    (JNIEnv* env, jobject)
  6.  
    {
  7.  
    return env->NewStringUTF("Hello From JNITest Function(getJNIString)");
  8.  
    }

com_example_myapplication_JNITest.h 文件代码:

  1.  
    #include <jni.h>
  2.  
    /* Header for class com_example_myapplication_JNITest */
  3.  
     
  4.  
    #ifndef _Included_com_example_myapplication_JNITest
  5.  
    #define _Included_com_example_myapplication_JNITest
  6.  
    #ifdef __cplusplus
  7.  
    extern "C" {
  8.  
    #endif
  9.  
    /*
  10.  
    * Class: com_example_myapplication_JNITest
  11.  
    * Method: getJNIString
  12.  
    * Signature: ()Ljava/lang/String;
  13.  
    */
  14.  
    JNIEXPORT jstring JNICALL Java_com_example_myapplication_JNITest_getJNIString
  15.  
    (JNIEnv *, jobject){
  16.  
    {
  17.  
    return env->NewStringUTF("Hello From JNITest Function(getJNIString)");
  18.  
    }
  19.  
    };
  20.  
     
  21.  
    #ifdef __cplusplus
  22.  
    }
  23.  
    #endif
  24.  
    #endif
学新通

5. 在jni目录下,再新建一个Android.mk文件:

右击jni目录->New->File->输入Android.mk,在文件里写入如下配置:

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := JNITest
LOCAL_SRC_FILES := JNITest.cpp
include $(BUILD_SHARED_LIBRARY)

再新建文件夹:Application.mk,写入配置:

APP_PLATFORM := android-21
APP_ALLOW_MISSING_DEPS=true

6. 在终端进入到项目"app/src/main/jni"目录下,执行ndk-build,执行后在app/src/main目录下自动生成lib文件夹,生成好的so库文件就在lib文件夹下,如下图所示:

学新通

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgcijjb
系列文章
更多 icon
同类精品
更多 icon
继续加载