您的位置:首页 > 移动开发 > Android开发

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

2016-04-09 15:53 701 查看
是这样的:

rsa加密的一个方法:

 BigInteger bigIntModulus = new BigInteger(modulus);  

        BigInteger bigIntPrivateExponent = new BigInteger(privateExponent);  

        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文件并放入正确的路径中。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: