1、功能
在安卓tinyalsa里面添加部分代码,并需要将一个库libxxx.so链接到libtinyalsa.so里面
2、现象
编译时竟然需要链接x86_64的库???
3、排查
对比官方下载的源码AndroidNew与我拿到的源码AndroidXx编译输出文件
1)官方下载AndroidNew的源码
2)AndroidXx源码
对比1)和2)发现,官方AndroidNew源码只编译了armv7的版本,而AndroidXx源码却编译了四个平台的源码?
后面查看了framework层的输出文件,发现framework层没有这个现象,初步看是external做了特殊处理????
小白,这块不太了解,有知道的大神来侃侃!
3)解决
1>排查为什么会需要的编译对象不一样,这条路对比两个源码实在是没有搞定,放弃了
2>只能考虑编译libxxx.so四个平台对应的库,然后统一链接进libtinyalsa.so
网上找了很多资料,绝大多数是使用的下面的配置
cc_prebuilt_library_shared {
name: "libxxx",
vendor_available: true,
host_supported: true,
vndk: {
enabled: true,
},
target: {
android_arm: {
srcs: ["yuer/algorithm/algorithm/android/lib/armeabi-v7a/libxxx.so"],
},
android_arm64: {
srcs: ["yuer/algorithm/algorithm/android/lib/arm64-v8a/libxxx.so"],
},
android_x86:{
srcs: ["yuer/algorithm/algorithm/android/lib/x86/libxxx.so"],
},
android_x86_64: {
srcs: ["yuer/algorithm/algorithm/android/lib/x86_64/libxxx.so"],
},
},
shared_libs: ["libz"],
}
网上都差不多是这样写的,但是为什么我就是编译不过,水平有限,实在是没有找到差异点,别人都写博客了,说明应该是可以用的,但我这里确实不行,搞不懂,知道的大神过来侃侃!
网上有极少部分人有提到用arch做为条件,没办法也就尝试了一下,然而、然而、然而,竟然编译过了,折腾了一天,不容易、不容易、不容易!!!
cc_prebuilt_library_shared {
name: "libxxx",
vendor_available: true,
host_supported: true,
vndk: {
enabled: true,
},
arch: {
arm: {
srcs: ["yuer/algorithm/algorithm/android/lib/armeabi-v7a/libxxx.so"],
},
arm64: {
srcs: ["yuer/algorithm/algorithm/android/lib/arm64-v8a/libxxx.so"],
},
x86:{
srcs: ["yuer/algorithm/algorithm/android/lib/x86/libxxx.so"],
},
x86_64: {
srcs: ["yuer/algorithm/algorithm/android/lib/x86_64/libxxx.so"],
},
},
shared_libs: ["libz"],
}
头一次搞安卓,编译方面无处不在的“坑”!!!