iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Android Studio开发之JNI的示例分析
  • 905
分享到

Android Studio开发之JNI的示例分析

androidstudiojni 2023-05-30 19:05:24 905人浏览 薄情痞子
摘要

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

这篇文章主要介绍了Android Studio开发之JNI的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

前言

Android上层应用使用java开发,不过java并不适合密集型运算,比如图片处理等,遇到密集型运算,一般使用C/C++完成。

Java虚拟机支持调用c/c++代码,即JNI(Java Native Interface),它提供了若干的api实现了Java和其他语言的通信。为方便android平台上使用JNI技术,提供了NDK开发包,可以将NDK理解为对JNI的进一步封装,方便开发使用罢了。

JNI开发方式有多种,可以在Android 源码中开发,也可以利用其它工具,但都比较烦琐或者要下载很多东西,Android Studio也支持JNI开发,使用起来也比较方便,本文主要讲述下如何使用Android Studio进行JNI开发。

NDK设置

NDK需要下载,一共有两种方式,建议从Android Studio中下载。

从Android Studio中打开SDK Manager,进入如下界面并且勾选NDK选项。

Android Studio开发之JNI的示例分析

点击应用,安装完后重启Android Studio即可。

也可以从官网下载,然后在Android Studio中设置,这种方式不再讲述。

JNI开发

本章中以高斯模糊图像处理为示例,学习如何进行JNI开发。

新建一个Android工程,注意Android Studio对包名的处理,它的默认处理非常地别扭,如果不喜欢这种包名命名方式,可以点击 Edit 进行更改。

Android Studio开发之JNI的示例分析

将工程以Project视图显示,方便查找具体文件。

Android Studio开发之JNI的示例分析

项目gradle.properties文件中加上以下代码,表示我们要使用NDK进行开发。

android.useDeprecatedNdk=true

查看项目local.properties中是否有加入ndk和sdk的路径,如果没有需要补充。

 ndk.dir=D\:\\android-sdk\\ndk-bundle sdk.dir=D\:\\android-sdk

在app文件夹下的build.gradle的defaultConfig里加入如下代码

 ndk {  moduleName "ImageBlur"  //生成的so文件名字,调用C程序的代码中会用到该名字  abiFilters "armeabi", "armeabi-v7a", "x86" //输出指定三种平台下的so库  ldLibs "log", "jnigraphics", "android" //jni中需要用到的其它库 }

定义native方法

Android Studio开发之JNI的示例分析

生成h文件,打开Android Studio提供的命令行工具Terminal,输入以下指令。

cd app/src/main/javajavah -jni 包名+类名

本例中报错,“无法确定Bitmap的签名”,根据网上搜索结果,需要指出 android.jar 文件的位置才行,于是按如下方法生成 h 文件。

复制代码 代码如下:


javah -classpath C:\PROGRA~2\Android\android-sdk\platfORMs\android-8\android.jar;. com.test.JniTest

建立 JNI 文件夹,复制生成的 h 文件到 JNI 文件夹中来。 选择File->New->Folder->JNI Folder

Android Studio开发之JNI的示例分析

注意:在弹出创建 JNI 文件夹的对话框中勾选 Change Folder Location,并在下面输入文件夹名,如下图所示。

Android Studio开发之JNI的示例分析

一般来说JNI相关文件放在 src/main/jni 之中。

新建c文件,实现对应接口,在java代码中完成 JNI 接口调用。

Android Studio开发之JNI的示例分析

结语

在gradle构建的过程中有可能出现这样或那样的异常,查看gradle构建日志,即可知道具体异常,而查看gradle构建日志按钮比较隐蔽。

Android Studio开发之JNI的示例分析

比如说,使用c文件或c++文件,往往会有一些不同,使用c++文件可能编译报错,此时则需要打开gradle console查看具体原因。

感谢你能够认真阅读完这篇文章,希望小编分享的“Android Studio开发之JNI的示例分析”这篇文章对大家有帮助,同时也希望大家多多支持编程网,关注编程网精选频道,更多相关知识等着你来学习!

--结束END--

本文标题: Android Studio开发之JNI的示例分析

本文链接: https://www.lsjlt.com/news/220608.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

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

下载Word文档
猜你喜欢
  • Android Studio开发之JNI的示例分析
    这篇文章主要介绍了Android Studio开发之JNI的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。前言Android上层应用使用java开发,不过java并不...
    99+
    2023-05-30
    android studio jni
  • android studio JNI开发
    一、JNI的作用: 使Java与本地其他类型语言(C、C++)交互; 在Java代码调用C、C++等语言的代码 或者 C、C++调用Java代码。 由于JAVA具有跨平台的特点,所以JAVA与本地代码的交互能力弱,采用JNI特性可以增强JA...
    99+
    2023-09-03
    android studio android
  • Android studio中JNI编程实例并生成so库的示例分析
    这篇文章主要为大家展示了“Android studio中JNI编程实例并生成so库的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Android studio中JNI编程实例并生成so库...
    99+
    2023-05-30
    android studio
  • JNI开发示例
    小编给大家分享一下JNI开发示例,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!案例1:Native项目如果开发者们只是想做简单的Native开发,并非为第三方提供...
    99+
    2023-06-14
  • Android开发之项目模块化的示例分析
    这篇文章主要为大家展示了“Android开发之项目模块化的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Android开发之项目模块化的示例分析”这篇文章吧。项目协同项目协同,也叫多项目...
    99+
    2023-05-30
    android
  • windows下vscode+vs2019开发JNI的案例分析
    这篇文章给大家分享的是有关windows下vscode+vs2019开发JNI的案例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。JNI全称是Java Native Interface(Java本地接口)单词...
    99+
    2023-06-15
  • Android开发之SD卡文件操作的示例分析
    这篇文章主要为大家展示了“Android开发之SD卡文件操作的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Android开发之SD卡文件操作的示例分析”这篇文章吧。具体如下:前面的文章...
    99+
    2023-05-30
    android sd卡
  • windows下vscode+vs2019开发JNI的示例
    JNI全称是Java Native Interface(Java本地接口)单词首字母的缩写,本地接口就是指用C和C++开发的接口。由于JNI是JVM规范中的一部份,因此可以将我们写的...
    99+
    2024-04-02
  • Android Animation之TranslateAnimation的示例分析
    这篇文章主要为大家展示了“Android Animation之TranslateAnimation的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Android Animation之Tr...
    99+
    2023-05-30
    android animation translateanimation
  • android studio开发app实例
    以下是一个简单的Android Studio开发App的实例: 打开Android Studio,并创建一个新项目。 选择一个适当的应用程序名称和包名称,然后选择目标API级别和默认Activity的模板。 在MainActivity...
    99+
    2023-09-05
    android studio android ide
  • Android Studio 3.0上内存泄漏的示例分析
    这篇文章主要为大家展示了“Android Studio 3.0上内存泄漏的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Android Studio 3.0上内存泄漏的示例分析”这篇文章...
    99+
    2023-05-30
    android studio
  • Android Studio 3.0 gradle提示版本太老的示例分析
    这篇文章主要介绍了Android Studio 3.0 gradle提示版本太老的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。很多朋友在用Android Studi...
    99+
    2023-05-30
    android studio
  • 前端开发之CSS原理的示例分析
    这篇文章主要为大家展示了“前端开发之CSS原理的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“前端开发之CSS原理的示例分析”这篇文章吧。  一、浏览器...
    99+
    2024-04-02
  • Html5多线程开发之WebWorkers的示例分析
    这篇文章将为大家详细讲解有关Html5多线程开发之WebWorkers的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。我们都知道,浏览器执行js代码是单线程的,当...
    99+
    2024-04-02
  • Angular开发的示例分析
    这篇文章给大家分享的是有关Angular开发的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。什么是AngularAngularJS是动态Web应用程序的结构框架。 它允许...
    99+
    2024-04-02
  • 移动前端开发之viewport的示例分析
    小编给大家分享一下移动前端开发之viewport的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!在移动设备上进行网页的重...
    99+
    2024-04-02
  • nodejs微信开发之接入的示例分析
    这篇文章主要为大家展示了“nodejs微信开发之接入的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“nodejs微信开发之接入的示例分析”这篇文章吧。内...
    99+
    2024-04-02
  • Android 媒体开发之MediaPlayer状态机接口方法的示例分析
    这篇文章主要为大家展示了“Android 媒体开发之MediaPlayer状态机接口方法的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Android 媒体开发之MediaPlayer状...
    99+
    2023-05-30
    android mediaplayer
  • 移动web开发之touch事件的示例分析
    这篇文章主要介绍移动web开发之touch事件的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!前面的话iOS版Safari为了向开发人员传达一些特殊信息,新增了一些专有事件。...
    99+
    2024-04-02
  • web开发之响应式布局的示例分析
    这篇文章将为大家详细讲解有关web开发之响应式布局的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、前言响应式Web设计可以让一个网站同时适配多种设备和多个屏幕...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作