blob: 38c0110ae3974f0634eeed47f3bc306fc0830e80 [file] [log] [blame]
Remi NGUYEN VAN59262cb2020-12-21 18:40:08 +09001//
2// Copyright (C) 2020 The Android Open Source Project
3//
4// Licensed under the Apache License, Version 2.0 (the "License");
5// you may not use this file except in compliance with the License.
6// You may obtain a copy of the License at
7//
8// http://www.apache.org/licenses/LICENSE-2.0
9//
10// Unless required by applicable law or agreed to in writing, software
11// distributed under the License is distributed on an "AS IS" BASIS,
12// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13// See the License for the specific language governing permissions and
14// limitations under the License.
15//
16
Bob Badour6c7ed9d2021-02-12 17:07:05 -080017package {
18 // See: http://go/android-license-faq
Baligh Uddin36847132021-05-23 16:38:40 +000019 default_applicable_licenses: ["Android-Apache-2.0"],
Bob Badour6c7ed9d2021-02-12 17:07:05 -080020}
21
Remi NGUYEN VANc41daa42023-08-14 15:34:20 +090022service_remoteauth_pre_jarjar_lib = "service-remoteauth-pre-jarjar"
23
24// The above variables may have different values
25// depending on the branch, and this comment helps
26// separate them from the rest of the file to avoid merge conflicts
27
Tyler Wearb37f5512021-10-01 13:22:00 -070028aidl_interface {
29 name: "connectivity_native_aidl_interface",
30 local_include_dir: "binder",
Tyler Wearb37f5512021-10-01 13:22:00 -070031 srcs: [
32 "binder/android/net/connectivity/aidl/*.aidl",
33 ],
34 backend: {
35 java: {
36 apex_available: [
37 "com.android.tethering",
38 ],
39 min_sdk_version: "30",
40 },
41 ndk: {
42 apex_available: [
43 "com.android.tethering",
44 ],
45 min_sdk_version: "30",
46 },
47 },
48 versions: ["1"],
49
50}
51
52cc_library_static {
53 name: "connectivity_native_aidl_interface-lateststable-ndk",
54 min_sdk_version: "30",
55 whole_static_libs: [
56 "connectivity_native_aidl_interface-V1-ndk",
57 ],
58 apex_available: [
59 "com.android.tethering",
60 ],
61}
62
63java_library {
64 name: "connectivity_native_aidl_interface-lateststable-java",
65 sdk_version: "system_current",
66 min_sdk_version: "30",
67 static_libs: [
68 "connectivity_native_aidl_interface-V1-java",
69 ],
70 apex_available: [
71 "com.android.tethering",
72 ],
73}
74
markchien8fb75e32021-11-11 17:53:56 +080075// The library name match the service-connectivity jarjar rules that put the JNI utils in the
Remi NGUYEN VAN6a20eed2022-01-31 11:21:08 +090076// android.net.connectivity.com.android.net.module.util package.
markchien8fb75e32021-11-11 17:53:56 +080077cc_library_shared {
Remi NGUYEN VAN6a20eed2022-01-31 11:21:08 +090078 name: "libandroid_net_connectivity_com_android_net_module_util_jni",
markchien8fb75e32021-11-11 17:53:56 +080079 min_sdk_version: "30",
80 cflags: [
81 "-Wall",
82 "-Werror",
83 "-Wno-unused-parameter",
84 "-Wthread-safety",
85 ],
86 srcs: [
87 "jni/com_android_net_module_util/onload.cpp",
88 ],
markchien8fb75e32021-11-11 17:53:56 +080089 static_libs: [
90 "libnet_utils_device_common_bpfjni",
Tyler Wearb37f5512021-10-01 13:22:00 -070091 "libnet_utils_device_common_bpfutils",
markchien8fb75e32021-11-11 17:53:56 +080092 ],
93 shared_libs: [
94 "liblog",
95 "libnativehelper",
96 ],
97 apex_available: [
98 "com.android.tethering",
99 ],
100}
101
Remi NGUYEN VANeaa96582021-01-08 01:19:44 +0000102cc_library_shared {
103 name: "libservice-connectivity",
Remi NGUYEN VANda43ef02021-03-23 14:45:58 +0000104 min_sdk_version: "30",
Remi NGUYEN VAN59262cb2020-12-21 18:40:08 +0900105 cflags: [
106 "-Wall",
107 "-Werror",
108 "-Wno-unused-parameter",
109 "-Wthread-safety",
Kangping Dong192e4b02023-10-25 20:34:21 +0800110
111 // AServiceManager_waitForService is available on only 31+, but it's still safe for Thread
112 // service because it's enabled on only 34+
113 "-Wno-unguarded-availability",
Remi NGUYEN VAN59262cb2020-12-21 18:40:08 +0900114 ],
115 srcs: [
Remi NGUYEN VANd9504892022-02-02 13:03:29 +0900116 ":services.connectivity-netstats-jni-sources",
Patrick Rohr361b8592022-01-28 15:39:17 +0100117 "jni/com_android_server_BpfNetMaps.cpp",
Hungming Chene2cf0552021-12-25 17:05:41 +0800118 "jni/com_android_server_connectivity_ClatCoordinator.cpp",
Kangping Dong192e4b02023-10-25 20:34:21 +0800119 "jni/com_android_server_ServiceManagerWrapper.cpp",
Patrick Rohr361b8592022-01-28 15:39:17 +0100120 "jni/com_android_server_TestNetworkService.cpp",
Remi NGUYEN VANeaa96582021-01-08 01:19:44 +0000121 "jni/onload.cpp",
Remi NGUYEN VAN59262cb2020-12-21 18:40:08 +0900122 ],
Remi NGUYEN VANda43ef02021-03-23 14:45:58 +0000123 header_libs: [
Patrick Rohr361b8592022-01-28 15:39:17 +0100124 "bpf_connectivity_headers",
Remi NGUYEN VANda43ef02021-03-23 14:45:58 +0000125 ],
Hungming Chene2cf0552021-12-25 17:05:41 +0800126 static_libs: [
127 "libclat",
128 "libip_checksum",
Remi NGUYEN VANd9504892022-02-02 13:03:29 +0900129 "libmodules-utils-build",
Hungming Chene2cf0552021-12-25 17:05:41 +0800130 "libnetjniutils",
Remi NGUYEN VANd9504892022-02-02 13:03:29 +0900131 "libnet_utils_device_common_bpfjni",
Patrick Rohr361b8592022-01-28 15:39:17 +0100132 "netd_aidl_interface-lateststable-ndk",
Hungming Chene2cf0552021-12-25 17:05:41 +0800133 ],
Remi NGUYEN VAN59262cb2020-12-21 18:40:08 +0900134 shared_libs: [
Maciej Żenczykowskidcae3512022-01-31 19:59:32 -0800135 "libbase",
Kangping Dong192e4b02023-10-25 20:34:21 +0800136 "libbinder_ndk",
Remi NGUYEN VANd9504892022-02-02 13:03:29 +0900137 "libcutils",
Maciej Żenczykowskidcae3512022-01-31 19:59:32 -0800138 "libnetdutils",
Remi NGUYEN VAN59262cb2020-12-21 18:40:08 +0900139 "liblog",
140 "libnativehelper",
Remi NGUYEN VANd9504892022-02-02 13:03:29 +0900141 "libnetworkstats",
Remi NGUYEN VAN59262cb2020-12-21 18:40:08 +0900142 ],
Pete Bentleyb1456112021-01-07 13:51:18 +0000143 apex_available: [
Remi NGUYEN VANeaa96582021-01-08 01:19:44 +0000144 "com.android.tethering",
Pete Bentleyb1456112021-01-07 13:51:18 +0000145 ],
146}
147
Remi NGUYEN VAN59262cb2020-12-21 18:40:08 +0900148java_library {
Aaron Huang63338842021-01-08 18:32:00 +0800149 name: "service-connectivity-pre-jarjar",
Remi NGUYEN VAN4ee6c502021-03-22 10:25:12 +0000150 sdk_version: "system_server_current",
Remi NGUYEN VANda43ef02021-03-23 14:45:58 +0000151 min_sdk_version: "30",
Remi NGUYEN VAN02eee9a2023-01-30 19:19:48 +0900152 // NetworkStackApiShimSettingsForCurrentBranch provides the latest available shims depending on
153 // the branch to "service-connectivity".
154 // There are Tethering.apk and TetheringNext.apk variants for the tethering APEX,
155 // which use NetworkStackApiStableShims and NetworkStackApiCurrentShims respectively.
156 // Note that there can be no service-connectivity-next because it would need to be configured in
157 // default_art_config.mk which doesn't support conditionals, hence this scheme of using a
158 // variable here.
159 defaults: ["NetworkStackApiShimSettingsForCurrentBranch"],
Remi NGUYEN VAN59262cb2020-12-21 18:40:08 +0900160 srcs: [
Remi NGUYEN VANcdb45f82021-05-13 12:53:15 +0000161 "src/**/*.java",
Aaron Huang63338842021-01-08 18:32:00 +0800162 ":framework-connectivity-shared-srcs",
Remi NGUYEN VAN4ee6c502021-03-22 10:25:12 +0000163 ":services-connectivity-shared-srcs",
Motomu Utsumi166f9662022-09-01 10:35:29 +0900164 ":statslog-connectivity-java-gen",
Remi NGUYEN VAN59262cb2020-12-21 18:40:08 +0900165 ],
Remi NGUYEN VAN59262cb2020-12-21 18:40:08 +0900166 libs: [
Remi NGUYEN VAN4ee6c502021-03-22 10:25:12 +0000167 "framework-annotations-lib",
Hassan Alic4f63fa2022-11-17 16:13:48 +0000168 "framework-configinfrastructure",
Remi NGUYEN VAN6a20eed2022-01-31 11:21:08 +0900169 "framework-connectivity-pre-jarjar",
Paul Duffin5118a522022-10-05 18:34:24 +0100170 // The framework-connectivity-t library is only available on T+ platforms
171 // so any calls to it must be protected with a check to ensure that it is
172 // available. The linter will detect any unprotected calls through an API
173 // but not direct calls to the implementation. So, this depends on the
174 // module lib stubs directly to ensure the linter will work correctly
175 // as depending on framework-connectivity-t would cause it to be compiled
176 // against the implementation because the two libraries are in the same
177 // APEX.
paulhu537f7202022-02-08 21:25:28 +0800178 "framework-connectivity-t.stubs.module_lib",
Igor Chernyshev9dac6602022-12-13 19:28:32 -0800179 // TODO: figure out why just using "framework-tethering" uses the stubs, even though both
180 // service-connectivity and framework-tethering are in the same APEX.
181 "framework-tethering.impl",
Paul Duffin5118a522022-10-05 18:34:24 +0100182 "framework-wifi",
Remi NGUYEN VAN59262cb2020-12-21 18:40:08 +0900183 "unsupportedappusage",
Remi NGUYEN VAN907ebd42021-03-08 22:05:03 +0900184 "ServiceConnectivityResources",
Paul Duffin5118a522022-10-05 18:34:24 +0100185 "framework-statsd",
Remi NGUYEN VAN59262cb2020-12-21 18:40:08 +0900186 ],
187 static_libs: [
Remi NGUYEN VAN6a20eed2022-01-31 11:21:08 +0900188 // Do not add libs here if they are already included
189 // in framework-connectivity
Igor Chernyshev9dac6602022-12-13 19:28:32 -0800190 "androidx.annotation_annotation",
Hungming Chen01f25502022-06-28 22:47:00 +0800191 "connectivity-net-module-utils-bpf",
Tyler Wearb37f5512021-10-01 13:22:00 -0700192 "connectivity_native_aidl_interface-lateststable-java",
Ken Chen5a35cf92023-10-07 07:54:22 +0800193 "dnsresolver_aidl_interface-V12-java",
William Escandeea9e22e2021-08-19 12:26:52 +0200194 "modules-utils-shell-command-handler",
Remi NGUYEN VAN59262cb2020-12-21 18:40:08 +0900195 "net-utils-device-common",
Patrick Rohr734f24e2022-08-09 19:23:18 -0700196 "net-utils-device-common-ip",
Xiao Ma09c07272021-07-01 14:00:34 +0000197 "net-utils-device-common-netlink",
Xiao Ma0a171c02022-01-23 16:14:51 +0000198 "net-utils-services-common",
lucaslinef337532021-01-18 11:58:24 +0800199 "netd-client",
Remi NGUYEN VAN4ee6c502021-03-22 10:25:12 +0000200 "networkstack-client",
lifrc0d25c12021-03-09 17:24:46 +0800201 "PlatformProperties",
Remi NGUYEN VANd8bc0fa2021-03-11 15:41:52 +0900202 "service-connectivity-protos",
Frank Li55f79d42022-11-25 06:00:54 +0000203 "service-connectivity-stats-protos",
Remi NGUYEN VAN59262cb2020-12-21 18:40:08 +0900204 ],
205 apex_available: [
Remi NGUYEN VANeaa96582021-01-08 01:19:44 +0000206 "com.android.tethering",
Remi NGUYEN VAN59262cb2020-12-21 18:40:08 +0900207 ],
Woody Lin7704e692023-08-14 04:47:03 +0000208 lint: { strict_updatability_linting: true },
paulhu802ab972021-12-14 01:30:22 +0000209 visibility: [
210 "//packages/modules/Connectivity/service-t",
211 "//packages/modules/Connectivity/tests:__subpackages__",
Kangping Dong192e4b02023-10-25 20:34:21 +0800212 "//packages/modules/Connectivity/thread/service:__subpackages__",
213 "//packages/modules/Connectivity/thread/tests:__subpackages__",
paulhu802ab972021-12-14 01:30:22 +0000214 ],
Remi NGUYEN VAN59262cb2020-12-21 18:40:08 +0900215}
Aaron Huang63338842021-01-08 18:32:00 +0800216
217java_library {
Remi NGUYEN VANd8bc0fa2021-03-11 15:41:52 +0900218 name: "service-connectivity-protos",
Remi NGUYEN VAN4ee6c502021-03-22 10:25:12 +0000219 sdk_version: "system_current",
Remi NGUYEN VANda43ef02021-03-23 14:45:58 +0000220 min_sdk_version: "30",
Remi NGUYEN VANd8bc0fa2021-03-11 15:41:52 +0900221 proto: {
222 type: "nano",
223 },
224 srcs: [
225 ":system-messages-proto-src",
226 ],
227 libs: ["libprotobuf-java-nano"],
228 apex_available: [
Remi NGUYEN VANd8bc0fa2021-03-11 15:41:52 +0900229 "com.android.tethering",
230 ],
Paul Duffin5118a522022-10-05 18:34:24 +0100231 lint: {
232 strict_updatability_linting: true,
233 },
Remi NGUYEN VANd8bc0fa2021-03-11 15:41:52 +0900234}
235
Paul Duffin5fc809f2022-05-20 14:15:42 +0000236java_defaults {
237 name: "service-connectivity-defaults",
Remi NGUYEN VAN4ee6c502021-03-22 10:25:12 +0000238 sdk_version: "system_server_current",
Remi NGUYEN VANda43ef02021-03-23 14:45:58 +0000239 min_sdk_version: "30",
zhidoub33a2632022-09-06 17:58:20 +0000240 defaults: [
241 "standalone-system-server-module-optimize-defaults",
242 ],
paulhu802ab972021-12-14 01:30:22 +0000243 // This library combines system server jars that have access to different bootclasspath jars.
244 // Lower SDK service jars must not depend on higher SDK jars as that would let them
245 // transitively depend on the wrong bootclasspath jars. Sources also cannot be added here as
Remi NGUYEN VAN371e7f72022-07-25 18:52:58 +0900246 // they would depend on bootclasspath jars that may not be available.
lifrc0d25c12021-03-09 17:24:46 +0800247 static_libs: [
Aaron Huang63338842021-01-08 18:32:00 +0800248 "service-connectivity-pre-jarjar",
paulhu802ab972021-12-14 01:30:22 +0000249 "service-connectivity-tiramisu-pre-jarjar",
Remi NGUYEN VANb6cde3d2022-03-10 04:32:15 +0000250 "service-nearby-pre-jarjar",
Remi NGUYEN VANc41daa42023-08-14 15:34:20 +0900251 service_remoteauth_pre_jarjar_lib,
Kangping Donge7fef892023-08-11 15:30:09 +0800252 "service-thread-pre-jarjar",
Aaron Huang63338842021-01-08 18:32:00 +0800253 ],
Remi NGUYEN VAN371e7f72022-07-25 18:52:58 +0900254 // The below libraries are not actually needed to build since no source is compiled
255 // (only combining prebuilt static_libs), but they are necessary so that R8 has the right
256 // references to optimize the code. Without these, there will be missing class warnings and
257 // code may be wrongly optimized.
258 // R8 runs after jarjar, so the framework-X libraries need to be the post-jarjar artifacts
259 // (.impl), if they are not just stubs, so that the name of jarjared classes match.
260 libs: [
261 "androidx.annotation_annotation",
262 "framework-annotations-lib",
263 "framework-connectivity.impl",
264 "framework-connectivity-t.impl",
Igor Chernyshev9dac6602022-12-13 19:28:32 -0800265 "framework-tethering.impl",
Paul Duffin5118a522022-10-05 18:34:24 +0100266 "framework-wifi",
Remi NGUYEN VAN371e7f72022-07-25 18:52:58 +0900267 "libprotobuf-java-nano",
268 ],
Remi NGUYEN VAN6a20eed2022-01-31 11:21:08 +0900269 jarjar_rules: ":connectivity-jarjar-rules",
Aaron Huang63338842021-01-08 18:32:00 +0800270 apex_available: [
Aaron Huang63338842021-01-08 18:32:00 +0800271 "com.android.tethering",
272 ],
Remi NGUYEN VANc6f8fb02022-04-20 18:58:53 +0900273 optimize: {
Remi NGUYEN VANc6f8fb02022-04-20 18:58:53 +0900274 proguard_flags_files: ["proguard.flags"],
275 },
Paul Duffin5118a522022-10-05 18:34:24 +0100276 lint: {
277 strict_updatability_linting: true,
278 },
Aaron Huang63338842021-01-08 18:32:00 +0800279}
Remi NGUYEN VAN8ea5ee62021-06-28 18:48:43 +0900280
Paul Duffin5fc809f2022-05-20 14:15:42 +0000281// A special library created strictly for use by the tests as they need the
282// implementation library but that is not available when building from prebuilts.
283// Using a library with a different name to what is used by the prebuilts ensures
284// that this will never depend on the prebuilt.
285// Switching service-connectivity to a java_sdk_library would also have worked as
286// that has built in support for managing this but that is too big a change at this
287// point.
288java_library {
289 name: "service-connectivity-for-tests",
290 defaults: ["service-connectivity-defaults"],
291}
292
293java_library {
294 name: "service-connectivity",
295 defaults: ["service-connectivity-defaults"],
296 installable: true,
297}
298
Frank Lie6b47f32022-10-25 18:57:10 +0000299java_library_static {
300 name: "service-connectivity-stats-protos",
301 sdk_version: "system_current",
302 min_sdk_version: "30",
303 proto: {
304 type: "lite",
305 },
306 srcs: [
307 "src/com/android/metrics/stats.proto",
308 ],
309 static_libs: ["ConnectivityServiceprotos"],
310 apex_available: ["com.android.tethering"],
311}
312
Remi NGUYEN VANe55a88d2022-04-20 15:59:16 +0900313genrule {
Remi NGUYEN VAN8ea5ee62021-06-28 18:48:43 +0900314 name: "connectivity-jarjar-rules",
Remi NGUYEN VANe55a88d2022-04-20 15:59:16 +0900315 defaults: ["jarjar-rules-combine-defaults"],
316 srcs: [
317 ":framework-connectivity-jarjar-rules",
318 ":service-connectivity-jarjar-gen",
319 ":service-nearby-jarjar-gen",
Casey Borders13a35ea2023-07-13 00:30:38 +0000320 ":service-remoteauth-jarjar-gen",
Kangping Donge7fef892023-08-11 15:30:09 +0800321 ":service-thread-jarjar-gen",
Remi NGUYEN VANe55a88d2022-04-20 15:59:16 +0900322 ],
323 out: ["connectivity-jarjar-rules.txt"],
Remi NGUYEN VAN8ea5ee62021-06-28 18:48:43 +0900324 visibility: ["//packages/modules/Connectivity:__subpackages__"],
325}
Wayne Ma0ea3bdc2022-01-12 01:12:11 +0800326
327// TODO: This filegroup temporary exposes for NetworkStats. It should be
328// removed right after NetworkStats moves into mainline module.
329filegroup {
330 name: "traffic-controller-utils",
331 srcs: ["src/com/android/server/BpfNetMaps.java"],
332 visibility: ["//packages/modules/Connectivity:__subpackages__"],
333}
Remi NGUYEN VANe55a88d2022-04-20 15:59:16 +0900334
335java_genrule {
336 name: "service-connectivity-jarjar-gen",
337 tool_files: [
338 ":service-connectivity-pre-jarjar{.jar}",
339 ":service-connectivity-tiramisu-pre-jarjar{.jar}",
340 "jarjar-excludes.txt",
341 ],
342 tools: [
343 "jarjar-rules-generator",
344 ],
345 out: ["service_connectivity_jarjar_rules.txt"],
346 cmd: "$(location jarjar-rules-generator) " +
Remi NGUYEN VAN0bd90f12022-08-10 20:15:46 +0900347 "$(location :service-connectivity-pre-jarjar{.jar}) " +
Remi NGUYEN VANe55a88d2022-04-20 15:59:16 +0900348 "$(location :service-connectivity-tiramisu-pre-jarjar{.jar}) " +
349 "--prefix android.net.connectivity " +
350 "--excludes $(location jarjar-excludes.txt) " +
351 "--output $(out)",
352 visibility: ["//visibility:private"],
353}
354
355java_genrule {
356 name: "service-nearby-jarjar-gen",
357 tool_files: [
358 ":service-nearby-pre-jarjar{.jar}",
359 "jarjar-excludes.txt",
360 ],
361 tools: [
362 "jarjar-rules-generator",
363 ],
364 out: ["service_nearby_jarjar_rules.txt"],
365 cmd: "$(location jarjar-rules-generator) " +
Remi NGUYEN VAN0bd90f12022-08-10 20:15:46 +0900366 "$(location :service-nearby-pre-jarjar{.jar}) " +
Remi NGUYEN VANe55a88d2022-04-20 15:59:16 +0900367 "--prefix com.android.server.nearby " +
368 "--excludes $(location jarjar-excludes.txt) " +
369 "--output $(out)",
370 visibility: ["//visibility:private"],
371}
Motomu Utsumi166f9662022-09-01 10:35:29 +0900372
Casey Borders13a35ea2023-07-13 00:30:38 +0000373java_genrule {
374 name: "service-remoteauth-jarjar-gen",
375 tool_files: [
Remi NGUYEN VANc41daa42023-08-14 15:34:20 +0900376 ":" + service_remoteauth_pre_jarjar_lib + "{.jar}",
Casey Borders13a35ea2023-07-13 00:30:38 +0000377 "jarjar-excludes.txt",
378 ],
379 tools: [
380 "jarjar-rules-generator",
381 ],
382 out: ["service_remoteauth_jarjar_rules.txt"],
383 cmd: "$(location jarjar-rules-generator) " +
Remi NGUYEN VANc41daa42023-08-14 15:34:20 +0900384 "$(location :" + service_remoteauth_pre_jarjar_lib + "{.jar}) " +
Casey Borders13a35ea2023-07-13 00:30:38 +0000385 "--prefix com.android.server.remoteauth " +
386 "--excludes $(location jarjar-excludes.txt) " +
387 "--output $(out)",
388 visibility: ["//visibility:private"],
389}
390
Kangping Donge7fef892023-08-11 15:30:09 +0800391java_genrule {
392 name: "service-thread-jarjar-gen",
393 tool_files: [
394 ":service-thread-pre-jarjar{.jar}",
395 "jarjar-excludes.txt",
396 ],
397 tools: [
398 "jarjar-rules-generator",
399 ],
400 out: ["service_thread_jarjar_rules.txt"],
401 cmd: "$(location jarjar-rules-generator) " +
402 "$(location :service-thread-pre-jarjar{.jar}) " +
403 "--prefix com.android.server.thread " +
404 "--excludes $(location jarjar-excludes.txt) " +
405 "--output $(out)",
406 visibility: ["//visibility:private"],
407}
408
Motomu Utsumi166f9662022-09-01 10:35:29 +0900409genrule {
Paul Duffin5118a522022-10-05 18:34:24 +0100410 name: "statslog-connectivity-java-gen",
411 tools: ["stats-log-api-gen"],
412 cmd: "$(location stats-log-api-gen) --java $(out) --module connectivity --javaPackage com.android.server --javaClass ConnectivityStatsLog",
413 out: ["com/android/server/ConnectivityStatsLog.java"],
Motomu Utsumi166f9662022-09-01 10:35:29 +0900414}