diff options
| author | 2021-01-12 16:37:57 -0800 | |
|---|---|---|
| committer | 2021-02-04 07:28:21 +0000 | |
| commit | 2c5cb269e6aadbb47d3b004236dcfeb7e49cb318 (patch) | |
| tree | 13a036ba56083e457663d66f7cbd4e5039f136f2 | |
| parent | cee78a711c53b3aafc20be38195c13824b5037b3 (diff) | |
Initial layout of ART Service files
This CL contains the initial scaffolding for the ART Service project.
This contains a Java Language library for loading into the System
Server and two native support libraries. At this moment these libraries
contain simple "Hello World" stubs.
Test: Build each of the libraries
Test: art/build/apex/runtests.sh
Bug: 177273468
Change-Id: I597ce336a9ddc14d7b407efef7c1e34f5a4a46ae
| -rw-r--r-- | build/apex/Android.bp | 13 | ||||
| -rwxr-xr-x | build/apex/art_apex_test.py | 5 | ||||
| -rw-r--r-- | libartservice/Android.bp | 62 | ||||
| -rw-r--r-- | libartservice/service/java/com/android/server/art/ArtService.java | 32 | ||||
| -rw-r--r-- | libartservice/service/native/service.cc | 27 | ||||
| -rw-r--r-- | libartservice/service/native/service.h | 30 | ||||
| -rw-r--r-- | libarttools/Android.bp | 37 | ||||
| -rw-r--r-- | libarttools/tools/tools.cc | 27 | ||||
| -rw-r--r-- | libarttools/tools/tools.h | 30 |
9 files changed, 261 insertions, 2 deletions
diff --git a/build/apex/Android.bp b/build/apex/Android.bp index 78770db6bf..8b6df9da43 100644 --- a/build/apex/Android.bp +++ b/build/apex/Android.bp @@ -51,12 +51,16 @@ art_runtime_base_native_shared_libs = [ // dependencies work with APEX libraries. "libart", "libart-compiler", + "libartservice", "libdt_fd_forward", "libdt_socket", "libjdwp", "libnpt", "libopenjdkjvm", "libopenjdkjvmti", + // TODO(chriswailes): Make libarttools a dependency for another target + // when such a target exists + "libarttools", ] art_runtime_base_native_device_only_shared_libs = [ @@ -158,6 +162,11 @@ libcore_java_libs = [ "apache-xml", ] +// ART Java libraries +art_java_libs = [ + "artservice", +] + // Native libraries that support the core Java libraries. // // Note: ART on-device chroot-based testing and benchmarking is not yet using @@ -229,7 +238,7 @@ apex_defaults { compile_multilib: "both", manifest: "manifest-art.json", boot_images: ["art-boot-image"], - java_libs: libcore_java_libs, + java_libs: libcore_java_libs + art_java_libs, native_shared_libs: art_runtime_base_native_shared_libs + art_runtime_base_native_device_only_shared_libs + libcore_native_shared_libs, @@ -353,7 +362,7 @@ art_apex_test_host { host_supported: true, device_supported: false, manifest: "manifest-art.json", - java_libs: libcore_java_libs, + java_libs: libcore_java_libs + art_java_libs, ignore_system_library_special_case: true, native_shared_libs: art_runtime_base_native_shared_libs + art_runtime_debug_native_shared_libs + diff --git a/build/apex/art_apex_test.py b/build/apex/art_apex_test.py index 498ee95c9e..fbe62232e7 100755 --- a/build/apex/art_apex_test.py +++ b/build/apex/art_apex_test.py @@ -540,6 +540,8 @@ class ReleaseChecker: self._checker.check_native_library('libart-disassembler') self._checker.check_native_library('libartbase') self._checker.check_native_library('libartpalette') + self._checker.check_native_library('libartservice') + self._checker.check_native_library('libarttools') self._checker.check_native_library('libdexfile') self._checker.check_native_library('libdexfile_support') self._checker.check_native_library('libdt_fd_forward') @@ -548,6 +550,9 @@ class ReleaseChecker: self._checker.check_native_library('libprofile') self._checker.check_native_library('libsigchain') + # Check internal Java libraries + self._checker.check_java_library("artservice") + # Check java libraries for Managed Core Library. self._checker.check_java_library('apache-xml') self._checker.check_java_library('bouncycastle') diff --git a/libartservice/Android.bp b/libartservice/Android.bp new file mode 100644 index 0000000000..c629cfb58a --- /dev/null +++ b/libartservice/Android.bp @@ -0,0 +1,62 @@ +// Copyright (C) 2021 The Android Open Source Project +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +cc_library { + // This native library contains JNI support code for the ART Service Java + // Language library. + + name: "libartservice", + host_supported: true, + srcs: [ + "service/native/service.cc", + ], + export_include_dirs: ["."], + apex_available: [ + "com.android.art", + "com.android.art.debug", + ], + shared_libs: [ + "libbase", + ], + export_shared_lib_headers: ["libbase"], + cflags: ["-Werror"], +} + +java_library { + // This Java Language Library contains the ART Service class that will be + // loaded by the System Server. + + name: "artservice", + visibility: [ + "//art:__subpackages__", + ], + + apex_available: [ + "com.android.art", + "com.android.art.debug", + ], + + sdk_version: "core_platform", + + srcs: [ + "service/java/com/android/server/art/ArtService.java", + ], + + libs: [ + "art.module.api.annotations.for.system.modules", + "unsupportedappusage", + ], + + plugins: ["java_api_finder"], +} diff --git a/libartservice/service/java/com/android/server/art/ArtService.java b/libartservice/service/java/com/android/server/art/ArtService.java new file mode 100644 index 0000000000..bfc870e58c --- /dev/null +++ b/libartservice/service/java/com/android/server/art/ArtService.java @@ -0,0 +1,32 @@ +/* + * Copyright (C) 2021 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.server.art; + +import libcore.api.CorePlatformApi; + +/** + * This class provides a system API for functionality provided by the ART + * module. + */ +@libcore.api.CorePlatformApi(status = CorePlatformApi.Status.STABLE) +public final class ArtService { + static final String LOG_TAG = "ArtService"; + + static String getMsg() { + return "Hello world!"; + } +} diff --git a/libartservice/service/native/service.cc b/libartservice/service/native/service.cc new file mode 100644 index 0000000000..d33cb59515 --- /dev/null +++ b/libartservice/service/native/service.cc @@ -0,0 +1,27 @@ +/* + * Copyright (C) 2021 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "service.h" + +namespace art { +namespace service { + +std::string getMsg() { + return "hello world!"; +} + +} +} diff --git a/libartservice/service/native/service.h b/libartservice/service/native/service.h new file mode 100644 index 0000000000..2b680a28a4 --- /dev/null +++ b/libartservice/service/native/service.h @@ -0,0 +1,30 @@ +/* + * Copyright (C) 2021 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef ART_LIBARTSERVICE_SERVICE_NATIVE_SERVICE_H_ +#define ART_LIBARTSERVICE_SERVICE_NATIVE_SERVICE_H_ + +#include <string> + +namespace art { +namespace service { + +std::string getMsg(); + +} // namespace service +} // namespace art + +#endif // ART_LIBARTSERVICE_SERVICE_NATIVE_SERVICE_H_ diff --git a/libarttools/Android.bp b/libarttools/Android.bp new file mode 100644 index 0000000000..b602f4f4b5 --- /dev/null +++ b/libarttools/Android.bp @@ -0,0 +1,37 @@ +// +// Copyright (C) 2021 The Android Open Source Project +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +cc_library { + // This library contains low-level interfaces used to call dex2oat and + // related tools. It will translate structured messages into command line + // arguments. This will allow other libraries or programs besides the ART + // Service to make use of this functionality. + + name: "libarttools", + host_supported: true, + srcs: [ + "tools/tools.cc", + ], + export_include_dirs: ["."], + apex_available: [ + "com.android.art", + "com.android.art.debug", + ], + shared_libs: [ + "libbase", + ], + export_shared_lib_headers: ["libbase"], +} diff --git a/libarttools/tools/tools.cc b/libarttools/tools/tools.cc new file mode 100644 index 0000000000..a3a91e81e2 --- /dev/null +++ b/libarttools/tools/tools.cc @@ -0,0 +1,27 @@ +/* + * Copyright (C) 2021 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "tools.h" + +namespace art { +namespace tools { + +std::string getMsg() { + return "hello world!"; +} + +} +} diff --git a/libarttools/tools/tools.h b/libarttools/tools/tools.h new file mode 100644 index 0000000000..8231f5f74a --- /dev/null +++ b/libarttools/tools/tools.h @@ -0,0 +1,30 @@ +/* + * Copyright (C) 2021 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef ART_LIBARTTOOLS_TOOLS_TOOLS_H_ +#define ART_LIBARTTOOLS_TOOLS_TOOLS_H_ + +#include <string> + +namespace art { +namespace tools { + +std::string getMsg(); + +} // namespace tools +} // namespace art + +#endif // ART_LIBARTTOOLS_TOOLS_TOOLS_H_ |