as中jni调用姿势(实战)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u012704843/article/details/53933332
 一、背景
        最近项目中网络请求用到了jni调用c++代码来实现加密的功能,做的过程中踩了一些坑,特此祭奠一下
 二、过程
       与eclipse中jni略有不同,as中需要在本地和gradle中做一下自己的配置
       1.在项目gradle.properties目录中加入
Android.useDeprecatedNdk=true
            解决本地ndk版本过低而不能正常编译的问题
       2.在项目目录下的gradle中添加如下(android{}里边)
          
sourceSets {
    main {
        jniLibs.srcDirs 'src/main/obj/local'
        jni.srcDirs=[]
    }
}
           jniLibs.srcDirs指定生成的so文件路径
           jni.srcDirs解决ndk本地不能正常构建的问题
       3.可以使用jdk工具自动编译.class生成不同处理器下so文件
         在控制台进入app包的根目录下执行javah *.*.*.+ 命令(*代表文件夹,+代表写有native的类名)           
         即可生成如下图所示的.h文件
                
      4.sha256加密(非对称加密)
        原理:把要传递的参数,加入时间戳等内容,进行规则排序,然后进行sha256加密(本地需要一个私钥),这些操作都是
        用c++代码实现的安全级别比较高
 三、小结
    现在开发不太忙了,慢慢把之前的东西消化消化,沉淀一下


阅读更多
换一批

没有更多推荐了,返回首页