NDK开发简单流程

Android jni开发--NDK环境搭建 谷歌改良了ndk的开发流程,对于Windows环境下NDK的开发,如果使用的NDK是r7之前的版本,必须要安装Cygwin才能使用NDK。而在NDKr7开始,Google的Windows版的NDK提供了一个ndk-build.cmd的脚本,这样,就可以直接利用这个脚本编译,而不需要使用Cygwin了。只需要为Eclipse Android工程添加一个Builders,而为Eclipse配置的buil 阅读详情

我们在安装环境的时候安装了NDK,可以在eclipse下直接生成so文件。NDK的压缩包里面自带了一些sample工程,NDK的文件直接解压到某个目录下即可。

第一次生成so文件的时候,我们先使用NDK的sample下的hello-jni的例子。

1、启动eclipse,通过Create project  from existing source,选择hello-jni的目录,按默认选项创建工程即可;

2、观察hello-jni的工程目录结构,发现根目录下多了一个名叫jni的文件夹,该文件夹下面有两个文件,Android.mk和hello-jni.c。

     Android.mk是用来生成so文件的配置文件,我们来看看里面是什么:

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

LOCAL_MODULE    := hello-jni
LOCAL_SRC_FILES := hello-jni.c

include $(BUILD_SHARED_LIBRARY)

include $(BUILD_SHARED_LIBRARY)表示会生成一个动态链接库,即so文件,生成的库文件名称为lib*.so

LOCAL_MODULE    := hello-jni表示将要生成一个名称为libhello-jni.so的库文件

LOCAL_SRC_FILES := hello-jni.c表示生成库文件的源文件是hello-jni.c

    打开hello-jni.c文件,会看到里面有一个函数:

jstring Java_com_example_hellojni_HelloJni_stringFromJNI( JNIEnv* env, jobject thiz )
{
    return (*env)->NewStringUTF(env, "Hello from JNI !");
}

这个函数从根据什么原则生成的呢?是根据src下的HelloJni.java文件中的函数 public native String  stringFromJNI();生成的。命名规则为:

Java_(固定开头)com_example_hellojni(用"_"连接的包名)_HelloJni(类名)_stringFromJNI(函数名)

    这个函数的生成可以使用javah的命令:用命令行方式进入工程目录的bin\classes目录下,运行javah com.example.hellojni.HelloJni,就会把所有native的函数都按规则生成在一个名为HelloJni.h的头文件里。

3、新建并配置一个新的Builder

    1) 点击Project->Properties->Builders->New,新建立一个Builder。在弹出的对话框上面点击Program,点击OK;

    2) 在弹出的对话框【Edit Configuration】中,配置选项卡【Main】:

               Location中需要填入nkd-build.cmd的路径(NDK安装目录下)。

               WorkingDiretcoty中需要填入HelloJni的工程根目录。

    3) 在【EditConfiguration】中,配置选项卡【Refresh】:

              勾选“Refresh resources upon completion”,

              勾选“The entire workspace”,

              勾选“Recuresively include sub-folders”。

    4)在【EditConfiguration】中,配置选项卡【Build Options】:

             勾选“After a “Clean””,

             勾选“During manual builds”,

             勾选“During auto builds”,

             勾选“Specify working set of relevant resources”。

             点击“Specify Resources…”勾选TestNDK工程的“jni“目录,Finish!

      保存设置,点击OK。

4、生成so文件

     由于我们勾选了“During auto builds”,所以在工程有所改变的时候,so文件便会自动编译,正确生成以后就能在工程目录下发现多了两个文件夹,文件夹libs\armeabi目录下生成了一个叫libhello-jni.so的文件。至此,使用NDK生成so文件的工作就完成了。

5、so文件的调用

      在HelloJni.java文件中有一段代码:

    static {
        System.loadLibrary("hello-jni");
    }

    使用loadLibrary就可以加载该so文件了,加载的时候不需要写libhello-jni.so,只要写hello-jni就可以了。


Android 浅度解析:mk预置AAR、SO文件、APP包和签名 本文介绍在Android系统开发中Android.mk,预置APK和AAR/SO文件,以及指定签名的操作。 阅读详情

相关推荐

LightningChart使用教程:创建 JS 散点图

这是对 LightningChart JS XY 图表一些有趣功能的快速技术研究,以及如何使用 LightningChart JS 创建嵌入式散点聊天和添加自定义交互。 此图表将可视化一个 XY 坐标列表以及一个额外的自定义属性,它只是一段文本。这些自定义属性将与 UI 文本元素一起显示,这些元素将与用户的鼠标移动交互。 我们将介绍的突出功能是: 什么是散点图? 如何创建散点图? 如何将自定义属性附加到数据点。 如何创建交互式 UI 文本元素。 最终结果 什么是散点图? 散点图或散点图是..

Augenstern__zyx的博客 1370

android — NDK生成so文件

我们在安装环境的时候安装了NDK,可以在eclipse下直接生成so文件。NDK的压缩包里面自带了一些sample工程,NDK的文件直接解压到某个目录下即可。 第一次生成so文件的时候,我们先使用NDK的sample下的hello-jni的例子。 1、启动eclipse,通过Create project  from existing source,选择hello-jni的目录,按默认选

lizhijian2010的专栏 542

计组实验4 控制冒险与分支预测

目录前言实验内容背景知识分支预测技术⭐阻塞周期计算方法不开启 BTB开启 BTBpart 1 矩阵乘法与优化未开启 BTB 的分析开启 BTB 的分析part 2 设计代码使 BTB 无效part 3 循环展开优化矩阵乘法未开启 BTB开启 BTB结束语结论 前言 上一篇博客:计组实验3 mips冒险之流水线冒险 摸了半个月了。。。咕咕咕 今天来写计组实验 4 这个实验非常简单,就是有点难。 这个实验比较容易算错,或者是被模拟器出人意料的结果搞的神神叨叨的,所以今天来记录并且详细分析该实验。 注:请务必阅

AKGWSB 's blog 5668

Android Studio 生成.so文件及 Android.mk文件解析

在NDK开发中生成.SO文件在app路径的build.gradle 的defaultconfig中添加ndk{ moduleName "MyJni" //设置库(so)文件名称 ldLibs "log", "z", "m" //添加系统库 abiFilters "armeabi", "armeabi-v7a", "x86" //生成3中类的.so文件 }

lilie008的专栏 5537

轻量级替代方案:用AIFlowy + Ollama在本地快速搭建一个可用的AI智能体平台

本文介绍了如何使用AIFlowy和Ollama在本地快速搭建轻量级AI智能体平台,涵盖从环境准备到智能体集成的全流程。通过简化部署步骤和优化性能,15分钟内即可完成搭建,适用于原型验证和小团队协作,显著提升开发效率。

weixin_29207533的博客 219

用74LS194和555定时器DIY流水灯:一个经典的数字电路课程设计复盘(附Multisim仿真文件)

本文详细介绍了使用74LS194移位寄存器和555定时器搭建八路彩灯控制器的完整过程,包括硬件选型、电路设计、调试技巧及常见问题解决方案。作为经典的数字电路课程设计,该项目涵盖了EDA工具应用、电路原理图设计和Multisim仿真等核心技能,适合电子工程学习者实践参考。

weixin_29185199的博客 426

android 关于mk如何引用其它so库

通常,开发android的软件,常常需要编译so库,然编译的这个so库,需要调用多个其它的so库。这里主要记录一下,编译so库时,调用其它so库的mk,是怎么写的。 这里讲的示例:需要编译出libtest3.so,它需要调用libtest1.so,libtest2.so 1. 在android 源码下编译 LOCAL_PATH:= $(call my-dir) include $(CLEA

mortree 8008

Node框架之NestJS入门学习

文章主要分为三部分:1 NestJS 与Egg对比2 NestJS 基础知识介绍3 使用NestJS快速搭建应用,实现CURD操作e-link文档Egg官网NestJS 官网NestJS中文文档(非官方)

十九万里的博客 4742

Android.mk 编译so动态库以及如何使用so动态库

Android 使用的 Linker 和传统 Linux 使用的 linker(ld.so,ld-linux.so.2,ld-linux.so.3)不同 模板: hardware/ril/reference-ril/Android.mk 一、编写动态库程序 1、创建my_math.h头文件,里面定义两个函数 #ifndef __MY_MATH_H__ #define __MY_MATH_H__ int my_add(int a, int b); int my_sub(int a, int b); #en

wq892373445的博客 5850

Vue3 - 详解实现网站接入微信扫码登录功能,微信授权生成登录二维码用户用手机扫描二维码登陆,微信扫描二维码登录详细流程及示例代码,支持弹框式、浏览器单独新开页显示,最新vue集成微信扫码授权登录!

vue3,nuxt3,PC网站,网页,微信扫码登录,微信登陆,vue3微信扫码登录,获取个人信息,扫码登录后如何获取用户手机号,微信扫码授权登录,vue3详细实现微信扫一扫登陆,pc网页微信登录,vue3集成微信扫码登录,详细流程和示例源码,第三方扫码登录,vue3微信扫码登录怎么新开一页,跳页显示二维码,内嵌登录二维码,iframe,iframe新页面弹出,弹出一个小窗口显示登录二维码,登录报错,微信扫码没反应,解决手机点登录报错没反应,官方文档,手机扫描微信二维码登录网站,最好用的插件,vue-wxlo

🏆 前端领域优质创作者 1万+

PyQt5简介和安装

在initUI方法中,设置了窗口的标题和大小,并创建了一个按钮。PyQt5是一个功能强大的Python界面开发框架,可以轻松创建跨平台的图形用户界面应用程序。本文介绍了PyQt5的简介和安装方法,并提供了一个简单的示例应用程序来演示PyQt5的基本用法。PyQt5是一个功能强大的Python界面开发框架,它提供了丰富的工具和组件,用于创建跨平台的图形用户界面(GUI)应用程序。信号是控件发出的事件,槽是与之关联的处理函数。接下来,我们将编写一个简单的PyQt5应用程序,以演示PyQt5的基本用法。

XdKwargs的博客 222

mac下androidstudio下ndk开发简单操作流程

原文链接:http://www.shangxueba.com/jingyan/2901837.html   说到NDK开发,其实是为了有些时候为了项目需求需要调用底层的一些C/C++的一些东西;另外就是为了效率更加高些。     但是很多时候能不用就不用;这个是啥原因?个人感觉有些时候是觉得麻烦,首先要配置 NDK 还要 下载 Cygwin ,配置 Cygwin ,然后需要编译生成,哎

程序员的良师益友 994

【AUTOSAR-Nm】-2.2-通过CAN/Lin...信号报告Nm状态机的跳转

如何通过Can/Lin/Fr/Udp/J1939信号,获取每个通道对应状态机的跳转信息:“前一次状态”和“当前状态”。

「汽车电子助手」的博客 2464

Android NDK开发

NDK( Native Development Kit )是Google开发的一套开发和编译工具集, 主要用于Android的JNI开发。那JNI是什么呢?通俗来说JNI是一套编程接口, 用来实现Java代码与本地的C/C++代码进行交互。NDK开发的优点是 1、运行效率高 2、利于充分发挥软硬件优势

你就是一道风景 599

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

android studio ndk 语法,AndroidStudio下NDK开发流程

以前做过eclipse下的NDK的开发,随着google推出了android studio,现在android开发越来越遗弃eclipse,所以就想对android studio下NDK开发有所了解。NdkDemo是一个简单的通过native调用C返回一串字符的demo,主要是想通过这个小demo了解AS下的NDK开发(实践中检验可行性)。1.配置NDK环境、新建项目(1). 通过Android...

weixin_39968852的博客 158

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

用java开发一个简单的安卓程序,Android NDK开发简单程序分享(Hello Word!)

在之前的博客中已经为大家介绍了,如何在win环境下配置DNK程序,本篇我将带大家实现一个简单的Hello jni程序,让大家真正感受一下NDK开发的魅力。这里我们选择使用C+JAVA开发Android程序,首先你必须了解C语言、JAVA语言以及Linux操作系统,这样可以帮助你开始上手,当然不是说你必须是大牛才能进行NDK开发,下面我们来一起实现一个简单的NDK程序。第一步,创建Android工程...

weixin_35044595的博客 2283

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Eclipse下NDK开发

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

_檬小呆的博客 453

Ubuntu下搭建android NDK开发环境

本文转自:http://blog.youkuaiyun.com/zhanghw0917/archive/2010/12/08/6063763.aspx 今天开始学习NDK ,记录下环境配置的过程。前提是已经配置了sdk和ADT NDK R4与R1~R3的使用是不同的。 R1~R3 是要执行一个/build/host-setup.sh的文件的,在R4中没了。 当然这个是在ubuntu下安装的你

HappyDelano的专栏 3187

Android NDK开发中的 Hello World实例

前言(废话,可以略过):这两天接触了Android NDK(Native Development Kit)开发,学习的时候看教程中使用的是eclipse,但是我觉得有必要弄清楚在Android Studio上的开发过程,毕竟Android Studio才是Android开发的趋势所在。所以我上网查阅了一些资料,特意在此总结了一下在Android Studio中进行NDK开发的步骤,分享给各位初学者,

sinat_19385391的博客 7018

史上最易懂的Android jni开发资料--NDK环境搭建

史上最易懂的Android jni开发资料–NDK环境搭建 谷歌改良了ndk的开发流程,对于Windows环境下NDK的开发,如果使用的NDK是r7之前的版本,必须要安装Cygwin才能使用NDK。而在NDKr7开始,Google的Windows版的NDK提供了一个ndk-build.cmd的脚本,这样,就可以直接利用这个脚本编译,而不需要使用Cygwin了。只需要为Eclipse Android工

NullObject 703

Android NDK系列(1) --- 配置及简单使用

我在博客上发表一些我的NDK学习心得,希望对大家能有帮助。 这一篇我们讲述NDK配置和简单使用1、介绍先下载相应ndk版本 下载连接(需要翻墙):https://developer.android.com/ndk/downloads/index.html解压之后目录如下: 其中ndk-build是我们用来编译c或者c++的。 当然,也需要把该目录加入到环境变量中。2、配置在Ecli

qiuyu93422的博客 881

NDK开发基本入门了解

一、前言 ● NDK Native Development Kit(NDK)是一系列工具的集合。它提供了一系列的工具,帮助开发者快速开发C/C++的动态库,并能自动将so和java一起打包成apk。 ● JNI Java Native Interface(JNI)标准是java平台的一部分,JNI是Java语言提供的Java和C/C++相互沟通的机制,Java可以通过JNI

潇湘夜雨 749

NDK基本使用步骤总结

我们的Android项目一直在使用不少动态库,但是平时我并没有

lihei12345的专栏 1096

NDK环境搭建

转博客地址:http://blog.youkuaiyun.com/true100/article/details/51554309 Android NDK 是指Android Native Development Kit,也被Google称为“NDK”。Android程序运行在Dalvik虚拟机中, NDK允许用户使用类似C / C++之类的原生代码语言执行部分程序。包括了: 从C / C

微笑-向前行 1万+

android ndk编写

1:下载ndk工具" 网上有很多,比如android-ndk-r8d,解压到本地,如 D:\android-ndk-r8d ,里面有ndk-build工具如下: 里面自带了一些例子,如hello_jni等. 2:自己可以创建一个android工程,具体流程省略. 在工程下创建jni目录,分别创建.c和mk文件 注意mk的格式: LOCAL_PATH := $(call my-d

Listron的专栏 574
下一篇: Android开发中,那些让你觉得相见恨晚的方法、类或接口
java_for
博客等级 码龄12年 6粉丝 9原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值