androidstudio调用第三方库时的armeabi,armeabi-v7a问题

一. lib和libs目录

放在lib中的是被reference的,放在libs中的是被include的。 

放在libs中的文件会自动被Eclipse所include。所以不要把API放到libs里去。 

lib的内容是不会被打包到APK中,libs中的内容是会被打包进APK中

二. .so库是 NDK编译出来的动态链接库。 

一些重要的加密算法或者核心协议一般都用c写然后给java调用。这样可以避免反编译后查看到应用的源码。

三. .so库又该如何存放? 

 为了减小 apk 体积,只保留 armeabi 和 armeabi-v7a 两个文件夹,并保证这两个文件夹中 .so 数量一致 

 对只提供 armeabi 版本的第三方 .so,原样复制一份到 armeabi-v7a 文件夹

四. libs下armeabi等的作用是什么? 
存放.so库,主要针对不同的设备兼容,也可以说是专门针对不同Android手机下CPU架构的兼容。 
下面就来扯一下安卓cpu 
Android 设备的CPU类型(通常称为”ABIs”)

早期的Android系统几乎只支持ARMv5的CPU架构,你知道现在它支持多少种吗?7种! 
Android系统目前支持以下七种不同的CPU架构:ARMv5,ARMv7 (从2010年起),x86 (从2011年起),MIPS (从2012年起),ARMv8,MIPS64和x86_64 (从2014年起),每一种都关联着一个相应的ABI。 
应用程序二进制接口(Application Binary Interface)定义了二进制文件(尤其是.so文件)如何运行在相应的系统平台上,从使用的指令集,内存对齐到可用的系统函数库。在Android 系统上,每一个CPU架构对应一个ABI:armeabi,armeabi-v7a,x86,mips,arm64- v8a,mips64,x86_64

各版本分析如下: 
• mips / mips64: 极少用于手机可以忽略 
• x86 / x86_64: x86 架构的手机都会包含由 Intel 提供的称为 Houdini 的指令集动态转码工具,实现 对 arm .so 的兼容,再考虑 x86 1% 以下的市场占有率,x86 相关的两个 .so 也是可以忽略的 
• armeabi: ARM v5 这是相当老旧的一个版本,缺少对浮点数计算的硬件支持,在需要大量计算时有性能瓶颈 
• armeabi-v7a: ARM v7 目前主流版本 
• arm64-v8a: 64位支持

所谓的ARMv8架构,就是在MIPS64架构上增加了ARMv7架构中已经拥有的的TrustZone技术、虚拟化技术及NEON advanced SIMD技术等特性,研发成的


你可能感兴趣的:(androidstudio调用第三方库时的armeabi,armeabi-v7a问题)