我的编程空间,编程开发者的网络收藏夹
学习永远不晚

android studio JNI开发

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

android studio JNI开发

一、JNI的作用:

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

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

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

二、AndroidStudion中JNI的使用方法:

在AS,点击File ->Setting,下载NDK 和 CMake。

 2、配置环境变量:

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

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

 

 三、测试demo:

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

package com.example.myapplication;public class JNITest {    public native String getJNIString();}

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

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

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

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

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

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

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

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

JNITest.cpp 文件代码:

#include #include "JNITest.h"JNIEXPORT jstring JNICALL Java_com_example_myapplication_JNITest_getJNIString  (JNIEnv* env, jobject){    return env->NewStringUTF("Hello From JNITest Function(getJNIString)");}

com_example_myapplication_JNITest.h 文件代码:

#include #ifndef _Included_com_example_myapplication_JNITest#define _Included_com_example_myapplication_JNITest#ifdef __cplusplusextern "C" {#endifJNIEXPORT jstring JNICALL Java_com_example_myapplication_JNITest_getJNIString  (JNIEnv *, jobject){  {      return env->NewStringUTF("Hello From JNITest Function(getJNIString)");  }  };#ifdef __cplusplus}#endif#endif

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

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

LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE := JNITestLOCAL_class="lazy" data-src_FILES := JNITest.cppinclude $(BUILD_SHARED_LIBRARY)

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

APP_PLATFORM := android-21APP_ALLOW_MISSING_DEPS=true

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

来源地址:https://blog.csdn.net/Ueming/article/details/131903447

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

android studio JNI开发

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Android Studio开发之JNI的示例分析

这篇文章主要介绍了Android Studio开发之JNI的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。前言Android上层应用使用java开发,不过java并不
2023-05-30

Android JNI开发提高篇

有关JNI的开发技术,我们继续围绕Android平台进行,JNI可以支持C或C++,从目前为止我们写过的JNI代码均为C实现的,即文件名为.C而C++的和这些有什么不同呢? Android平台上的JNI一般使用C还是C++编写呢?Andro
2022-06-06

浅谈Android Studio JNI生成so库

1.新建Android studio工程2.新建class:AppKey.java.主要为了保存密钥 代码块package com...adminapp.lib.utils.jni; /*** Created by seven on 16/
2022-06-06

JNI开发示例

小编给大家分享一下JNI开发示例,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!案例1:Native项目如果开发者们只是想做简单的Native开发,并非为第三方提供
2023-06-14

Android studio | Android APP开发快捷键

/********************************************************** 博主信息: 博主github:https://github.com/MichaelBeechan 博主CSDN:http
2022-06-06

基于Android Studio NDK开发

1.  开发环境配置 Android Studio3.0.1 android-ndk-r13 gradle插件: classpath 'com.android.tools.build:gradle:3.0.1' gradle:distrib
2022-06-06

Android开发之Android Studio安装教程

Android开发之Android Studio安装教程下载Android Studio安装安装JDK安装Android Studio 下载Android Studio Android Studio官网下载 安装 安装JDK Android
2022-06-06

Android Studio开发(二)使用RecyclerView

Android Studio开发(二)使用RecyclerViewAndroid Studio开发(二)RecyclerView一、任务需求二、Recycler View梳理1. Fragment, Adapter, RecyclerVie
2022-06-06

Android Studio 开发调试小技巧

** 无线adb ** 在开发Android应用时,通常情况下是通过USB数据线连接设备和计算机,但对于一些需要使用USB设备的应用, 这种方法就碰到了麻烦,手机的USB接口已经和外接的USB设备连接,无法再连数据线,此时可以通过网络TCP
2022-06-06

Android开发之Android studio的安装与使用

该专题的目的:学习Android studio的特性和技巧,学习Gradle的黑魔法,学习Android的最热框架,学习Android5.0以上的新特性。 该专题的行文顺序:从Android studio的特性和相关技巧以及在工作和学习中使
2022-06-06

编程热搜

  • Android:VolumeShaper
    VolumeShaper(支持版本改一下,minsdkversion:26,android8.0(api26)进一步学习对声音的编辑,可以让音频的声音有变化的播放 VolumeShaper.Configuration的三个参数 durati
    Android:VolumeShaper
  • Android崩溃异常捕获方法
    开发中最让人头疼的是应用突然爆炸,然后跳回到桌面。而且我们常常不知道这种状况会何时出现,在应用调试阶段还好,还可以通过调试工具的日志查看错误出现在哪里。但平时使用的时候给你闹崩溃,那你就欲哭无泪了。 那么今天主要讲一下如何去捕捉系统出现的U
    Android崩溃异常捕获方法
  • android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
    系统的设置–>电池–>使用情况中,统计的能耗的使用情况也是以power_profile.xml的value作为基础参数的1、我的手机中power_profile.xml的内容: HTC t328w代码如下:
    android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
  • Android SQLite数据库基本操作方法
    程序的最主要的功能在于对数据进行操作,通过对数据进行操作来实现某个功能。而数据库就是很重要的一个方面的,Android中内置了小巧轻便,功能却很强的一个数据库–SQLite数据库。那么就来看一下在Android程序中怎么去操作SQLite数
    Android SQLite数据库基本操作方法
  • ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
    工作的时候为了方便直接打开编辑文件,一些常用的软件或者文件我们会放在桌面,但是在ubuntu20.04下直接直接拖拽文件到桌面根本没有效果,在进入桌面后发现软件列表中的软件只能收藏到面板,无法复制到桌面使用,不知道为什么会这样,似乎并不是很
    ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
  • android获取当前手机号示例程序
    代码如下: public String getLocalNumber() { TelephonyManager tManager =
    android获取当前手机号示例程序
  • Android音视频开发(三)TextureView
    简介 TextureView与SurfaceView类似,可用于显示视频或OpenGL场景。 与SurfaceView的区别 SurfaceView不能使用变换和缩放等操作,不能叠加(Overlay)两个SurfaceView。 Textu
    Android音视频开发(三)TextureView
  • android获取屏幕高度和宽度的实现方法
    本文实例讲述了android获取屏幕高度和宽度的实现方法。分享给大家供大家参考。具体分析如下: 我们需要获取Android手机或Pad的屏幕的物理尺寸,以便于界面的设计或是其他功能的实现。下面就介绍讲一讲如何获取屏幕的物理尺寸 下面的代码即
    android获取屏幕高度和宽度的实现方法
  • Android自定义popupwindow实例代码
    先来看看效果图:一、布局
  • Android第一次实验
    一、实验原理 1.1实验目标 编程实现用户名与密码的存储与调用。 1.2实验要求 设计用户登录界面、登录成功界面、用户注册界面,用户注册时,将其用户名、密码保存到SharedPreference中,登录时输入用户名、密码,读取SharedP
    Android第一次实验

目录