Android Studio 最简单的NDK环境搭建和JNi调用

Android Studio开发JNI示例 JNI和NDK介绍 JNI(Java Native Interface),是方便Java调用C、C++等Native代码所封装的一层接口,相当于一座桥梁。通过JNI可以操作一些Java无法完成的与系统相关的特性,尤其在图像和视频处理中大量用到。 NDK(Native Development Kit)是Google提供的一套工具,其中一个特性是提供了交叉编译,即C或者C++不是跨平台的,但通过N... 阅读详情

首先下载好ndk开发工具包,我的版本是android-ndk-r10b,没有的话请先下载好了解压到一个不含中文的文件下(别问为什么不能放中文的文件夹下),[点击这里下载ndk]
NDK r10链接: https://pan.baidu.com/s/1i4RamBb 密码: vphj

  1. 创建你的android studio 项目
  2. 开始配置你的ndk环境 ——>首先右键你的项目查看“open module Settings”进去可以看到Android NDK Loaction 记住改路径是到这里写图片描述点击ok
  3. 在配置gradle.properities这里写图片描述
  4. 接着配置改module的build.gradle这里写图片描述其中红色的代表是你要生成的.so文件的名称,蓝色的是在c/c++代码中要用的工具类,不用管 ndk {
    moduleName “hello-jni”
    ldLibs “log”
    }`

  5. 在你的java文件夹下开始编写要调用c的类或者直接到Activity里面编写,我这里直接写了一个类来调用nativte的方法`package com.sino.jnifrom;

/**
- Created by Administrator on 2016/10/18.
*/
public class JNiUtils {
static {
System.loadLibrary(“hello-jni”);
}

public static native String getStringFromJNi();

}
`

   这个是我自己写的一个类,很简单的一个调用,这里不详细说。
  • 现在开始生成c的头文件,这里介绍俩种方法(有很多种)。

1、
- 通过AS的Terminal命令行来执行javah命令,具体如下:
- 执行命令切换到java目录,这里写图片描述
然后执行命令:javah +类全名(包名+类名)javah后面有个空格,会在java目录下生成一个.h的头文件
这里写图片描述
2、通过cmd命令行来执行

  • 建好了工程之后在工具栏的Build项执行make project—为了编译生成.class文件,然后切换到debug这个目录下
  • 执行命令结果如下:这里写图片描述执行成功的话会直接到当前目录生成一个.h的文件
  • 在main路径创建一个jni文件,将c/c++文件和刚刚生成的头文件放里面这里写图片描述这里需要特别提醒下,创建了自己需要的c文件后还要创建一个空的c文件,里面什么也不写,别问我因为啥(工具的自身bug)
  • 最后写c代码,将头文件里面的方法名拷贝到自己创建的c文件里面开始写c代码,不想多说c代码贴图最清晰这里写图片描述
  • 这里贴下c++代码:
  • #include “com_sino_jnifrom_JNiUtils.h”

define LOG_TAG “System.out”

include

define LOGD(…) android_log_print(ANDROID_LOG_DEBUG, LOG_TAG, __VA_ARGS)

define LOGINFO(…) android_log_print(ANDROID_LOG_ERROR, LOG_TAG, __VA_ARGS)

JNIEXPORT jstring

JNICALL Java_com_sino_jnifrom_JNiUtils_getStringFromJNi
(JNIEnv *env, jclass jclass) {

return env->NewStringUTF("我来自c++");

}
`运行程序效果如下:这里写图片描述

好了,这是我觉得AndroidStudio最简单的一种配置~~
我上传了demo地址:

http://download.youkuaiyun.com/detail/androidexception/9657034

-如果你在你的Activity中执行命令javah 的时候报错:
错误: 无法访问Android.support.v7.app.AppCompatActivity
找不到android.support.v7.app.AppCompatActivity的类文件
搜索了一下,在这篇文章中找到答案:http://www.itnose.net/detail/6291798.html
原来是出现这个错误是因为编译的classpath 未加入v4和v7库

Android Studio NDK开发并调用so库 前言 什么是NDK? NDK全称是Native Development Kit,NDK提供了一系列的工具,帮助开发者快速开发C(或C++)的动态库,并能自动将so和java应用一起打包成apk。NDK集成了交叉编译器(交叉编译器需要UNIX或LINUX系统环境),并提供了相应的mk文件隔离CPU、平台、ABI等差异,开发人员只需要简单修改mk文件(指出“哪些文件需要编译”、“编译特性要求”等),就... 阅读详情

相关推荐

Android Studio NDK开发案例一 JNI开发入门

        最近在做Android的项目,用到了JNI,现将NDK的开发流程和方法整理出来,希望能够让刚接触的小伙伴们少走一些弯路。 NDK         Native Development Kit(NDK)是一系列工具的集合。它提供了一系列的工具,帮助开发者快速开发C/C++的动态库,并能自动将so和java一起打包成apk。 JNI         Java Native In...

他乡&学子 3248

Android-studio的ndk

本篇介绍Android-studio下的ndk的配置教程

k393393的博客 1616

Android NDK开发之旅(2):Android Studio中使用CMake进行NDK/JNI开发(初级)

CMake是一款比make更强大的编译自动配置工具,它可以根据不同平台、不同的编译器,并通过CMakeLists.txt文件中简单的语句来描述所有平台的编译过程,生成相应的Makefile文件或project文件。CMake被引入于AndroidStudio2.2,其目的是替代原有的JNI/DNK开发方法,使AS在进行JNI/NDK时更加的方便、高效。CMake的优势如下: (1) 允许直接在C/C++代码中加入断点,调试; (2) 在Java层中使用“ctrl+左键”快捷键能够直接进入本地方法对应

老蒋也疯狂 9654

看了张鸿洋大神那篇公众号推送的文章才是促使我来写博客

看了鸿洋的文章,他说的一句话我感觉非常不错:选择做正确的一件事,并且坚持下去。刚刚写博客,因为我是一个菜鸟,所以也不知从何写起,所以先写写自己做android的经历和感想吧。 从事android这个行业,说实话,入门的时候需要java基础比较重要,我的java学的比较烂,所以啦平常都是自己都还在看一些关于java的书。嗯,在这里说下,想学会android不难,但是想学好android,说实在的不

RayXiong的博客 4477

Android Studio 配置NDK,运行第一个hello-jni安卓程序详细步骤

0 前言    本文是我一边操作一边截图记录下来的。理论上来说,如果你环境没有大问题的话,是可以成功运行出结果的。 1 准备工作 已经安装好android studio,  我安装的版本是Android Studio 2.0 Preview已经下载并解压好android ndk, 我下载的版本是 android-ndk64-r10b-windows-x86_64     2 打开a

zwl809621597的博客 3436

Android Studio中配置NDK编译环境(ndk-build方式编译jni)

Android 项目中使用 jni 有两种编译方案,一种是传统的ndk-build方案,一种是当前推荐使用的 cmake方案,本章主要介绍在Android Studio中采用ndk-build方式编译jni的配置方法,以及在配置过程中遇到的问题及解决方案。 一、 添加jni源码 1、 在工程的app/src/main/目录下新建jni目录,用来存放需要编译的jni的代码; 2、 将jni相关的代码拷贝到jni目录下,需包含Android.mk和Application.mk文件,简单代码如下所示: 1)And

casual_clover的博客 5785

最简单的ndk调用!通过libjpeg库来加载图片,避免了oom~

我在这里说下显而易见的优势:大量节省上传流量,处理后的图片效果和前期原图基本没啥变化,但是质量可以相差10倍!!是不是狠diao~, 老司机先上图, 有没有一种被惊艳的感觉~! 再看看点击原图片查看详细内容: 接下来看看 处理后的图片查看详细内容:图是最好的说明!有没有被震撼到呢?开始开车吧。 我们平常的图片压缩,如果通过java去处理,是比较麻烦的,要么就是质量压缩代码如下: 微信的缩略图要求

RayXiong的博客 3046

NDK环境配置之Android Studio

随着越来越多的人使用Android Studio来开发,接下来介绍Android Studio如何配置NDK,完成JNI开发。首先需要准备Android studio安装包,NDK安装包。NDK安装包的下载可以参照NDK环境配置之Eclipse文章下载NDK安装包。接下来介绍Android Studio如何配置NDK完成JNI开发。   1.通过Android Studio创建一个Andro

chewbee的专栏 2535

Android NDK的include配置

1、在菜单Windows->Preferences->Android->NDK设置NDK Location 2、在Package Explorer里设置支持JNI接口调用的项目的c/c++ include directories 2、1 Properties->c/c++ general->paths and symbols->includes:          $(NDK_ROOT)\p

那山,那水,那驴 3179

Excel基金净值自动更新:手把手教你用Power Query抓取天天基金网数据(含常见错误修复)

本文详细介绍了如何利用Excel内置的Power Query工具,从天天基金网自动抓取基金净值数据,实现表格数据的自动刷新。通过手把手教程,您将学会构建参数化查询、整合多基金数据、计算持仓盈亏,并解决网页结构变动等常见错误,最终打造一个专属的、可自动更新的基金监控仪表盘,彻底告别手动更新。

xx56789的博客 730

【LaTeX PPT模板集】Beamer主题与配色使用教程

【LaTeX PPT模板集】Beamer主题与配色使用教程

Xminyang的博客 1万+

Android studio环境下的 NDK(jni)开发

前言1、什么是NDK?NDK全称是Native Development Kit,NDK提供了一系列的工具,帮助开发者快速开发C(或C++)的动态库,并能自动将so和java应用一起打包成apk。NDK集成了交叉编译器(交叉编译器需要UNIX或LINUX系统环境),并提供了相应的mk文件隔离CPU、平台、ABI等差异,开发人员只需要简单修改mk文件(指出“哪些文件需要编译”、“编译特性要求”等),就可

Mr_haimeng的博客 3735

Selenium实战:突破反爬,自动化抓取国家知识产权局专利数据

网络爬虫是数据采集的核心技术,其原理是通过程序模拟浏览器行为,自动访问网页并提取结构化信息。在数据驱动决策的今天,高效获取公开数据对市场分析、技术调研和竞争情报至关重要。然而,面对广泛应用的JavaScript动态渲染和反爬虫机制,传统的静态页面抓取方法往往失效。Selenium作为浏览器自动化工具,通过驱动真实浏览器执行JavaScript,能够有效绕过前端反爬,实现“可见即可得”的数据抓取,在需要与页面进行复杂交互或处理动态内容的场景中价值显著。本文以【专利数据】抓取为例,结合【Selenium】工具,

weixin_33881140的博客 393

Android Studio之NDK开发

Android Studio之NDK开发 一、 前言 NDK全称是Native Development Kit,是Android提供的一个开发工具包,能够快速将开发的C,C++的动态库,协议软件包,以及优秀的软件工具,用so和应用打包成APK,自由地在Android上运行。而NDK开发工具,就是将C/C++程序,编译成为Android环境可运行的程序,再者,通过NDK实现Android中实现JNI编程。那么JNI又是啥呢?JNI的全称是Java Native Interface,即Java的本地接口,JNI

yinshenk的博客 1万+

Unity基础篇-----Input输入

2、Input.GetTouch()方法,主要用于移动端开发使用,此方法主要获取触摸屏幕的操作数据,首先通过Input.touchCount这个方法获取到手指触摸屏幕的次数,通过GetTouch方法传输触摸次数,调用Touch结构判断手指的状态来是否为设定的状态,符合的话则执行相关内容。参数(“Horizontal”)表示左右的值,值为-1时,表示你在一直按下左方向对应的按键、设备类型为手柄时,表示你把推杆推到了最左边,为0时为默认位置,手柄中对应正中间,为1时与-1时对应的情况正好相反。

why820mmm的博客 3495

手把手推导APM的 sqrt_controller控制器

前言 玩过无人机的朋友对APM应该都不会陌生,如果是搞过多旋翼飞控且读过代码,肯定遇到过sqrt_controller控制器,它频繁的在位置、姿态控制中出现,所以非常有必要搞清楚这个控制原理。 下面以高度控制器为例来分析。 高度控制 APM的高度控制采用PID串级3环控制,即外环位置控制,中间速度控制,内环速度控制,如下图所示。 今天要讨论的sqrt_controller就是应用于位置控制器中。位置控制器的输出是速度控制器的参考reference输入,如果采用单P控制,其输出vel_ref = pos_e

周小逗的博客 3031

android studio搭建JNI开发环境

1.明确为何要学习JNI JNI是Java Native Interface的缩写,它提供了若干的API实现了Java和其他语言的通信(主要是C&C++)。从Java1.1开始,JNI标准成为java平台的一部分,它允许Java代码和其他语言写的代码进行交互。JNI一开始是为了本地已编译语言,尤其是C和C++而设计的,但是它并不妨碍你使用其他编程语言,只要调用约定受支持就可以了。使用ja...

qq_40077167的博客 1万+

基于本地知识库的智能问答系统架构

智能问答系统的核心可以分为4部分。1)知识库构建。2)检索。3)后处理。4)推理。知识库构建:知识库中可以包含多个向量数据库和知识图谱等,核心是怎么建立索引,使得检索时能够将与问题相关的知识给检索出来。检索:从知识库中的多个库或者知识图谱中检索出与问题相关的信息。后处理:从知识库中检索出来的信息可能是冗余的,而且可能不符合我们希望的格式要求,因此,我们需要对这些数据进行过滤,格式化等操作。推理: 基于检索出来的知识进行推理,让输出能够回答用户的问题,目前主要使用大模型进行推理。

qq_44993593的博客 1709

android studio 串口通信JNI、NDK配置

android studio 串口通信JNI、NDK配置 最近刚好要做关于串口通信的项目,需要用到JNI,于是就去百度关于android这一块串口通信怎么使用,但是发现很多的配置都是eclipse的而关于studio的jni配置就很零散,另外,也是第一次弄,所以遇到了很多的问题,现在就把配置的流程写出来,方便以后如果不记得了,可以查看,当然,如果有遇到同样问题的人也可以通过这篇博客能够得到帮助。

qiuyin2015的博客 3263

使用 ChatGPT Store 里的工具给 ABAP 制作 Logo,效果一般

在编程领域中,Domain Specific Language(DSL)是一种特定于某一问题领域的计算机语言,诞生目的就是为了解决该领域特定类型的问题。在 ChatGPT 官网的 GPT Stores,也有很多已经预先配置完毕,专用于某一特定领域的 GPT 工具,OpenAI 将其分类如下。第三个问题是 Logo 的配色,提供蓝白,黑绿和灰黄,以及自定义调色板四种选择。这个 GPT 设计了四个问题,通过一问一答的方式,获得使用者想创建 Logo 的细节。这次的复杂度调成最低的 1,感觉还是有点花里胡哨的。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 511

快速卷积结构FIR数字滤波器的设计与ARM平台实现

本文提出了一种基于快速卷积结构的FIR数字滤波器设计与实现方案。通过Matlab设计了满足特定指标的低通FIR滤波器,采用重叠-保存法和重叠-相加法两种快速卷积算法,将计算复杂度从O(N·M)降低到O(NlogN)。详细介绍了滤波器系数生成、性能验证流程,并提供了ARM平台C语言实现的关键技术,包括定点量化处理。实验结果表明,该方法能有效滤除混合信号中的高频干扰,保留目标1kHz正弦信号,验证了设计方案的有效性。

huanghm88的专栏 123

android NDK——搭建Android Studio的NDK环境

我接触jni的时候正在用android studio,所以我记录一下在as上部署ndk环境的步骤。首先先看一下大概步骤: 1,下载ndk 2,配置环境变量 3,配置as属性 4,java测试代码 5,创建.h的头文件 6,创建.c的测试c代码 7,生成so文件 8,测试ndk环境ok。接下来我们就来一步一步的实现。

boolean的博客 3万+

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

[安卓开发笔记二]android Studio通过jni调用C++代码

[安卓开发笔记二]android Studio通过jni调用C++代码 自己需要用到android studio开发安卓项目,为了效率需要用jni来调用C++底层代码,网上关于这方面的资源十分匮乏,自己踩了很多坑,总算明白android studio是如何进行jni的调用,记录与此,贡献自己的一点力量,让后来人少踩坑 1、开发ide:操作系统win7或者mac均可,这点没有关系哈 androi

u012341163的博客 1万+

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Android Studio 配置NDK并编译JNI文件so库 APP调用jni源码实例

Android:配置NDK并编译JNI文件so库 APP调用jni源码实例 一、Android studio 版本3.4.1 二、Android studio自带NDK 二、配置javah及ndk-build快速构建工具 1、配置ndk-build 用来编译jni,File-Settings-Tools-External Tools + Program:C:\Android\Sdk\ndk-bundle\ndk-build.cmd (根据自己............

海月汐辰 4805

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Android:JNI 与 NDK

在Android开发中,使用NDK开发的需求正逐渐增大但很多人却搞不懂JNI与NDK到底是怎么回事今天,我将先介绍JNI与NDK& 之间的区别,手把手进行NDK的使用教学,希望你们会喜欢,即Java本地接口作用: 使得Java与 本地其他类型语言(如C、C++)交互即在Java代码 里调用C、C++等语言的代码 或C、C++代码调用Java代码特别注意:JNI是Java调用Native语言的一种特性JNI是属于Java的,与Android无直接关系,是Android的一个工具开发包。

u013250861的博客 1509

android studio 配置NDK环境进行JNI开发

刚好在移植ArlinkPlayer工程到地面软件中需要用到一些NDK、JNI进行开发,就研究了一点入门基础,,纠结了好几天的问题,终于在昨天晚上解决了 分享一下技术成果,整理如下: 一、NDK基础:                                                                                              NDK全

zoe技术博客专栏 2056
上一篇: Android view源码解析
下一篇: eclipse中配置的tomcat 启动正常 但是访问报404错误
RayXiong
博客等级 码龄10年 8粉丝 8原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值