Android配置 NDK

2023-10-29

1.安装NDK(相信大家都会)

2.将下载的NDK目录添加到环境变量里面去

配置正常如上图

3.创建NDKUtils类

public class NDKUtils {
    public native String invokeCmethod();
    static {
        System.loadLibrary("NDKUtils");//导入生成的链接库文件
    }
}

 4.使用控制台 进入当前Android项目的main下

输入 javah -d jni -bootclasspath  C:\Users\mengying\AppData\Local\Android\sdk\platforms\android-27\android.jar;..\..\build\intermediates\classes\debug com.example.mengying.myapplication.NDKUtils

解释引用自http://www.cnblogs.com/xiaoxiaoqingyi/p/6524165.html (这里解释的目录和我的不一样根据位置对于就好了)

这时候这里就出现了jni文件夹(一开始使用的是classpath而不是bootclasspath一直错误)解决方案参考

 

这时候文件里面就会生成一个.h文件 复制他将后缀改为.c

/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class com_magicing_eigenndk_NDKUtils */

#ifndef _Included_com_magicing_eigenndk_NDKUtils
#define _Included_com_magicing_eigenndk_NDKUtils
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     com_magicing_eigenndk_NDKUtils
 * Method:    invokeCmethod
 * Signature: ()Ljava/lang/String;
 */
JNIEXPORT jstring JNICALL Java_com_magicing_eigenndk_NDKUtils_invokeCmethod
 (JNIEnv *env, jobject obj){

     return (*env)->NewStringUTF(env,"test");

  }

#ifdef __cplusplus
}
#endif
#endif

添加一个测试代码

 

接下来就是配置文件下的 Android.mk,Application.mk

新建一个文件 命名为 Application.mk里面写上这两句 

APP_PLATFORM := android-27
APP_ABI := x86_64, armeabi-v7a

 同上 新建一个Android.mk

下面的文件名需要根据自己的工程进行修改

LOCAL_PATH:=$(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := NDKUtils
LOCAL_SRC_FILES := com_example_mengying_myapplication_NDKUtils.c
include $(BUILD_SHARED_LIBRARY)

 然后在控制台输入命令 ndk-build

生成.so 文件

在这里加上这个

 

    sourceSets{
        main{
            jni.srcDirs = [] // disable automatic ndk-build call, which ignore our Android.mk
            jniLibs.srcDir 'src/main/java/libs'
        }
    }

实例化一下: 

 

然后运行一下

之前输入显示中文还报错input is not valid Modified UTF-8: illegal start byte 0xa0

重新配置才解决问题。

这样ndk算是配置完成了。

 

ps::这个名字有命名要求可以直接将下面的错误提示复制过来即可

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android配置 NDK 的相关文章

  • pandas基本操作

    df转csv文件 df to csv df转excel文件 df to excel df增加列 df insert df column name data df增加行 df append df合并 df concat df索引行或者列 df
  • Qt自定义QWidget

    Qt自定义QWidget 实例1 电池 实例2 plot绘图 实例3 plot按比例绘图 实例1 电池 promotion pro QT core gui greaterThan QT MAJOR VERSION 4 QT widgets
  • 好玩的整固代码,你学会了吗?

    Win系统下 今天装机之家教你使用一行代码就可以让电脑卡的死机 可以发给朋友整蛊一下 友情提示 整蛊有的度 不要把别人惹恼了 代码 0 0 将这5个字符复制到记事本上 以bat格式保存 将这个BAT发给其他朋友让他点击试试 保证不过一会你的
  • vue3 + element plus 自定义验证规则(两个表单必填其中一个)

    element plus 表单 自定义验证规则 const validateCustom rule any value any callback any gt if contactsForm value mobile contactsFor
  • 快速上手MongoDB和Python交互

    一 安装 导入 pip install pymongo from pymongo import MongoClient MongoDB 默认没有用户名密码 二 连接数据库 方式一 client MongoClient host localh
  • InputStream转MultipartFile

    import org apache commons fileupload FileItem import org apache commons fileupload FileItemFactory import org apache com
  • 获取iOS项目名称及版本号的方法

    NSDictionary infoDictionary NSBundle mainBundle infoDictionary CFShow infoDictionary app名称 NSString app Name infoDiction
  • systemd 之 journalctl

    原文地址 https www cnblogs com itxdm p Systemd log system journalctl html Systemd 日志系统 一 前言 昨天写了一篇文章 内容为 Systemd 常规操作与彩蛋 参考了
  • JSP+Servlet实现的HR人力资源管理系统】

    基于JSP Servlet实现的HR人力资源管理系统 演示地址 http yanshi ym4j com hr01 用户名 123456 密码 123456下载地址 基于JSP Servlet实现的HR人力资源管理系统 源码世界 项目采用J
  • Python实现独热编码

    关于独热编码与哑变量编码的概念 可以参考 https blog csdn net qq 41853758 article details 81252174 离散特征的编码分为两种情况 1 离散特征的取值之间没有大小的意义 比如color r
  • 信息化工程监理规范_赛迪工程咨询出席监理企业信息化管理和智慧化服务现场经验交流会...

    7月21日 中国建设监理协会主办的 监理企业信息化管理和智慧化服务现场经验交流会 在西安召开 来自全国200余名会员代表参加会议 住房和城乡建设部建筑市场监管司副司长卫明 陕西省住房和城乡建设厅副厅长茹广生 中国建设监理协会会长王早生出席会
  • 一文看懂MySQL中order by排序语句的原理

    order by 是怎么工作的 表定义 CREATE TABLE t1 id int 11 NOT NULL city varchar 16 NOT NULL name varchar 16 NOT NULL age int 11 NOT
  • osg 嵌入Qt 窗口

    osg嵌入Qt窗口完整代码的一个示例 include
  • C++ primer 第四版 目录(仅供参考)

    目录 第1章 快速入门 1 1 编写简单的C 程序 1 2 初窥输入 输出 1 3 关于注释 1 4 控制结构 入 1 5 类的简介 1 6 C 程序 小结 术语 第一部分 基本语言 第2章 变量和基本类型 2 1 基本内置类型 2 2 字
  • 【需求解决系列之四】Android App在线自动更新Library(V2.0)

    前言 其实每个Android App都应该有一个App在线更新的功能 这样才能及时的通知用户去更新最新版本的App 这个功能其实说起来比较简单 因为流程大家都懂 但是要真正的实现 还是要考虑很多东西的 因为项目的需要 对之前已经开源的库做了
  • Python将图片嵌入Excel单元格(仿嵌入)

    欢迎来到Python办公自动化专栏 Python处理办公问题 解放您的双手 博客主页 一晌小贪欢的博客主页 该系列文章专栏 Python办公自动化专栏 文章作者技术和水平有限 如果文中出现错误 希望大家能指正 欢迎各位佬关注 昨天接到一个需
  • C++之继承

    目录 继承的概念及定义 继承的概念 继承定义 定义格式 继承方式 继承基类成员访问方式的变化 基类和派生类对象赋值转换 切片 切割 继承中的作用域 派生类的默认成员函数 构造函数和析构函数 拷贝构造函数和赋值重载 继承和友元 继承与静态成员
  • 【C++】在子类中怎么调用父类的方法

    2023年8月31日 周四上午 目录 使用父类作用域运算符 子类没有重写父类方法时 子类重写了父类方法时 使用this指针调用 子类没有重写父类方法时 在C 中 子类可以以以下几种方式调用父类的方法 使用父类作用域运算符 这种方法既可以在子
  • 谷歌浏览器启动后,图标变成空白解决办法

    谷歌浏览器启动后 图标变成空白 如下图 解决方法 新建一个文本文档 把如下代码复制进去 并保存 修改这个文本文档的后缀名改为 bat 点击运行即可 taskkill f im explorer exeattrib h i userprofi

随机推荐

  • 搭建SSM框架

    项目结构 1 SSM框架依赖
  • java+selenium打开浏览器实现后台静默运行

    简介 java selenium搭建无界面浏览器 PhantomJS是一个基于Webkit的 无界面 headless 浏览器 它会把网站加载到内存并执行页面上的JavaScript 因为不会展示图形界面 所以运行起来比完整的浏览器更高效
  • 计算机子网掩码作用,什么是子网掩码 子网掩码的作用是什么?

    网络工作人员经常需要与ip和子网掩码等打交道 相信绝大数的朋友都知道IP的意思 但是还不理解子网掩码的意思 下面装机之家小编来为大家介绍下关于子网掩码的相关知识 希望能够对网络感兴趣的用户有所学习 什么是子网掩码 子网掩码又叫网络掩码 地址
  • 【最详细】node.js执行nodemon app.js命令出错

    nodemon 无法将 odemon 项识别为 cmdlet 函数 脚本文件或可运行程序的名称 请检查名称的拼写 如果包括路径 请确保路径正确 然后再试一次 所在位置 行 1 字符 1 odemon 无法将 nodemon 项识别为 cmd
  • 自定义docker nginx镜像无容器日志输出

    刚好自己因为工作环境需要自己定制一个nginx镜像 生成之后 发现容器没有相关nginx日志输出 FROM env centos latest COPY nginx repo etc yum repos d 注意 日志要重定向输出到stdo
  • UVM序列篇之二:sequence和item(上)

    无论是自驾item 穿过sequencer交通站 通往终点driver 还是坐上sequence的大巴 一路沿途观光 最终跟随导游停靠到风景点driver 在介绍如何驾驶item和sequence 遵守什么交规 最终可以有序地穿过seque
  • 存储器地址的分段表示及物理地址的计算

    8086 8088 cpu 物理地址需要20位寄存器来存储 但是其内部寄存器都是16位的 不能满足1M字节的寻址要求 为此 引入了 段 的概念 将存储区分成若干段 每段最多为2 16 64K 字节 一个存储单元的物理地址由段基址和偏移地址两
  • 记录解决java.io.IOException: Server returned HTTP response code: 500 for URL:xxxxxxxx

    踩坑经历 因为项目需要去对接别的接口 使用URLConnection POST请求https接口 发送json数组时遇到java io IOException Server returned HTTP response code 500 f
  • 【数据结构】——单链表超详细介绍(独家介绍,小白必看!!!)

    被滑走别滑走 我这一万字的文章 写的真的很痛苦的 希望能得到一点点支持 重点内容和易错点都用彩笔标注了 干货满满 耐心看完 我真的真的有在认真更新o o 上一篇文章介绍完顺序表后 我们就要开始学习链表了 链表的种类有很多 比如说单链表 双向
  • VS2022安装教程和使用说明来了

    我看很多小伙伴已经开始迫不及待的安装VS2022了 虽然我也安装了VS2022 但是我依旧使用VS2019 因为我觉得适合我的才是最好的 并非是最新的 所以大家在使用的时候 根据实际需求选择开发工具 不要一味追求最新 要考虑是否符合你当下的
  • 解决Android8.0中透明Activity锁定方向崩溃问题

    该问题为 Android 8 0 系统 bug 在 8 0 手机上 当应用 targetSdkVersion gt 26 时 透明背景的 Activity 如果锁定了屏幕方向 打开该 Activity 就会触发必现的崩溃 触发具体条件为 A
  • Pandas 实现循环的三大利器

    1 概述 在实际工作中 基于 pandas进行数据处理的时候 经常会对数据框中的单行 多行 列也适用 甚至是整个数据进行某种相同方式的处理 比如将数据中的 sex字段将男替换成1 女替换成0 其中 for循环是一种简单 直接的方式 但运行效
  • 2020年Java面试攻略,跳槽、面试So easy

    点关注 不迷路 持续更新Java相关技术及资讯 前言 现在是2020年01月03日 相信现在有很人已经在准备面试了 我们今天就来唠唠面试 大多数人可能面试前没准备 或准备方法不得当 要知道 我们平时干活更偏重于业务 不可能大量接触到算法 数
  • 什么是动态住宅代理?

    随着网络的迅速发展 许多人对代理IP已经有了比较深刻的认识 并且广泛地运用到了各自的业务中 尤其在跨境的相关业务中表现尤其卓越 对于代理IP的类别 也需要根据自己的业务类型具体选择最合适的 那么今天就给大家具体介绍动态住宅IP代理这一类型
  • 使用jquery ui做弹框+使用$.get访问servlet并传参

    刚刚接触jquery 很多东西都不是很理解 主要还是停留在copy代码的位置上 现对今天学到的知识总结如下 1 dialog1 代表获取id为dialog1的元素 2 Jquery弹框 这里使用了jquery ui 访问http jquer
  • 【C++】拷贝构造函数详解

    转自 https www cnblogs com alantu2018 p 8459250 html 1 什么是拷贝构造函数 首先对于普通类型的对象来说 它们之间的复制是很简单的 例如 int a 100 int b a 而类对象与普通对象
  • 【微信小程序】一文带你读懂云开发

    前言 云开发 CloudBase 是一个已经存在了很多年的概念 但在过去未能真正成为主流 然而 由于云和软件即服务的宏观趋势的结合 以及技术的进步 如容器技术 Docker 和 Kubernetes 云开发现在有机会成为基于云的应用程序的新
  • 【代码详解】nerf-pytorch代码逐行分析

    目录 前言 run nerf py config parser train create nerf render batchify rays render rays raw2outputs render path run nerf help
  • 20个经典Android游戏源码下载地址(持续更新~)

    给大家推荐几个 我调试过的Android游戏源码吧 每个我都运行了效果不错哦 希望对喜爱Android开发的朋友们有所帮助 希望大家喜欢 1 塔防类游戏源码 保卫萝卜 另类玩法 该游戏是一款国外游戏 和 保卫萝卜 的玩法 规则都很类似 也很
  • Android配置 NDK

    1 安装NDK 相信大家都会 2 将下载的NDK目录添加到环境变量里面去 配置正常如上图 3 创建NDKUtils类 public class NDKUtils public native String invokeCmethod stat