包变大原因:兼容所有平台的so库打入apk中
解决思路:只打入必要的so
1.哪些so是必须打入的?
2.so之间的兼容性是怎样的?
3.跟其他sdk的兼容性如何解决?
参考网址:http://www.cnblogs.com/libertycode/p/5995399.html
ndk {
//选择要添加的对应cpu类型的.so库。
abiFilters 'armeabi', 'armeabi-v7a', 'x86'
// 还可以添加 'x86', 'x86_64', 'mips', 'mips64'
}
abiFilters
指定ndk需要兼容的架构,把除了'armeabi', 'armeabi-v7a', 'x86' 以外的兼容包都过滤掉,只剩下'armeabi', 'armeabi-v7a', 'x86' 的文件夹
对于一个cpu是arm64-v8a架构的手机,它运行app时,进入jnilibs去读取库文件时,先看有没有arm64-v8a文件夹:
如果没有该文件夹,去找armeabi-v7a文件夹,如果没有,再去找armeabi文件夹,如果连这个文件夹也没有,就抛出异常
如果有arm64-v8a文件夹,那么就去找特定名称的.so文件,注意:如果没有找到,不会再往下(armeabi-v7a文件夹)找了,而是直
关键点:微博没有v8的.so库,高德是有的(如果生产了V8文件夹,微博会报错)
网友评论