解决方案参考微博开放平台AndroidSDK官方文档https://github.com/sinaweibosdk/weibo_android_sdk
问题描述
问题的主要来源在于下面的说明
3:关于so 微博sdk aar中默认直提供了[armeabi] [armeabi-v7a][x86]三个平台的so,如果你需要适配更多版本的so,请到github->so目录中获取全部平台的so文件
通过compile 'com.sina.weibo.sdk:core:4.2.7:openDefaultRelease@aar'
方式引用微博SDK,默认只能支持armeabi、armeabi-v7a、x86三个平台,如果想支持其他平台需要获取对应平台的so文件并导入。当然如果没有指定必须支持全平台,也可以选择只支持这三个平台。
这里讨论的是如何支持其他平台的情况。
导入方法
方案一 单独下载so文件导入到主项目
- 仍旧通过
compile 'com.sina.weibo.sdk:core:4.2.7:openDefaultRelease@aar'
方式引用微博SDK - 找到
[module]/app/src/main/jnilibs
目录(没有则创建), 在https://github.com/sinaweibosdk/weibo_android_sdk/tree/master/so下载并对应平台的so文件, 将下载的文件放到对应的平台文件夹下 例如 [module]/app/src/main/jnilibs/arm64-v8a/libweibosdkcore.so [module]/app/src/main/jnilibs/x86_64libweibosdkcore.so
方案二 改为导入修改后的aar文件
- 将最新的aar文件下载,将需要支持的so文件写入aar压缩包中
- 在主项目的gradle文件添加
android{
repositories{
flatDir {
dirs 'libs'
}
}
}
dependencies {
compile(name: 'openDefault-4.2.7', ext: 'aar')
}
复制代码
一些关于各平台的说明
CPU架构/abi | 描述 | 使用范围 |
---|---|---|
armeabi | 第5代 ARM v5TE,使用软件浮点运算,兼容所有ARM设备,通用性强,速度慢。ARM v5 这是相当老旧的一个版本,缺少对浮点数计算的硬件支持,在需要大量计算时有性能瓶颈 | 早期的手机 |
armeabi-v7a | 第7代 ARM v7,使用硬件浮点运算,具有高级扩展功能 | 2011年以后的生产的Android设备 |
arm64-v8a | 第8代,64位,包含AArch32、AArch64两个执行状态对应32、64bit。所谓的ARMv8架构,就是在MIPS64架构上增加了ARMv7架构中已经拥有的的TrustZone技术、虚拟化技术及NEON advanced SIMD技术等特性,研发成的。 | 较新的设备如华为荣耀6 mete9 三星 Galaxy S6等 |
x86 | intel 32位 | 平板、模拟器用得比较多 |
x86_64 | intel 64位 | 64位的平板 |
mips | 大概是龙心系列? | 手机上用的比较少,PS2 PSP是使用处理器 |
mips64 | mips的64位版本,通常mips可以兼容mips64 |
注:
- mips / mips64: 极少用于手机可以忽略,有兴趣的可以百度一下。
- x86 / x86_64: x86 架构的手机都会包含由 Intel 提供的称为 Houdini 的指令集动态转码工具,实现 对 arm .so 的兼容,再考虑 x86 1% 以下的市场占有率,x86 相关的两个 .so 也是可以忽略的 参考文章: [1]Android .so abi兼容,通用armeabi-v7a和arm64-v8a架构的方法 [2]Android的.so文件、ABI和CPU的关系