android o car模块,CarPlay for Android: Bonjour 及 插件源码移植问题分析

最近开始做Android平台下的CarPlay开发, 笔者暂时负责Bonjour 及 apple 提供的插件(开发包)移植到Android平台的工作, 移植过程中遇到了很多问题, 现记录一下遇到的主要问题,希望能帮助到遇到同样问题的同学。 一. Bonjour 及 CarPlay Plugin移植到 Linux 并运行

因为CarPlay Plugin 需要Bonjour的支持, 因此需要先编译好Bonjour, Bonjour和CarPlay Plugin都提供了Posix兼容平台的makefile, 因此先把他们移植到Linux环境,运行、证代码是否正常,然后再移植到Android NDK 环境。

Bonjour是开源项目,代码目录名为:mDNSResponder, 有很多个版本, CarPlay Plugin 依赖特定版本的Bonjour, 但是在文档及代码注释中都没有找到相关的说明, 后来直接搜索代码,找到mDNSResponder-320版本能满足需求,因此在网上下载了这个版本的代码, 放到Ubuntu环境中编译,

(此处堪一误,CarPlay plugin中的readme中明确指出需要544版本的bonjour)笔者之前用107版本的代码会提示:

kDNSServiceFlagsSuppressUnusable找不到。

问题1:

cd 到 mDNSPosix目录下面, 执行make os=linux, 会得到以下错误: dns-sd.c: In function ‘getip’:

dns-sd.c:173:30: error: ‘struct sockaddr’ has no member named ‘sa_len’

#define SA_LEN(addr) ((addr)->sa_len)

原因是Ubuntu环境下网络地址中没有sa_len这个成员,所以把这里出错代码:

memcpy(result, addrs->ai_addr, SA_LEN(addrs->ai_addr));

改成

memcpy(result, addrs->ai_addr, sizeof(addrs->ai_addr));

即可。     问题2:    dnsextd_parser.y.o  dnsextd_lexer.l.o 文件找不到

查看makefile 看到.

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值