AndroidStudio配置NDK/JNI,完成so动态链接库的调用

写在前面

在我们日常开发中,经常会用到一些复杂的加密的算法以保证通信的安全。通常这些算法会用C或C++实现后打包成.so动态链接库并向Java层开发接口方便调用。
本文主要叙述在Android开发过程中如何配置环境,以及如何利用JNI技术完成动态链接库的调用。
大神请无视。

以AndroidStudio为例

  • 1 . 首先去下载NDK包,下载路径如下可根据自己系统定点下载

    https://developer.android.google.cn/ndk/downloads/index.html

    这里写图片描述

  • 2 . 创建一个安卓工程,初始化完成以后,右键项目->Open Module Settings

    这里写图片描述

    选择你下载的ndk存放路径

    选择你下载的ndk存放路径

  • 3 .创建一个jniTest类,写好navite方法,点击Build->Make Project打包文件

  • 4 . 点击底下的Terminal窗口 cd 到当前项目目录
    例:当前目录为JniDemo
 C:\Users\bilibili\Desktop\JniDemo>
 cd C:\Users\bilibili\Desktop\JniDemo\app\build\intermediates\classes\debug

调用命令javah -jni 包名.类名生成头文件(文件生成在以上cd定位到的目录)

  • 5 .在main>src下创建文件夹jni(new-Folder-jni Folder)进目录app>build>intermediates>classes>debug旗下找到头文件复制到jni文件夹

  • 6 . jni目录下生c文件与.h文件重名c文件编写如下:

JNIEXPORT jstring JNICALL Java_com_jni_jnidemo_JniText_get_11111CLang_11String(JNIEnv *env, jobject obj)  
{  
  return (*env)->NewStringUTF(env,"This just a test for Android Studio NDK JNI developer!");  
}  
  • 7 . 在app的build.gradle的defaultConfig标签下添加如下标签:
ndk{  
       moduleName "jnitext"         //生成的so名字,根据你自己的so定义  
       abiFilters "armeabi", "armeabi-v7a", "x86"  //输出指定三种abi体系结构下的so库。目前可有可无。  
    }  
  • 8 . 在工程的gradle.properties添加如下代码:
android.useDeprecatedNdk=true 
  • 9 . 点击Build->Make Project打包文件,去\app\build\ndk\debug\lib\目录下拷贝编译好的so文件复制到app\libs目录下即可

  • 10 .调用如下:

static {
    System.loadLibrary("jnitext");
}
public native String get_1111CLang_1String();

如果问题欢迎留言指点

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Android Studio中配置NDK,需要遵循以下步骤: 1. 安装NDK - 下载并安装最新版的NDK。可以从http://developer.android.com/ndk/downloads/index.html下载最新版的NDK。 2. 配置NDK路径 - 打开Android Studio,选择“File”>“Project Structure”,然后在左侧窗格中选择“SDK Location”选项卡。在右侧窗格中,找到“Android NDK location”字段并输入NDK的安装路径。 3. 创建jni目录 - 在项目根目录中创建一个名为“jni”的目录。 4. 创建C/C++源码 - 在“jni”目录下创建一个名为“hello.c”的文件,并输入以下代码: ```c #include <jni.h> #include <string.h> jstring Java_com_example_hellojni_HelloJni_stringFromJNI(JNIEnv* env, jobject thiz) { return (*env)->NewStringUTF(env, "Hello from JNI !"); } ``` 这段代码将在Java代码中调用,并返回一条字符串。 5. 创建Android.mk文件 - 在“jni”目录下创建一个名为“Android.mk”的文件,并输入以下代码: ```makefile LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := hello-jni LOCAL_SRC_FILES := hello.c include $(BUILD_SHARED_LIBRARY) ``` 这个Android.mk文件告诉NDK如何构建本地。 6. 创建Application.mk文件 - 在“jni”目录下创建一个名为“Application.mk”的文件,并输入以下代码: ```makefile APP_ABI := all ``` 这个Application.mk文件告诉NDK在所有平台上构建本地。 7. 构建本地 - 打开终端并导航到项目根目录。输入以下命令: ```bash $ cd /path/to/project $ export PATH=$PATH:/path/to/ndk $ ndk-build ``` 这将构建本地。 8. 在Java中调用本地 - 在Java代码中调用本地。例如,创建一个名为“HelloJni”的类,并在其中添加以下代码: ```java static { System.loadLibrary("hello-jni"); } public native String stringFromJNI(); ``` 这将在Java中加载本地,并调用“stringFromJNI”方法。 9. 运行 - 运行应用程序并确保可以看到来自本地的消息。 这就是如何在Android Studio中配置NDK的步骤。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值