VNDK extensions

Android P要求开VNDK

 

如果HAL需要链接android原生库,原生库的Android.bp必须包含下面内容

 

如果没有对原生库做任何修改,编译不会出现问题;如果对原生库做了修改,这个时候编译会出错,会提示不允许链接该库,这个时候就需要添加扩展库了

VNDK扩展库与VNDK原生库相比增加了新的API或者对原有API的修改,编译出的扩展库会放到/vendor/lib[64]/vndk[-sp]下面把原生的VNDK库替换掉,具体操作如下:

假设原生库为libABC,扩展库为libABC_ext

1、在原有模块libABC的基础上新增模块libABC_ext,并添加cflag LIBABC_EXT_ENABLE

cc_library {
name: "libABC",
vendor_available: true,
vndk: {
enabled: true,
},
}
cc_library {
name: "libABC_ext",
vendor: true,
vndk: {
enabled: true,
extends: "libABC",
},
cflags: [
"-DLIBABC_EXT_ENABLE",
],
}

2、条件编译

新增API (newly_add_api)

#ifdef LIBABC_EXT_ENABLE
void newly_add_api()
#endif

修改API(new 与old相比,接口名称一样,内容不一样)

#ifdef LIBABC_EXT_ENABLE
void new()
#else
void old()
#endif

做完这些后,就能编译通过了

你可能感兴趣的:(Android,P)