NDK环境变量配置及Jni生成so文件

news2024/11/17 7:21:59

1、通过AndroidStudio下载NDK和Cmake之后,需要在系统环境变量中进行NDK的配置,如下

   (1)、NDK_HOME  :  D:\SDK\Sdk\ndk\22.1.7171670

   (2)、将%NDK_HOME%同时添加到Path中

2、在AndroidStudio的File->Project Structure->SDK Location中选择ndk,如果不能手动选择,可在local.properties文件中添加,如下:

     ndk.dir=D\:\\SDK\\Sdk\\ndk\\22.1.7171670

3、在项目中编写带有native声明的java类

4、在Terminal中,进入带有native类所在的文件夹,执行

javac  ***.java命令,生成对应的.class文件

5、在main目录下新建jni文件夹,之后在Terminal中执行

  javac ***.java -h ../../jni,注意../的多少取决于包名的长度,根据实际情况决定,执行完成之后会生成.h文件在jni文件夹中

6、在jni文件夹中编写对应的.c文件、Android.mk、Application.mk共3个文件,如下图:

 其中,Android.mk内容如下:

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)

LOCAL_MODULE := native-jni
LOCAL_SRC_FILES := test.c
include $(BUILD_SHARED_LIBRARY)

Application.mk内容:APP_ABI := all

7、在Terminal中,在jni目录下,执行ndk-build命令,会在main目录下生成libs文件夹

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/604930.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux Shell_cut命令(按列提取文本字符)

linux cut命令(按列提取文本字符) cut是一个选取命令,就是将一段数据经过分析,取出我们想要的。一般来说,选取信息通常是针对“行”来进行分析的,并不是整篇信息分析的 语法格式 cut [-bn] [file] 或 cu…

2023届-SLAM算法校招面经

23年6月初终于尘埃落定,今年受大环境影响,这一路可以说是步履维艰,我的投递的行业主要面向机器人和自动驾驶,投递岗位大部分是算法工程师,其中也包括C开发和少量的测试岗,在面试过程中加深了对车企、自动驾…

15天学会EasyX 第1天:EasyX的下载与配置安装

本文为山城瑞宝创作,转载请标注版权! 本文所指的编译器为Dev-c,如果有任何问题请私信我。 如果是使用VS的伙伴,直接去官网一键安装就可以了(会略讲)。 EasyX官网地址:https://easyx.cn/ 目录 …

【模块七----面向对象基础部分】

面向对象基础部分 面向对象的编程思想介绍: 一 、类和对象:1.1类:创建对象前必须先有类的存在类和对象的关系:类的组成:属性行为类的创建实例: 1.2 对象:对象的创建格式:使用对象的成…

新来的00后这么猛,这薪资我看了都吓一跳,这是正常人吗?

2023年很卷吗?不,只能说你还得学! 都说00后已经躺平了,但是有一说一,该卷的还是卷! 这不,前段时间我们公司新招来了一个00后小伙,工作都没2年,跳槽到我们公司就起薪18K&…

MarkDown的基本使用方法

为了给官方的文档知识总结:Markdown 基本语法 | Markdown 官方教程 #空格内容:‘#’表示标题的等级,越少表示标题级别越高(字越大) 在一行的末尾加两个或多个空格再回车,就是我们普通的文本回车。【还有一…

FreeRTOS基础学习

一、学习资源: 1、正点原子免费教学视频: 原子哥,专注电子技术教学 2、FreeRTOS官方网站: FreeRTOS - Market leading RTOS (Real Time Operating System) for embedded systems with Internet of Things extensions 3、PPT与源码…

Node.js+vue多用户个人博客网站i03nz

基于nodejs语言设计并实现了个人博客。该系统基于B/S即所谓浏览器/服务器模式,应用Vue框架,选择MySQL作为后台数据库。系统主要包括首页、个人中心、用户管理、文章分类管理、博客文章管理、留言板管理、系统管理等功能模块。要循序渐进,心急…

chatgpt赋能python:Python列表分割与排序:完美解决数据处理问题

Python列表分割与排序:完美解决数据处理问题 在Python的开发实践中,数据处理是一项必不可少的操作。列表(list)是Python语言中常用的数据类型之一,列表中的元素可以是任意类型。列表的分割和排序是Python中常见的操作…

Apk编译过程1 - Android Studio 与 gradle

Apk编译过程1 - Android Studio 与 gradle 文章目录 Apk编译过程1 - Android Studio 与 gradlegradlewAndroid studio 的 gradle plugingradle脚本AGP:Android Gradle Plugin gradle 是 Android 开发者比较熟悉的构建工具了,因为 Android Studio 默认使用…

Java常用类及使用方法

目录 1.String 1.String的基本概念 2.String的不可变性 3.String的实例化方式及内存解析 1.两种方式 2.new构造器的方式的内存解析 3.字符串对象的存储 4.字符串拼接后的内存解析 6.String中的常用方法 7.什么时候indexOf (str)和LastIndexOf (str)返回值相同 8.Str…

用gpt定制一个pytest接口测试框(附源码)

目的: 描述我的需求和目标让gpt给我写一个测试接口框架 并且让他自己完善。 我说:帮我写一个基于python语言的 pytest的接口测试框架 支持post get put delete请求 添加详细的断言,处理身份验证和授权,处理HTTP错误 加上allure2报告和有请求…

代码随想录第51天

1.最佳买卖股票时机含冷冻期 淦,自己写,用3个状态死活写不出来。 动规五部曲,分析如下: 确定dp数组以及下标的含义 dp[i][j],第i天状态为j,所剩的最多现金为dp[i][j]。 其实本题很多同学搞的比较懵&…

SecurityAccess(0x27)服务

SecurityAccess(0x27)服务 此服务的目的是提供访问数据和/或诊断服务的手段,这些服务因安全,排放或安全原因而受到限制。 用于将 例程或数据下载/上传到服务器和从服务器读取特定存储器位置的诊断服务是可能需要安全访问的情况。…

使用Inkscape绘制矢量电路图

GNU Inkscape是一个免费的开源矢量图形编辑器,非常适合画论文中的矢量插图。 Inkscape Inkscape支持win mac linux全平台(下载),windows端还发布了uwp版本,可在Windows store安装。 基本操作: inkscape工…

2023年前端面试题汇总-性能优化

1. CDN 1.1. CDN的概念 CDN(Content Delivery Network,内容分发网络)是指一种通过互联网互相连接的电脑网络系统,利用最靠近每位用户的服务器,更快、更可靠地将音乐、图片、视频、应用程序及其他文件发送给用户&…

简谈软件版本周期 | Alpha、Beta、RC、Stable版本之间的区别

目录 💌 引言 ⭕ 软件版本周期 🛠️ 软件开发期 ⚖️ 软件完成期 💰 商业软件版本 💌 引言 定义好版本号,对于产品的版本发布与持续更新很重要;但是对于版本怎么定义,规则如何确定&#x…

【微服务架构】无法在Sentinel Dashboard查看到服务的监控信息原因

(目前项目中使用的Hystrix,而Hystrix已经不维护了,至今仍然是2018年发布的1.5.8版本。) 开始学习一下新的服务治理框架Sentinel Sentinel官网介绍 在集成Sentinel案例中碰到的问题 微服务,无法在sentinel dashboard…

Oracle中的数据导出(3)

假如我现在不想再打开DOS界面输入命令导出数据,那又有什么简单便捷的方法实现呢? 我将在本篇描述一种自动化的操作方法,简单讲就是:我把需要查询的数据脚本放在桌面的一个mini,通过双击快捷图标直接实现数据结果导出到…

VMware ESXI7.0.3的安装

文章目录 一、VMware ESXI7.0版本的安装与配置1.1、VMware概述。1.2、VMware 解析:1.3、VMware ESXI解析:2.1、准备资料2.2.1、VMware ESXI的ISO下载 3.1、安装ESXI4.1、浏览器键入esxi上述ipv4地址:192.168.229.171 一、VMware ESXI7.0版本的…