赞
踩
应业务需求,实现开机启动一个可执行文件,记录一下。
1.在目标目录下新建Android.mk
LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := android.hardware.test_default@1.0-service LOCAL_MODULE_TAGS := optional LOCAL_MODULE_CLASS := EXECUTABLES LOCAL_PROPRIETARY_MODULE := true LOCAL_SRC_FILES := android.hardware.test_default@1.0-service LOCAL_MODULE_PATH := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_VENDOR)/bin/hw include $(BUILD_PREBUILT) include $(CLEAR_VARS) LOCAL_MODULE := android.hardware.test_default@1.0-service.rc LOCAL_MODULE_TAGS := optional LOCAL_MODULE_CLASS := ETC LOCAL_SRC_FILES := android.hardware.test_default@1.0-service.rc LOCAL_MODULE_PATH := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_VENDOR)/etc/init include $(BUILD_PREBUILT) include $(CLEAR_VARS) LOCAL_MODULE := android.hardware.test_default@1.0 LOCAL_MODULE_CLASS := SHARED_LIBRARIES LOCAL_MODULE_TAGS := optional LOCAL_VENDOR_MODULE := true LOCAL_MODULE_SUFFIX := .so LOCAL_MULTILIB:= 64 LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR)/lib64 LOCAL_SRC_FILES := $(LOCAL_MODULE).so include $(BUILD_PREBUILT)
这个mk作用就是将文件拷贝到指定的路径。
2.配置sepolicy
用于配置SE权限的文件一般放在 /device/product_name/sepolicy/ 或 /device/product_name/common/sepolicy/ 目录下,然后可以在这个目录下添加SE的权限了。
2.1.hwservice.te 文件中添加下面内容
# define demoService as hwservice_manager, so it can be added as a hwservice
type hal_test_default_hwservice, hwservice_manager_type;
2.2.新建文件hal_test_default.te
type hal_test_default, domain; type hal_test_default_exec, exec_type, vendor_file_type, file_type; init_daemon_domain(hal_test_default) allow hal_test_default self:can_socket create_socket_perms; allow hal_test_default self:capability { dac_override }; allowxperm hal_test_default self:can_socket ioctl { unpriv_sock_ioctls priv_sock_ioctls }; allow hal_test_default hal_test_default:socket {create bind read write setopt}; allow hal_test_default su:unix_stream_socket {listen bind read write connectto}; allow hal_test_default su:unix_dgram_socket sendto; binder_call(hal_test_default,system_server) binder_call(system_server,hal_test_default) allow hal_test_default shell_data_file:dir { search write add_name create remove_name }; allow hal_test_default shell_data_file:sock_file { write create unlink }; allow hal_test_default name-server:unix_stream_socket { connectto }; allow hal_test_default self:capability { dac_override sys_nice }; allow hal_test_default self:tcp_socket { create write read setopt bind listen getattr accept connect }; allow hal_test_default fwmarkd_socket:sock_file { write }; allow hal_test_default netd:unix_stream_socket { connectto }; allow hal_test_default node:tcp_socket { node_bind }; allow hal_test_default port:tcp_socket { name_connect }; allow netd hal_test_default:fd { use }; allow netd hal_test_default:tcp_socket { read write getopt setopt }; allow system_server hal_test_default_hwservice:hwservice_manager { find }; allow hal_test_default hal_radio_oversea_hwservice:hwservice_manager { add }; allow hal_test_default platform_app:binder { call }; allow hal_test_default system_app:binder { call };
2.3.file_contexts文件添加下面内容
/(vendor|system/vendor)/bin/hw/android.hardware.test_default@1.0-service u:object_r:hal_test_default_exec:s0
2.4.hwservice_contexts 文件添加下面内容
# define HAL interface as a security object
android.hardware.test_service::ITest u:object_r:hal_test_default_hwservice:s0
2.5.hwservicemanager.te文件添加下面内容
# grant hal_test_service permission of using hwbinder
hwbinder_use(hal_test_default)
2.6.system_app.te 文件添加下面内容
# APP access priviledges for hal_test_service
binder_call(system_app, hal_test_default)
allow system_app hal_test_default_hwservice:hwservice_manager find;
2.7.platform_app.te文件添加下面内容
# APP access priviledges for hal_test_service
binder_call(platform_app, hal_test_default_service)
allow platform_app hal_test_default_hwservice:hwservice_manager find;
3.修改manifest.xml
<hal format="hidl">
<name>android.hardware.test_default</name>
<transport>hwbinder</transport>
<version>1.0</version>
<interface>
<name>ITest</name>
<instance>default</instance>
</interface>
</hal>
修改compatibility_matrix.xml
<hal format="hidl" optional="true">
<name>android.hardware.test_default</name>
<version>1.0</version>
<interface>
<name>ITest</name>
<instance>default</instance>
</interface>
</hal>
4.添加product_packages
PRODUCT_PACKAGES += \
android.hardware.test_default@1.0-service
然后编译,烧录新版本,adb shell ps -A| grep test 查看进程是否启动.
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。