1.安装ndk
下载一个android-ndk-r10e-windows-x86.exe文件,运行后会在选定目录下产生一个文件夹,就是ndk所在目录了。
2.配置ndk
file>project structure>SDk location>Android ndk location>选择ndk目录即可。这样之后在local.properties文件中可以看到ndk目录,当然可以直接在这个文件下设置目录,效果是一样的。
3.编写jni的java类
在src目录下新建jni目录,jni下新建文件MathKit.java
public class MathKit { public static native int square(int num); static { System.loadLibrary("JniDemo"); } }
这里有必要解释一下System.loadLibrary("JniDemo");,
需要在defaultConfig中添加如下代码:
ndk{ moduleName "JniDemo" }
目的是指定生成的so文件(C库)的名称,然后在java文件中加载这个so文件(C库)。
so文件位置如下:E:\Android\workSpace\ListenForUninstall\app\build\intermediates\ndk\debug\lib\arm64-v8a\libJniDemo.so
,切换到project视图查看。
同时记得在工程目录下的gradle.properties文件中写入下面这行:
android.useDeprecatedNdk=true
4.生成.h文件
cmd下运行如下命令 javah -jni (加上java类的目录)
这样就会生成头文件。
5.在main目录新建jni目录,把产生的头文件拷贝进去
6.在main/jni目录下新建对应的cpp文件(文件名和头文件一样),实现java类中定义的square函数
#include <jni_Mathkit.h> #include "../../../../../../../SdkandNdk/android-ndk-r10e/platforms/android-21/arch-arm/usr/include/jni.h" JNIEXPORT jint JNICALL Java_jni_MathKit_square (JNIEnv *env, jclass cls, jint num) { return num*num; }
这个cpp文件有必要解释一下内容,这个函数返回类型是jint(整形类型),参数是num,计算num的平方并返回。方法名称格式如下:
Java_包_类_函数名(注意包的.号改成-下划线,比如本例中jni.MathKit要写成jni_MathKit)。
8.在activity中调用square函数。
Log.i("", ""+MathKit.square(2));
至此结束
相关推荐
Android studio 编译第一个NDK程序的详细教程的代码,附上Android studio编写第一个NDK工程的过程详解文章的链接https://blog.csdn.net/weixin_37639900/article/details/89680670
AndroidStudio-NDK开发 编译c代码提供so库和jar包 另外一个app调用,实例源码
本章在第六章(Opengl ES 1.x NDK实例开发之六:纹理贴图)的基础上绘制一个旋转的纹理立方体,原理和纹理贴图一样,需要注意的是定好正方体的顶点数组
Android Studio编译工具下,NDK项目第一个实现。 添加新的实现方法,串联Android 和 C代码使用
第一步:打开Androidstudio后,找到如下图的tab,这个也就是下载sdk的地方 点击之后,就会出现下图中的弹窗: 第二步:选择SDK Tools 第三步:勾选下图中方框中的三个选项(为什么会选择LLDB和CMake呢,下面给解释...
所以觉得自己来一篇,本文将详细介绍关于android搭建ndk开发环境及第一个jni调用程序的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。 一:ndk环境搭建 1:开发环境 我使用的是...
对于Android应用开发,大部分情况下我们使用Java就能完整地实现一个应用。但是在某些情况下,我们...在Android Studio的一个项目工程下,会有一个app文件夹,这个文件夹主要存放我们编写应用的所有代码以及相关其它资源
一个AndroidStudio项目,通过CMakelist生成jni库文件(so),jni库文件通过头文件调用c编写的第三方库(so),文:https://blog.csdn.net/qq_35532751/article/details/78667984
《Android程序设计教程》介绍基于Android系统的程序设计技术,内容涵盖了Android相关领域,本书大致可以分成两个部分,第一部分为基础篇,主要介绍Android操作系统概况、Android生命周期与组件通信、Android用户界面...
提供App完整项目案例,通过阅读《Android开发实战:从学习到产品(适用于Android 6/7与Android Studio 2.x)》,读者能够掌握Android应用开发所需要的各种技术和从0到1开发一款自己的App产品。 《Android开发实战:...
最近需要使用JNI编程,学了下JNI,并且在Android Studio下实现了一个小demo。这期间有一些坑,还好都解决了,想分享出来,希望大家少走弯路。本文中采用的平台是Windows,NDK环境已经搭建好,这方面资料很多,大家...
(第二个是孩子) 在Android Studio中单击“打开项目”,然后找到保存在其中的文件夹 将的OpenCV Android SDK库路径更改为my/path/to/OpenCV-android-sdk/sdk/native/jni/OpenCV.mk 将中的所有文件移动到您的设备 ...
经历众多的测试版本后,谷歌终于发布了Android Studio 3.6的正式版本,这是Project Marble结束之后的第一个版本,增加了一些小功能,完善了现有的功能,解决了功能上的问题,改善了性能。可以通过下载地址...
此应用程序是一个带有原生 OpenCV 的示例 Android Studio 项目。 它获取相机帧,使用其灰色矩阵引用作为参数进行 JNI 调用,从 C++ 方法向图像添加一些随机噪声,并渲染生成的帧。 它适用于 Android Studio 3+ 最后...
最近看一个NDK项目,因为源码使用Eclipse IDE写的,想把代码导入Android Studio使用,毕竟好用很多,使用AS导入后,第一个问题就是编码问题,项目之前竟然使用的是GBK编码。首先就是改变编码问题。我先在设置中将...
Android初涉JNI,从零打造你的第一个demo
【Android NDK 开发】Android.mk 配置静态库 ( Android Studio 配置静态库 | 配置动态库与静态库区别 | 动态库与静态库打包对比 ) 博客地址 : https://hanshuliang.blog.csdn.net/article/details/104322381 I...
c ++代码和opencv的java SDK结合使用时,NDK将自动删除libs文件夹中的第三方库,此问题似乎在Windows版本的opencv4android中不会发生,但在linux / unix版本的opencv4android中会发生,并且丑虫使我困惑了将近一天。...
本项目是一个基于安卓的RTMP 推流器,RTMP播放器(秒开),还有跨平台(Win,IOS,Android)开源代码。 项目特点 1,商业级开源代码,高效稳定 2,超小内存占有率,移动直播针对性极致优化,代码冗余率极低 3,...
第2章 编写第一个Xamarin.Forms应用程序 42 2.1 首次启动Visual Studio 2015 42 2.2 更新Xamarin 44 2.2.1 更新Windows版的Xamarin开发工具 44 2.2.2 更新OS X版的Xamarin开发工具Xamarin.iOS 45 2.3 创建项目...