本章主要介绍在Android系统上集成开发的操作。
编译设置
内核配置
开发者如果需要为目标设备编译Linux Kernel,请确保Linux Kernel版本在3.15及以上。并且需要检查在Kernel编译的defconfig选项中使能了以下项目。
- 开启AUDIT和NETLINKE
CONFIG_AUDIT_ARCH=y CONFIG_AUDIT=y CONFIG_HAVE_ARCH_AUDITSYSCALL=y CONFIG_AUDITSYSCALL=y CONFIG_AUDIT_WATCH=y CONFIG_AUDIT_TREE=y CONFIG_NF_CT_NETLINK=y CONFIG_NF_CT_NETLINK_TIMEOUT=y CONFIG_NETFILTER_NETLINK_GLUE_CT=y
- 开启NETFILTER和IPTABLES
CONFIG_NETFILTER=y CONFIG_NETFILTER_NETLINK=y CONFIG_NETFILTER_NETLINK_ACCT=y CONFIG_NETFILTER_NETLINK_QUEUE=y CONFIG_NETFILTER_NETLINK_LOG=y CONFIG_IP_NF_IPTABLES=y
- 开启XTABLES及相关选项
CONFIG_NETFILTER_XTABLES=y # # Xtables combined modules # CONFIG_NETFILTER_XT_MARK=y ... # # Xtables targets # CONFIG_NETFILTER_XT_TARGET_AUDIT=y ... # # Xtables matches # CONFIG_NETFILTER_XT_MATCH_BPF=y ...
编译示例
DPS模块提供头文件和静态库供设备应用集成使用。AppSample为实现参考。
external/dps/client/inc/DPSClient.h
DPS client header file
libdspclient.a
DPS client static library
libiotx.a
Link MQTT static library
Android.bp示例:
cc_binary {
name: "AppSample",
include_dirs: [
"external/dps/client/inc",
...
],
srcs: [
"AppSample.cpp",
...
],
static_libs: [
"libiotx",
"libdpsclient",
...
],
}
启动设置
对于Android 7以上版本,目前DPS在Android设备上通过集成编译即可自启动,无需额外配置。
对于Android 5,需要在系统的init.rc或者厂商自定义的init.<vendor>.rc当中声名DPS服务。声名方式如下。
service dpsd /system/bin/dps/bin/dpsd
class main