Android11多平台编译Android.bp里面的“坑”(target/arch)

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"],
  }   

头一次搞安卓,编译方面无处不在的“坑”!!!

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值