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文件并放入正确的路径中。
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文件并放入正确的路径中。
相关文章推荐
- android 打 release包解决字节对其问题
- Android-->原生保存Bitmap(图片),压缩图片,创建图片缩略图和视频缩略图(任意大小)
- Android使用编译后的第三方库(集成环境下)
- Android -- SurfaceFlinger 概要分析系列
- 【Android基础】电话拨号器
- android启动--深入理解init进程
- android启动--深入理解zygote (II)
- android启动--深入理解zygote
- Android-- bionic介绍
- busybox应用于android系统
- Android中的dispatchTouchEvent()、onInterceptTouchEvent()、onTouchEvent()和setOnTouchListener()
- android -- 进程内存,CPU及内核打印输出
- Android 属性系统设计分析
- Android 属性系统 Property service 设定分析
- 源码分析-Android中的消息机制详解
- android2.3 --- Service Manager分析
- Android右滑销毁Activity
- Android 播放音频文件
- Android Studio for Mac Install PlantUML plugin
- Android - 动态库双向依赖解决方法