`

android studio下第一个ndk程序

 
阅读更多

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));

至此结束

 

 

 

 

  • 大小: 3.3 KB
分享到:
评论

相关推荐

    Android jni ndk 工程

    Android studio 编译第一个NDK程序的详细教程的代码,附上Android studio编写第一个NDK工程的过程详解文章的链接https://blog.csdn.net/weixin_37639900/article/details/89680670

    AndroidStudio-NDK开发 编译c代码提供so库和jar包 另外一个app调用,实例源码

    AndroidStudio-NDK开发 编译c代码提供so库和jar包 另外一个app调用,实例源码

    Opengl ES 1.x NDK实例开发之七:旋转的纹理立方体

    本章在第六章(Opengl ES 1.x NDK实例开发之六:纹理贴图)的基础上绘制一个旋转的纹理立方体,原理和纹理贴图一样,需要注意的是定好正方体的顶点数组

    NDK第一个DemoCmakeList

    Android Studio编译工具下,NDK项目第一个实现。 添加新的实现方法,串联Android 和 C代码使用

    AndroidStudio 3.6.3,配置NDK

    第一步:打开Androidstudio后,找到如下图的tab,这个也就是下载sdk的地方 点击之后,就会出现下图中的弹窗: 第二步:选择SDK Tools 第三步:勾选下图中方框中的三个选项(为什么会选择LLDB和CMake呢,下面给解释...

    android串口开发入门之搭建ndk开发环境及第一个jni调用程序

    所以觉得自己来一篇,本文将详细介绍关于android搭建ndk开发环境及第一个jni调用程序的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。 一:ndk环境搭建 1:开发环境 我使用的是...

    Android NDK生成及连接静态库与动态库的方法

    对于Android应用开发,大部分情况下我们使用Java就能完整地实现一个应用。但是在某些情况下,我们...在Android Studio的一个项目工程下,会有一个app文件夹,这个文件夹主要存放我们编写应用的所有代码以及相关其它资源

    Android studio Jni调用第三方库(CMakelist)

    一个AndroidStudio项目,通过CMakelist生成jni库文件(so),jni库文件通过头文件调用c编写的第三方库(so),文:https://blog.csdn.net/qq_35532751/article/details/78667984

    Android程序设计教程 (丁山 编) pdf

    《Android程序设计教程》介绍基于Android系统的程序设计技术,内容涵盖了Android相关领域,本书大致可以分成两个部分,第一部分为基础篇,主要介绍Android操作系统概况、Android生命周期与组件通信、Android用户界面...

    Android开发实战:从学习到产品.epub

    提供App完整项目案例,通过阅读《Android开发实战:从学习到产品(适用于Android 6/7与Android Studio 2.x)》,读者能够掌握Android应用开发所需要的各种技术和从0到1开发一款自己的App产品。 《Android开发实战:...

    Android studio 下JNI编程实例并生成so库的实现代码

    最近需要使用JNI编程,学了下JNI,并且在Android Studio下实现了一个小demo。这期间有一些坑,还好都解决了,想分享出来,希望大家少走弯路。本文中采用的平台是Windows,NDK环境已经搭建好,这方面资料很多,大家...

    OpenCV-NDK:在Android NDK中使用OpenCV示例

    (第二个是孩子) 在Android Studio中单击“打开项目”,然后找到保存在其中的文件夹 将的OpenCV Android SDK库路径更改为my/path/to/OpenCV-android-sdk/sdk/native/jni/OpenCV.mk 将中的所有文件移动到您的设备 ...

    Android Studio 3.6 正式发布

    经历众多的测试版本后,谷歌终于发布了Android Studio 3.6的正式版本,这是Project Marble结束之后的第一个版本,增加了一些小功能,完善了现有的功能,解决了功能上的问题,改善了性能。可以通过下载地址...

    java前端源码下载-opencv_native_androidstudio:一个带有原生Opencv的androidstudio项目

    此应用程序是一个带有原生 OpenCV 的示例 Android Studio 项目。 它获取相机帧,使用其灰色矩阵引用作为参数进行 JNI 调用,从 C++ 方法向图像添加一些随机噪声,并渲染生成的帧。 它适用于 Android Studio 3+ 最后...

    Eclipse NDK迁移到Android Studio的方法示例

    最近看一个NDK项目,因为源码使用Eclipse IDE写的,想把代码导入Android Studio使用,毕竟好用很多,使用AS导入后,第一个问题就是编码问题,项目之前竟然使用的是GBK编码。首先就是改变编码问题。我先在设置中将...

    Android初涉JNI,从零打造你的第一个demo

    Android初涉JNI,从零打造你的第一个demo

    JNI文档资料源码_2020_02_14_3

    【Android NDK 开发】Android.mk 配置静态库 ( Android Studio 配置静态库 | 配置动态库与静态库区别 | 动态库与静态库打包对比 ) 博客地址 : https://hanshuliang.blog.csdn.net/article/details/104322381 I...

    libra:这是一个超级项目,包含一些在Android平台上开发的图像处理项目

    c ++代码和opencv的java SDK结合使用时,NDK将自动删除libs文件夹中的第三方库,此问题似乎在Windows版本的opencv4android中不会发生,但在linux / unix版本的opencv4android中会发生,并且丑虫使我困惑了将近一天。...

    Android项目源码开源AnyRTC-RTMP全平台直播源码.zip

    本项目是一个基于安卓的RTMP 推流器,RTMP播放器(秒开),还有跨平台(Win,IOS,Android)开源代码。 项目特点 1,商业级开源代码,高效稳定 2,超小内存占有率,移动直播针对性极致优化,代码冗余率极低 3,...

    Xamrin Android开发实战 源代码

    第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 创建项目...

Global site tag (gtag.js) - Google Analytics