Merge "Remove VNDK definition(s)" into main
diff --git a/Android.bp b/Android.bp
index 49c825d..2d42554 100644
--- a/Android.bp
+++ b/Android.bp
@@ -124,6 +124,7 @@
"//hardware:__subpackages__",
"//test/sts:__subpackages__",
"//vendor:__subpackages__",
+ "//visibility:any_system_partition",
],
}
diff --git a/TEST_MAPPING b/TEST_MAPPING
index 4e330d8..a9ce2a2 100644
--- a/TEST_MAPPING
+++ b/TEST_MAPPING
@@ -24,5 +24,15 @@
{
"name": "hidl_test"
}
+ ],
+ "postsubmit": [
+ {
+ "name": "CtsOsTestCases",
+ "options": [
+ {
+ "include-filter": "android.os.cts.HwBinderTest"
+ }
+ ]
+ }
]
}
diff --git a/transport/ServiceManagement.cpp b/transport/ServiceManagement.cpp
index 8867f53..54bb8dc 100644
--- a/transport/ServiceManagement.cpp
+++ b/transport/ServiceManagement.cpp
@@ -71,7 +71,16 @@
static constexpr bool kIsRecovery = false;
#endif
-static void waitForHwServiceManager() {
+static bool isHwServiceManagerInstalled() {
+ return access("/system_ext/bin/hwservicemanager", F_OK) == 0 ||
+ access("/system/system_ext/bin/hwservicemanager", F_OK) == 0 ||
+ access("/system/bin/hwservicemanager", F_OK) == 0;
+}
+
+static bool waitForHwServiceManager() {
+ if (!isHwServiceManagerInstalled()) {
+ return false;
+ }
// TODO(b/31559095): need bionic host so that we can use 'prop_info' returned
// from WaitForProperty
#ifdef __ANDROID__
@@ -80,10 +89,21 @@
using std::literals::chrono_literals::operator""s;
using android::base::WaitForProperty;
- while (!WaitForProperty(kHwServicemanagerReadyProperty, "true", 1s)) {
+ while (true) {
+ if (base::GetBoolProperty("hwservicemanager.disabled", false)) {
+ return false;
+ }
+ if (WaitForProperty(kHwServicemanagerReadyProperty, "true", 1s)) {
+ return true;
+ }
LOG(WARNING) << "Waited for hwservicemanager.ready for a second, waiting another...";
}
#endif // __ANDROID__
+ return true;
+}
+
+bool isHidlSupported() {
+ return waitForHwServiceManager();
}
static std::string binaryName() {
@@ -211,31 +231,6 @@
fqName == IServiceManager1_2::descriptor;
}
-static bool isHwServiceManagerInstalled() {
- return access("/system_ext/bin/hwservicemanager", F_OK) == 0 ||
- access("/system/system_ext/bin/hwservicemanager", F_OK) == 0 ||
- access("/system/bin/hwservicemanager", F_OK) == 0;
-}
-
-bool isHidlSupported() {
- if (!isHwServiceManagerInstalled()) {
- return false;
- }
-#ifdef __ANDROID__
- // TODO(b/218588089) remove this temporary support variable once Cuttlefish
- // (the only current Android V launching device) no longer requires HIDL.
- constexpr bool kTempHidlSupport = true;
- static const char* kVendorApiProperty = "ro.vendor.api_level";
- // HIDL and hwservicemanager are not supported in Android V+
- return android::base::GetIntProperty(kVendorApiProperty, 0) < __ANDROID_API_V__ ||
- kTempHidlSupport;
-#else
- // No access to properties and no requirement for dropping HIDL support if
- // this isn't Android
- return true;
-#endif // __ANDROID__
-}
-
/*
* A replacement for hwservicemanager when it is not installed on a device.
*
@@ -397,20 +392,18 @@
return gDefaultServiceManager;
}
- if (!isHidlSupported()) {
- // hwservicemanager is not available on this device.
- LOG(WARNING) << "hwservicemanager is not supported on the device.";
- gDefaultServiceManager = sp<NoHwServiceManager>::make();
- return gDefaultServiceManager;
- }
-
if (access("/dev/hwbinder", F_OK|R_OK|W_OK) != 0) {
// HwBinder not available on this device or not accessible to
// this process.
return nullptr;
}
- waitForHwServiceManager();
+ if (!isHidlSupported()) {
+ // hwservicemanager is not available on this device.
+ LOG(WARNING) << "hwservicemanager is not supported on the device.";
+ gDefaultServiceManager = sp<NoHwServiceManager>::make();
+ return gDefaultServiceManager;
+ }
while (gDefaultServiceManager == nullptr) {
gDefaultServiceManager =
diff --git a/vintfdata/Android.mk b/vintfdata/Android.mk
index 49e1733..ed8f506 100644
--- a/vintfdata/Android.mk
+++ b/vintfdata/Android.mk
@@ -28,17 +28,23 @@
endif
SYSTEM_EXT_MANIFEST_INPUT_FILES := $(LOCAL_PATH)/system_ext_manifest.default.xml
-ifdef SYSTEM_EXT_MANIFEST_FILES
- SYSTEM_EXT_MANIFEST_INPUT_FILES += $(SYSTEM_EXT_MANIFEST_FILES)
+
+ifeq ($(PRODUCT_HIDL_ENABLED),true)
+ifneq ($(filter hwservicemanager,$(PRODUCT_PACKAGES)),)
+SYSTEM_EXT_MANIFEST_INPUT_FILES += $(TOPDIR)system/hwservicemanager/hwservicemanager_no_max.xml
+else
+$(error If PRODUCT_HIDL_ENABLED is set, hwservicemanager must be added to PRODUCT_PACKAGES explicitly)
+endif
+else
+ifneq ($(filter hwservicemanager,$(PRODUCT_PACKAGES)),)
+SYSTEM_EXT_MANIFEST_INPUT_FILES += $(TOPDIR)system/hwservicemanager/hwservicemanager.xml
+else ifneq ($(filter hwservicemanager,$(PRODUCT_PACKAGES_SHIPPING_API_LEVEL_34)),)
+SYSTEM_EXT_MANIFEST_INPUT_FILES += $(TOPDIR)system/hwservicemanager/hwservicemanager.xml
+endif
endif
-# VNDK Version in device compatibility matrix and framework manifest
-ifeq ($(KEEP_VNDK),true)
-ifeq ($(BOARD_VNDK_VERSION),current)
-VINTF_VNDK_VERSION := $(PLATFORM_VNDK_VERSION)
-else
-VINTF_VNDK_VERSION := $(BOARD_VNDK_VERSION)
-endif
+ifdef SYSTEM_EXT_MANIFEST_FILES
+ SYSTEM_EXT_MANIFEST_INPUT_FILES += $(SYSTEM_EXT_MANIFEST_FILES)
endif
# Device Compatibility Matrix
@@ -59,31 +65,13 @@
GEN := $(local-generated-sources-dir)/compatibility_matrix.xml
-# VNDK is no longer a dependency for vendor version 35 and beyond
-$(GEN): PRIVATE_VINTF_VNDK_VERSION :=
-ifdef VINTF_VNDK_VERSION
-ifeq ($(call math_is_number,$(VINTF_VNDK_VERSION)),true)
-ifeq ($(call math_lt_or_eq,$(VINTF_VNDK_VERSION),34),true)
-$(GEN): PRIVATE_VINTF_VNDK_VERSION := $(VINTF_VNDK_VERSION)
-endif
-endif
-endif
$(GEN): PRIVATE_DEVICE_MATRIX_INPUT_FILE := $(DEVICE_MATRIX_INPUT_FILE)
-ifeq ($(PRIVATE_VINTF_VNDK_VERSION),)
$(GEN): $(DEVICE_MATRIX_INPUT_FILE) $(HOST_OUT_EXECUTABLES)/assemble_vintf
BOARD_SYSTEMSDK_VERSIONS="$(BOARD_SYSTEMSDK_VERSIONS)" \
$(HOST_OUT_EXECUTABLES)/assemble_vintf \
-i $(call normalize-path-list,$(PRIVATE_DEVICE_MATRIX_INPUT_FILE)) \
-o $@
-else
-$(GEN): $(DEVICE_MATRIX_INPUT_FILE) $(HOST_OUT_EXECUTABLES)/assemble_vintf
- REQUIRED_VNDK_VERSION=$(PRIVATE_VINTF_VNDK_VERSION) \
- BOARD_SYSTEMSDK_VERSIONS="$(BOARD_SYSTEMSDK_VERSIONS)" \
- $(HOST_OUT_EXECUTABLES)/assemble_vintf \
- -i $(call normalize-path-list,$(PRIVATE_DEVICE_MATRIX_INPUT_FILE)) \
- -o $@
-endif
LOCAL_PREBUILT_MODULE_FILE := $(GEN)
include $(BUILD_PREBUILT)
@@ -145,7 +133,7 @@
GEN := $(local-generated-sources-dir)/manifest.xml
$(GEN): PRIVATE_SYSTEM_EXT_MANIFEST_FILES := $(SYSTEM_EXT_MANIFEST_INPUT_FILES)
$(GEN): PRIVATE_PROVIDED_VNDK_VERSIONS := \
- $(sort $(VINTF_VNDK_VERSION) $(PRODUCT_EXTRA_VNDK_VERSIONS))
+ $(sort $(PRODUCT_EXTRA_VNDK_VERSIONS))
$(GEN): $(SYSTEM_EXT_MANIFEST_INPUT_FILES) $(HOST_OUT_EXECUTABLES)/assemble_vintf
PROVIDED_VNDK_VERSIONS="$(PRIVATE_PROVIDED_VNDK_VERSIONS)" \
@@ -156,7 +144,6 @@
LOCAL_PREBUILT_MODULE_FILE := $(GEN)
include $(BUILD_PREBUILT)
-VINTF_VNDK_VERSION :=
SYSTEM_MANIFEST_INPUT_FILES :=
SYSTEM_EXT_MANIFEST_INPUT_FILES :=
DEVICE_MATRIX_INPUT_FILE :=