美文网首页LocalServer
使用openssl库文件进行android jni 开发

使用openssl库文件进行android jni 开发

作者: 75c38b1db5c6 | 来源:发表于2018-06-05 15:40 被阅读682次

    上一篇文章讲了如何在windows下使用androidstudio编译openssl库文件给我们使用。

    本片文章教大家如何使用编好的openssl库进行调用。

    首先大家来了解一下jni开发的两种方式:

         1 ndk-build 该方式就是在main包下建立jni文件夹,生成的cpp文件就要放在jni里面,然后定义android.mk和application.mk两个文件,具体的请参考其他文章。变量定义好后,进入terminal 下进入jni文件夹,通过命令ndk-build即可编译。生成出来的so文件要放回本项目,放在jniLibs下面,java文件会自动调用。

        2 cmake方式,该方式操作比较简单,现在androidstudio3.0默认的就是这种方式进行编译,只需要加一个cmakelists文件,在gradle里面配置一下即可。最后gradle 进行sync一下就能够直接运行。

    本片文章采用第二种方式进行编译。由于我不会c++公司项目也不能外放,所以只用一个例子进行说明。c++里有区别,其他情况都一样的,

    好的,现在开始:

    首先新建一个项目,勾选下方的include C++ Support,后边的都默认即可。

    这是一个生成出来的默认的项目

    但是我们不用这个,在firstcpp下新建一个NativeHelper类,如下

    上边的名字往后看,在cmakelist文件里进行指定,没事,爆红也不要管他。这个时候rebuild项目

    依次去build下找到生成的class文件

    进入terminal下,进入debug文件下输入命令javah -jni wangmian.www.firstcpp.NativeHelper

    生成好后会在debug下发现

    头文件,这时候把头文件相应的拷贝到cpp下即可,同时建立相应的c文件。

    有人问c文件怎么写,基本就是这样,参数会有一些变化,多百度,照猫画虎,学习一下基本的写法。

    好了,接下来该配置openssl了。把上篇文章中的openssl 下有头文件的整体复制过来放在cpp文件夹下,如图

    在main文件夹下建立jniLibs文件夹,把上篇文章生成出来的so文件整体拿过来放在jniLibs下。重点是libssl和libcrypto两个so文件。

    接下来配置CMakeLists.txt文件

    第一个红框是我们将要生成so文件的名字,之后的调用也要用这个名字,自己定义即可,

    第二个红框是我们要进行编译的cpp文件,有几个写几个,h文件不用写

    接下来指定一下库文件位置:include_directories(src/main/cpp)  

    接下来定义两个库

    cmake文件至此完成。在app的build.gradle文件夹下边 defaultConfig结点里添加:

    externalNativeBuild {

                cmake {

                    cppFlags "-std=c++14 -frtti -fexceptions  -ffunction-sections -fdata-sections -Ofast"

                  abiFilters 'x86','x86_64','armeabi','armeabi-v7a',

    'arm64-v8a','mips','mips64'

                }

            }


    到这里就大功告成了。你可以尽情的往cpp里添加代码

    运行之后的so文件在这个地方,会自动打入apk内部,如果你是要给别人进行调用的话。还需要另外加入,其实都一样的,放入到jniLibs下或者libs下,进行调用。不过调用的时候要注意,java的文件的包名。层级都是要和cpp里的文件名,方法对应的,

    所以你可以自己建一个library用同样的包名,或者直接在自己的app里建一个相同的包名。即可。

    好的,最后地址奉上:欢迎收看

    相关文章

      网友评论

        本文标题:使用openssl库文件进行android jni 开发

        本文链接:https://www.haomeiwen.com/subject/kwwpsftx.html