android生成jni的c++部分的坑(集成openssl)

jni里集成openssl,最好在build.gradle做些处理

sourceSets.main {
        jni.srcDirs = []
        jniLibs.srcDir 'src/main/jniLibs'
    }

在android.mk写个dir指向自定义文件夹jniLibs

NDK_APP_DST_DIR := ../jniLibs/$(TARGET_ARCH_ABI)

c++语法处理部分细节坑

1、记得无论什么时候,都要对数组初始化,不然多余的数值会对调试生成影响
memset(a, 0x00, sizeof(a));

2、对字符数组求长度的时候,在c++里遇到0x00或者’\0’的时候strlen会提前结束,导致错误的输出,这点在调试过程中是个问题
strlen(a)

3、记得字符数组转成16进制后再输出,原因就是字符有些是不可见的

4、从其他地方接收的参数如果是16进制的字符串,记得先转成10进制的字符数组,再参与计算

5、使用PEM_read_bio_PrivateKey可以读取rsa的私钥,而PEM_read_bio_RsaPrivateKey也可以读,不过是两个不同的结果,两种key的类型可以互转
EVP_PKEY_get1_RSA 
EVP_PKEY_set1_RSA