1# Copyright (c) 2021-2025 Huawei Device Co., Ltd. 2# Licensed under the Apache License, Version 2.0 (the "License"); 3# you may not use this file except in compliance with the License. 4# You may obtain a copy of the License at 5# 6# http://www.apache.org/licenses/LICENSE-2.0 7# 8# Unless required by applicable law or agreed to in writing, software 9# distributed under the License is distributed on an "AS IS" BASIS, 10# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 11# See the License for the specific language governing permissions and 12# limitations under the License. 13 14import("//build/config/components/idl_tool/idl.gni") 15import("//build/ohos.gni") 16import("//foundation/filemanagement/user_file_service/filemanagement_aafwk.gni") 17 18group("user_file_managers") { 19 deps = [ 20 ":external_file_manager_hap", 21 ":file_access_service", 22 ":file_access_service.cfg", 23 ":file_access_service_profile", 24 ] 25} 26 27ohos_hap("external_file_manager_hap") { 28 hap_profile = "file_extension_hap/entry/src/main/module.json" 29 deps = [ 30 ":external_file_manager_js_assets", 31 ":external_file_manager_resources", 32 ] 33 publicity_file = "../publicity.xml" 34 certificate_profile = "signature/fileextension.p7b" 35 hap_name = "external_file_manager" 36 subsystem_name = "filemanagement" 37 part_name = "user_file_service" 38 module_install_dir = "app/com.ohos.UserFile.ExternalFileManager" 39} 40 41ohos_js_assets("external_file_manager_js_assets") { 42 hap_profile = "file_extension_hap/entry/src/main/module.json" 43 ets2abc = true 44 source_dir = "file_extension_hap/entry/src/main/ets" 45} 46 47ohos_app_scope("external_file_manager_app_profile") { 48 app_profile = "file_extension_hap/AppScope/app.json" 49 sources = [ "file_extension_hap/AppScope/resources" ] 50} 51 52ohos_sa_profile("file_access_service_profile") { 53 sources = [ "5010.json" ] 54 part_name = "user_file_service" 55} 56 57ohos_prebuilt_etc("file_access_service.cfg") { 58 source = "file_access_service.cfg" 59 relative_install_dir = "init" 60 subsystem_name = "filemanagement" 61 part_name = "user_file_service" 62} 63 64config("ability_config") { 65 visibility = [ ":*" ] 66 include_dirs = [ 67 "native/file_access_service/include", 68 "${user_file_service_path}/utils", 69 "${user_file_service_path}/interfaces/inner_api/file_access/include", 70 "${user_file_service_path}/frameworks/js/napi/file_access_module", 71 ] 72} 73 74config("ability_public_config") { 75 visibility = [ ":*" ] 76 include_dirs = [ 77 "native/file_access_service/include", 78 "${user_file_service_path}/utils", 79 "${user_file_service_path}/interfaces/kits/js/src/common", 80 ] 81} 82 83ohos_resources("external_file_manager_resources") { 84 sources = [ "file_extension_hap/entry/src/main/resources" ] 85 deps = [ ":external_file_manager_app_profile" ] 86 hap_profile = "file_extension_hap/entry/src/main/module.json" 87} 88 89idl_gen_interface("IFile_Access_Service_Base") { 90 sources = [ "IFileAccessServiceBase.idl" ] 91 sources_callback = [ "IFileAccessObserver.idl" ] 92 sources_common = [ "NotifyType.idl" ] 93 hitrace = "HITRACE_TAG_FILEMANAGEMENT" 94 log_domainid = "0xD00430A" 95 log_tag = "filemanagement" 96} 97 98config("IFile_Access_Service_Base_config") { 99 visibility = [ ":*" ] 100 include_dirs = [ 101 "native/file_access_service/include", 102 "${user_file_service_path}/interfaces/inner_api/file_access/include", 103 "${user_file_service_path}/utils", 104 "${user_file_service_path}/interfaces/kits/js/src/common", 105 "${target_gen_dir}", 106 ] 107} 108 109ohos_source_set("file_access_service_base_source") { 110 sanitize = { 111 cfi = true 112 cfi_cross_dso = true 113 debug = false 114 } 115 public_configs = [ ":IFile_Access_Service_Base_config" ] 116 output_values = get_target_outputs(":IFile_Access_Service_Base") 117 sources = filter_include(output_values, [ "*.cpp" ]) 118 deps = [ 119 ":IFile_Access_Service_Base", 120 "${user_file_service_path}/interfaces/inner_api/file_access:file_access_ext_base_include", 121 ] 122 123 external_deps = [ 124 "ability_base:want", 125 "ability_base:zuri", 126 "ability_runtime:ability_connect_callback_stub", 127 "c_utils:utils", 128 "hilog:libhilog", 129 "hitrace:hitrace_meter", 130 "ipc:ipc_core", 131 "ipc:ipc_single", 132 ] 133 134 subsystem_name = "filemanagement" 135 part_name = "user_file_service" 136} 137 138ohos_source_set("file_access_service_base_include") { 139 sanitize = { 140 cfi = true 141 cfi_cross_dso = true 142 debug = false 143 } 144 public_configs = [ ":IFile_Access_Service_Base_config" ] 145 deps = [ 146 ":IFile_Access_Service_Base", 147 "${user_file_service_path}/interfaces/inner_api/file_access:file_access_ext_base_include", 148 ] 149 150 external_deps = [ 151 "ability_base:want", 152 "ability_base:zuri", 153 "ability_runtime:ability_connect_callback_stub", 154 "c_utils:utils", 155 "hilog:libhilog", 156 "hitrace:hitrace_meter", 157 "ipc:ipc_core", 158 "ipc:ipc_single", 159 ] 160 161 subsystem_name = "filemanagement" 162 part_name = "user_file_service" 163} 164 165ohos_shared_library("file_access_service") { 166 branch_protector_ret = "pac_ret" 167 sanitize = { 168 integer_overflow = true 169 ubsan = true 170 boundary_sanitize = true 171 cfi = true 172 cfi_cross_dso = true 173 debug = false 174 } 175 176 include_dirs = [ 177 "${user_file_service_path}/services/native/file_access_service/include", 178 "${user_file_service_path}/interfaces/inner_api/file_access/include", 179 ] 180 shlib_type = "sa" 181 sources = [ 182 "${user_file_service_path}/interfaces/inner_api/file_access/src/uri_ext.cpp", 183 "native/file_access_service/src/file_access_ext_connection.cpp", 184 "native/file_access_service/src/file_access_service.cpp", 185 "native/file_access_service/src/file_access_service_client.cpp", 186 ] 187 configs = [ ":ability_config" ] 188 version_script = "libfile_access_service.map" 189 public_configs = [ ":ability_public_config" ] 190 191 deps = [ 192 ":file_access_service_base_source", 193 "${user_file_service_path}/interfaces/inner_api/file_access:file_access_ext_base_include", 194 "${user_file_service_path}/interfaces/inner_api/file_access:file_access_extension_ability_kit", 195 ] 196 197 external_deps = [ 198 "ability_base:want", 199 "ability_base:zuri", 200 "ability_runtime:ability_connect_callback_stub", 201 "ability_runtime:ability_manager", 202 "ability_runtime:napi_common", 203 "access_token:libaccesstoken_sdk", 204 "access_token:libtokenid_sdk", 205 "bundle_framework:appexecfwk_core", 206 "c_utils:utils", 207 "hilog:libhilog", 208 "hitrace:hitrace_meter", 209 "ipc:ipc_core", 210 "safwk:system_ability_fwk", 211 "samgr:samgr_proxy", 212 ] 213 214 subsystem_name = "filemanagement" 215 part_name = "user_file_service" 216} 217