Android-ndk-64位so文件问题(RSA加密采用cpp代码实现)

来源:互联网 发布:c语言pthread 编辑:程序博客网 时间:2024/06/17 10:44

是这样的:

rsa加密的一个方法:

  1.  BigInteger bigIntModulus = new BigInteger(modulus);  
  2.         BigInteger bigIntPrivateExponent = new BigInteger(privateExponent);  
  3.         RSAPublicKeySpec keySpec = new RSAPublicKeySpec(bigIntModulus, bigIntPrivateExponent);  
从网上找了一下大概是这个方法,生成的时候,在4.x的情况下时正常的,但是在5.x的情况下是错的。怎么办?用ndk。


用了ndk之后,能正常使用了。但是!在三星s6上无法运行,直接闪退!

报错大致如下:

[zip file "/data/app/com.cc.cect-1/base.apk"],nativeLibraryDirectories=[/data/app/com.cacc.caccproject-1/lib/arm64, /vendor/lib64, /system/lib64]]] couldn't find "libCrypt.so"

于是我研究了一段时间,实现了32位兼容:

将libs\armeabi里的so文件 复制到 libs\armeabi-v7a里 和 libs\x86里 文件夹不存的请创建 同时libs\x86_64  libs\mips  libs\mips64 路径需要创建(不用复制so文件进去,如果复制了的话会报错:说什么用了32位的文件 instead 了64位的文件)。


同时 libs里面不能存在arm64文件夹(引用项目中也不能有),总之就是64位引用的libs文件夹不能有 。然后 就能正常运行。

我这里由于是小小的功能,app也是社区类比较简单,于是采用32兼容实现不会对性能产生影响。真正的正解应该是编译64位的so文件并放入正确的路径中。

0 0