这一篇要把我们之前做的库和接口通过jni在android studio中给java调用。接口主要实现了字符串“123456”的MD5输出。

源码文件在https://download.csdn.net/download/andylauren/12295062

github放在https://github.com/RTplay/android-ndk-sample

1.创建工程

将openssl和mylib-sample的库都放到生成的文件夹中
arm64-v8a  armeabi-v7a  x86  x86_64
每个文件夹都应该有如下文件libahPlayer.so、libcrypto.so、libssl.so

注意这里的libcrypto.so、libssl.so不是软连接,而是真实的库文件。

然后打开androidstudio创建native c++工程
将上面四个文件夹放到/MyApplicationC/app/src/main/cpp/libs下

2.设置ndk路径

如果你的androidstudio已经设置了ndk可以跳过这步
如果没有设置过,工程创建时会提示

A problem occurred configuring project ':app'.> NDK not configured. Download it with SDK manager. Preferred NDK version is '20.0.5594570'. Log: /home/neusoft/AndroidStudioProjects/MyApplicationC2/app/.cxx/ndk_locator_record.json

在Project Structure
中SDK Location的Android NDK location选择下载或者配置为自己下载的ndk路径。
/home/neusoft/Android/Sdk/Sdk/ndk/21.0.6113669

设置成功后工程会CONFIGURE SUCCESSFUL

3.修改build.gradle(Module:app)

在externalNativeBuild下添加

sourceSets {    main {        jniLibs.srcDirs = ['src/main/cpp/libs']    }}

4.修改cpp代码

首先将头文件拷贝到/app/src/main/cpp目录下
common.h openssl

修改native-lib.cpp引入头文件并实现jni接口

#include #include #include "common.h"extern "C" JNIEXPORT jstring JNICALLJava_com_example_myapplicationc2_MainActivity_stringFromJNI(        JNIEnv* env,        jobject /* this */) {    char aaa[33];    return env->NewStringUTF(MD5_Digest((unsigned char *) "123456", aaa));}

修改cmakelist.txt
添加头文件路径include_directories(.)
添加动态库路径link_directories(${CMAKE_SOURCE_DIR}/libs/${ANDROID_ABI})
在依赖中添加动态库依赖
crypto libmylib-sample ssl

在MainActivity.java代码中添加动态库加载

    static {        System.loadLibrary("crypto");        System.loadLibrary("ssl");        System.loadLibrary("mylib-sample");        System.loadLibrary("native-lib");    }

至此就可以运行了。
 

 

更多相关文章

  1. 安卓android模拟器使用命令行
  2. 【Android开发】完善搜索功能-添加最近查询字段
  3. Android(安卓)系统开发生成签名供 Android(安卓)Studio 使用
  4. Android之如何解决右上角不显示3个点的菜单
  5. 安卓按钮有按下去的效果的实现方法
  6. Android多渠道打包修改资源文件
  7. Android(安卓)Studio JNI
  8. linux下nessus的安装和使用【原创】
  9. attrs.xml文件中属性类型format值的格式

随机推荐

  1. Android(安卓)Studio连接STF失效
  2. android获取textview的行数
  3. Android(安卓)AES加密算法及事实上现
  4. Android禁止EditText自动弹出软键盘的方
  5. Android各类资源收集(持续更新中...)
  6. Android应用程序请求SurfaceFlinger服务
  7. 带着问题学习 Android(安卓)Handler 消息
  8. android弹出对话框
  9. Android下Bonjour服务的使用
  10. android基础入门(一)――搭建android开发