DO NOT MERGE - Merge pie-platform-release (PPRL.181205.001) into master

Bug: 120502534
Change-Id: Ia67bedf5ff0b2e0aedaa38439dc7215a47d6833e
diff --git a/Android.mk b/Android.mk
index 04f8004..8b1efbf 100644
--- a/Android.mk
+++ b/Android.mk
@@ -12,21 +12,8 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
-#
-
 LOCAL_PATH := $(call my-dir)
 include $(CLEAR_VARS)
 
-CAR_API_CHECK := $(LOCAL_PATH)/apicheck.mk
-api_check_current_msg_file := $(LOCAL_PATH)/apicheck_msg_current.txt
-api_check_last_msg_file := $(LOCAL_PATH)/apicheck_msg_last.txt
-
-.PHONY: update-car-api
-
 # Include the sub-makefiles
 include $(call all-makefiles-under,$(LOCAL_PATH))
-
-# Clear out variables
-CAR_API_CHECK :=
-api_check_current_msg_file :=
-api_check_last_msg_file :=
diff --git a/apicheck.mk b/apicheck.mk
deleted file mode 100644
index b87c7d2..0000000
--- a/apicheck.mk
+++ /dev/null
@@ -1,286 +0,0 @@
-# Copyright (C) 2016 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.
-
-#
-# Input variables
-#
-# $(car_module) - name of the car library module
-# $(car_module_api_dir) - dir to store API files
-# $(car_module_include_systemapi) - if systemApi file should be generated
-# $(car_module_proguard_file) - where to output the proguard file, if empty no file will be produced
-# $(car_module_java_libraries) - dependent libraries
-# $(car_module_java_packages) - list of package names containing public classes
-# $(car_module_src_files) - list of source files
-# $(api_check_current_msg_file) - file containing error message for current API check
-# $(api_check_last_msg_file) - file containing error message for last SDK API check
-# ---------------------------------------------
-
-ifeq ($(BOARD_IS_AUTOMOTIVE), true)
-ifneq ($(TARGET_BUILD_PDK), true)
-#
-# Generate the public stub source files
-# ---------------------------------------------
-include $(CLEAR_VARS)
-
-car_module_api_file := \
-    $(TARGET_OUT_COMMON_INTERMEDIATES)/PACKAGING/$(car_module)_api.txt
-car_module_removed_file := \
-    $(TARGET_OUT_COMMON_INTERMEDIATES)/PACKAGING/$(car_module)_removed.txt
-
-LOCAL_MODULE := $(car_module)-stubs
-LOCAL_MODULE_CLASS := JAVA_LIBRARIES
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_SRC_FILES := $(car_module_src_files)
-LOCAL_JAVA_LIBRARIES := $(car_module_java_libraries) $(car_module)
-LOCAL_ADDITIONAL_JAVA_DIR := \
-    $(call intermediates-dir-for,$(LOCAL_MODULE_CLASS),$(car_module),,COMMON)/src
-LOCAL_SDK_VERSION := $(CAR_CURRENT_SDK_VERSION)
-
-LOCAL_DROIDDOC_STUB_OUT_DIR := $(TARGET_OUT_COMMON_INTERMEDIATES)/$(LOCAL_MODULE_CLASS)/$(LOCAL_MODULE)_intermediates/src
-
-LOCAL_DROIDDOC_OPTIONS:= \
-    -stubpackages "$(subst $(space),:,$(car_module_java_packages))" \
-    -api $(car_module_api_file) \
-    -removedApi $(car_module_removed_file) \
-    -nodocs \
-    -hide 113 \
-    -hide 110
-LOCAL_DROIDDOC_CUSTOM_TEMPLATE_DIR := external/doclava/res/assets/templates-sdk
-LOCAL_UNINSTALLABLE_MODULE := true
-
-include $(BUILD_DROIDDOC)
-car_stub_stamp := $(full_target)
-$(car_module_api_file) : $(full_target)
-
-ifeq ($(car_module_include_systemapi), true)
-#
-# Generate the system stub source files
-# ---------------------------------------------
-include $(CLEAR_VARS)
-
-car_module_system_api_file := \
-    $(TARGET_OUT_COMMON_INTERMEDIATES)/PACKAGING/$(car_module)_system_api.txt
-car_module_system_removed_file := \
-    $(TARGET_OUT_COMMON_INTERMEDIATES)/PACKAGING/$(car_module)_system_removed.txt
-
-LOCAL_MODULE := $(car_module)-system-stubs
-LOCAL_MODULE_CLASS := JAVA_LIBRARIES
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_SRC_FILES := $(car_module_src_files)
-LOCAL_JAVA_LIBRARIES := $(car_module_java_libraries) $(car_module)
-LOCAL_ADDITIONAL_JAVA_DIR := \
-    $(call intermediates-dir-for,$(LOCAL_MODULE_CLASS),$(car_module),,COMMON)/src
-LOCAL_SDK_VERSION := $(CAR_CURRENT_SDK_VERSION)
-
-LOCAL_DROIDDOC_STUB_OUT_DIR := $(TARGET_OUT_COMMON_INTERMEDIATES)/$(LOCAL_MODULE_CLASS)/$(LOCAL_MODULE)_intermediates/src
-
-LOCAL_DROIDDOC_OPTIONS:= \
-    -stubpackages "$(subst $(space),:,$(car_module_java_packages))" \
-    -showAnnotation android.annotation.SystemApi \
-    -api $(car_module_system_api_file) \
-    -removedApi $(car_module_system_removed_file) \
-    -nodocs \
-    -hide 113 \
-    -hide 110
-LOCAL_DROIDDOC_CUSTOM_TEMPLATE_DIR := external/doclava/res/assets/templates-sdk
-LOCAL_UNINSTALLABLE_MODULE := true
-
-include $(BUILD_DROIDDOC)
-car_system_stub_stamp := $(full_target)
-$(car_module_system_api_file) : $(full_target)
-
-#($(car_module_include_systemapi), true)
-endif
-
-
-ifneq ($(strip $(car_module_proguard_file)),)
-#
-# Generate a proguard files
-# ---------------------------------------------
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := $(car_module)-proguard
-LOCAL_MODULE_CLASS := JAVA_LIBRARIES
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_SRC_FILES := $(car_module_src_files)
-LOCAL_JAVA_LIBRARIES := $(car_module_java_libraries) $(car_module)
-LOCAL_ADDITIONAL_JAVA_DIR := \
-    $(call intermediates-dir-for,$(LOCAL_MODULE_CLASS),$(car_module),,COMMON)/src
-LOCAL_SDK_VERSION := $(CAR_CURRENT_SDK_VERSION)
-
-docs_proguard_intermediates_output := $(call intermediates-dir-for,$(LOCAL_MODULE_CLASS),$(LOCAL_MODULE),,COMMON)/keep_list.proguard
-LOCAL_DROIDDOC_OPTIONS := -proguard $(docs_proguard_intermediates_output)
-
-include $(BUILD_DROIDDOC)
-
-update-car-api: PRIVATE_PROGUARD_INTERMEDIATES_OUTPUT := $(docs_proguard_intermediates_output)
-update-car-api: PRIVATE_PROGUARD_OUTPUT_FILE := $(car_module_proguard_file)
-update-car-api: PRIVATE_CAR_MODULE := $(car_module)
-update-car-api: $(car_module)-proguard-docs | $(ACP)
-	@echo $(PRIVATE_CAR_MODULE) copying $(PRIVATE_PROGUARD_INTERMEDIATES_OUTPUT) to $(PRIVATE_PROGUARD_OUTPUT_FILE)
-	$(hide) $(ACP) $(PRIVATE_PROGUARD_INTERMEDIATES_OUTPUT) $(PRIVATE_PROGUARD_OUTPUT_FILE)
-
-# cleanup vars
-docs_proguard_output :=
-# ($(strip $(car_module_proguard_file)),)
-endif
-
-
-#
-# Check public API
-# ---------------------------------------------
-.PHONY: $(car_module)-check-public-api
-checkapi: $(car_module)-check-public-api
-$(car_module): $(car_module)-check-public-api
-
-last_released_sdk_$(car_module) := $(lastword $(call numerically_sort, \
-    $(filter-out current, \
-        $(patsubst $(car_module_api_dir)/%.txt,%, $(wildcard $(car_module_api_dir)/*.txt)) \
-    )))
-
-# Check that the API we're building hasn't broken the last-released SDK version
-# if it exists
-ifneq ($(last_released_sdk_$(car_module)),)
-$(eval $(call check-api, \
-    $(car_module)-checkapi-last, \
-    $(car_module_api_dir)/$(last_released_sdk_$(car_module)).txt, \
-    $(car_module_api_file), \
-    $(car_module_api_dir)/removed.txt, \
-    $(car_module_removed_file), \
-    -hide 2 -hide 3 -hide 4 -hide 5 -hide 6 -hide 24 -hide 25 -hide 26 -hide 27 \
-        -warning 7 -warning 8 -warning 9 -warning 10 -warning 11 -warning 12 \
-        -warning 13 -warning 14 -warning 15 -warning 16 -warning 17 -warning 18 -hide 113, \
-    cat $(api_check_last_msg_file), \
-    $(car_module)-check-public-api, \
-    $(car_stub_stamp)))
-endif
-
-# Check that the API we're building hasn't changed from the not-yet-released
-# SDK version.
-$(eval $(call check-api, \
-    $(car_module)-checkapi-current, \
-    $(car_module_api_dir)/current.txt, \
-    $(car_module_api_file), \
-    $(car_module_api_dir)/removed.txt, \
-    $(car_module_removed_file), \
-    -error 2 -error 3 -error 4 -error 5 -error 6 -error 7 -error 8 -error 9 -error 10 -error 11 \
-        -error 12 -error 13 -error 14 -error 15 -error 16 -error 17 -error 18 -error 19 -error 20 \
-        -error 21 -error 23 -error 24 -error 25 -hide 113, \
-    cat $(api_check_current_msg_file), \
-    $(car_module)-check-public-api, \
-    $(car_stub_stamp)))
-
-.PHONY: update-$(car_module)-api
-update-$(car_module)-api: PRIVATE_API_DIR := $(car_module_api_dir)
-update-$(car_module)-api: PRIVATE_MODULE := $(car_module)
-update-$(car_module)-api: PRIVATE_REMOVED_API_FILE := $(car_module_removed_file)
-update-$(car_module)-api: PRIVATE_PROGUARD_FILE := $(car_module_proguard_file)
-update-$(car_module)-api: $(car_module_api_file) | $(ACP)
-	@echo Copying $(PRIVATE_MODULE) current.txt
-	$(hide) $(ACP) $< $(PRIVATE_API_DIR)/current.txt
-	@echo Copying $(PRIVATE_MODULE) removed.txt
-	$(hide) $(ACP) $(PRIVATE_REMOVED_API_FILE) $(PRIVATE_API_DIR)/removed.txt
-
-# Run this update API task on the update-car-api task
-update-car-api: update-$(car_module)-api
-
-ifeq ($(car_module_include_systemapi), true)
-
-#
-# Check system API
-# ---------------------------------------------
-.PHONY: $(car_module)-check-system-api
-checkapi: $(car_module)-check-system-api
-$(car_module): $(car_module)-check-system-api
-
-last_released_system_sdk_$(car_module) := $(lastword $(call numerically_sort, \
-    $(filter-out system-current, \
-        $(patsubst $(car_module_api_dir)/%.txt,%, $(wildcard $(car_module_api_dir)/system-*.txt)) \
-    )))
-
-# Check that the API we're building hasn't broken the last-released SDK version
-# if it exists
-ifneq ($(last_released_system_sdk_$(car_module)),)
-$(eval $(call check-api, \
-    $(car_module)-checksystemapi-last, \
-    $(car_module_api_dir)/$(last_released_system_sdk_$(car_module)).txt, \
-    $(car_module_system_api_file), \
-    $(car_module_api_dir)/system-removed.txt, \
-    $(car_module_system_removed_file), \
-    -hide 2 -hide 3 -hide 4 -hide 5 -hide 6 -hide 24 -hide 25 -hide 26 -hide 27 \
-        -warning 7 -warning 8 -warning 9 -warning 10 -warning 11 -warning 12 \
-        -warning 13 -warning 14 -warning 15 -warning 16 -warning 17 -warning 18 -hide 113, \
-    cat $(api_check_last_msg_file), \
-    $(car_module)-check-system-api, \
-    $(car_system_stub_stamp)))
-endif
-
-# Check that the API we're building hasn't changed from the not-yet-released
-# SDK version.
-$(eval $(call check-api, \
-    $(car_module)-checksystemapi-current, \
-    $(car_module_api_dir)/system-current.txt, \
-    $(car_module_system_api_file), \
-    $(car_module_api_dir)/system-removed.txt, \
-    $(car_module_system_removed_file), \
-    -error 2 -error 3 -error 4 -error 5 -error 6 -error 7 -error 8 -error 9 -error 10 -error 11 \
-        -error 12 -error 13 -error 14 -error 15 -error 16 -error 17 -error 18 -error 19 -error 20 \
-        -error 21 -error 23 -error 24 -error 25 -hide 113, \
-    cat $(api_check_current_msg_file), \
-    $(car_module)-check-system-api, \
-    $(car_stub_stamp)))
-
-.PHONY: update-$(car_module)-system-api
-update-$(car_module)-system-api: PRIVATE_API_DIR := $(car_module_api_dir)
-update-$(car_module)-system-api: PRIVATE_MODULE := $(car_module)
-update-$(car_module)-system-api: PRIVATE_REMOVED_API_FILE := $(car_module_system_removed_file)
-update-$(car_module)-system-api: PRIVATE_PROGUARD_FILE := $(car_module_proguard_file)
-update-$(car_module)-system-api: $(car_module_system_api_file) | $(ACP)
-	@echo Copying $(PRIVATE_MODULE) system-current.txt
-	$(hide) $(ACP) $< $(PRIVATE_API_DIR)/system-current.txt
-	@echo Copying $(PRIVATE_MODULE) system-removed.txt
-	$(hide) $(ACP) $(PRIVATE_REMOVED_API_FILE) $(PRIVATE_API_DIR)/system-removed.txt
-
-# Run this update API task on the update-car-api task
-update-car-api: update-$(car_module)-system-api
-
-
-
-#($(car_module_include_systemapi), true)
-endif
-
-#($(TARGET_BUILD_PDK),true)
-endif
-
-#($(BOARD_IS_AUTOMOTIVE), true)
-endif
-#
-# Clear variables
-# ---------------------------------------------
-car_module :=
-car_module_api_dir :=
-car_module_src_files :=
-car_module_java_libraries :=
-car_module_java_packages :=
-car_module_api_file :=
-car_module_removed_file :=
-car_module_system_api_file :=
-car_module_system_removed__file :=
-car_stub_stamp :=
-car_system_stub_stamp :=
-car_module_include_systemapi :=
-car_module_proguard_file :=
diff --git a/apicheck_msg_current.txt b/apicheck_msg_current.txt
deleted file mode 100644
index fa3598f..0000000
--- a/apicheck_msg_current.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-
-******************************
-You have tried to change a car library API from what has been previously approved.
-
-To make these errors go away, you have two choices:
-   1) You can add "@hide" javadoc comments to the methods, etc. listed in the
-      errors above.
-
-   2) You can update current.txt by executing the following command:
-         make update-car-api
-
-      To submit the revised current.txt to the main Android repository,
-      you will need approval.
-******************************
diff --git a/apicheck_msg_last.txt b/apicheck_msg_last.txt
deleted file mode 100644
index 5f54821..0000000
--- a/apicheck_msg_last.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-
-******************************
-You have tried to change a car library API from what has
-been previously released in an SDK. Please fix the errors listed above.
-******************************
diff --git a/car-lib/Android.bp b/car-lib/Android.bp
index 5c719e9..287949e 100644
--- a/car-lib/Android.bp
+++ b/car-lib/Android.bp
@@ -47,3 +47,170 @@
     ],
 }
 
+java_library {
+    name: "android.car",
+    srcs: [
+        "src/**/*.java",
+        "src_feature_future/**/*.java",
+        "src/**/I*.aidl",
+    ],
+    aidl: {
+        include_dirs: [
+            "system/bt/binder",
+        ],
+    },
+    exclude_srcs: [
+        "src/android/car/storagemonitoring/IoStats.aidl",
+        "src/android/car/storagemonitoring/IoStatsEntry.aidl",
+    ],
+    product_variables: {
+        pdk: {
+            enabled: false,
+        },
+    },
+    installable: true,
+}
+
+doc_defaults {
+    name: "android.car-docs-default",
+    srcs: [
+        "src/**/*.java",
+        "src_feature_future/**/*.java",
+    ],
+    libs: [
+        "android.car",
+    ],
+    custom_template: "droiddoc-templates-sdk",
+    product_variables: {
+        pdk: {
+            enabled: false,
+        },
+    },
+}
+
+genrule {
+    name: "android-car-last-released-api",
+    srcs: [
+        "api/released/*.txt",
+    ],
+    cmd: "cp -f $$(echo $(in) | tr \" \" \"\\n\" | sort -n | tail -1) $(genDir)/last-released-api.txt",
+    out: [
+        "last-released-api.txt",
+    ],
+}
+
+genrule {
+    name: "android-car-last-released-system-api",
+    srcs: [
+        "api/system-released/*.txt",
+    ],
+    cmd: "cp -f $$(echo $(in) | tr \" \" \"\\n\" | sort -n | tail -1) $(genDir)/last-released-system-api.txt",
+    out: [
+        "last-released-system-api.txt",
+    ],
+}
+
+droiddoc {
+    name: "android.car-stubs-docs",
+    defaults: ["android.car-docs-default"],
+    api_tag_name: "ANDROID_CAR",
+    api_filename: "api.txt",
+    removed_api_filename: "removed.txt",
+    args: "-hide 113 -hide 110 -nodocs -stubpackages android.car* ",
+    installable: false,
+    check_api: {
+        last_released: {
+            api_file: ":android-car-last-released-api",
+            removed_api_file: "api/removed.txt",
+            args: " -hide 2 -hide 3 -hide 4 -hide 5 -hide 6 -hide 24 -hide 25 -hide 26 -hide 27 " +
+                  " -warning 7 -warning 8 -warning 9 -warning 10 -warning 11 -warning 12 " +
+                  " -warning 13 -warning 14 -warning 15 -warning 16 -warning 17 -warning 18 -hide 113 ",
+        },
+        current: {
+            api_file: "api/current.txt",
+            removed_api_file: "api/removed.txt",
+            args: " -error 2 -error 3 -error 4 -error 5 -error 6 -error 7 -error 8 -error 9 -error 10 -error 11 " +
+                  " -error 12 -error 13 -error 14 -error 15 -error 16 -error 17 -error 18 -error 19 -error 20 " +
+                  " -error 21 -error 23 -error 24 -error 25 -hide 113 ",
+        },
+    },
+}
+
+droiddoc {
+    name: "android.car-system-stubs-docs",
+    defaults: ["android.car-docs-default"],
+    api_tag_name: "ANDROID_CAR_SYSTEM",
+    api_filename: "api.txt",
+    removed_api_filename: "removed.txt",
+    args: "-hide 113 -hide 110 -nodocs -stubpackages android.car* " +
+        "-showAnnotation android.annotation.SystemApi ",
+    installable: false,
+    check_api: {
+        last_released: {
+            api_file: ":android-car-last-released-system-api",
+            removed_api_file: "api/system-removed.txt",
+            args: " -hide 2 -hide 3 -hide 4 -hide 5 -hide 6 -hide 24 -hide 25 -hide 26 -hide 27 " +
+                  " -warning 7 -warning 8 -warning 9 -warning 10 -warning 11 -warning 12 " +
+                  " -warning 13 -warning 14 -warning 15 -warning 16 -warning 17 -warning 18 -hide 113 ",
+        },
+        current: {
+            api_file: "api/system-current.txt",
+            removed_api_file: "api/system-removed.txt",
+            args: " -error 2 -error 3 -error 4 -error 5 -error 6 -error 7 -error 8 -error 9 -error 10 -error 11 " +
+                  " -error 12 -error 13 -error 14 -error 15 -error 16 -error 17 -error 18 -error 19 -error 20 " +
+                  " -error 21 -error 23 -error 24 -error 25 -hide 113 ",
+        },
+    },
+}
+
+droiddoc {
+    name: "android.car-stub-docs",
+    srcs: [
+        "src/**/*.java",
+    ],
+    libs: [
+        "android.car",
+    ],
+    api_tag_name: "ANDROID_CAR_STUB",
+    api_filename: "api.txt",
+    custom_template: "droiddoc-templates-sdk",
+    args: "-nodocs -stubpackages android.car* ",
+    installable: false,
+    product_variables: {
+        pdk: {
+            enabled: false,
+        },
+    },
+}
+
+java_library_static {
+    name: "android.car-stubs",
+    srcs: [
+        ":android.car-stub-docs",
+    ],
+    libs: [
+        "android.car",
+    ],
+    product_variables: {
+        pdk: {
+            enabled: false,
+        },
+    },
+    compile_dex: true,
+}
+
+java_library_static {
+    name: "android.car-system-stubs",
+    srcs: [
+        ":android.car-system-stubs-docs",
+    ],
+    libs: [
+        "android.car",
+    ],
+    product_variables: {
+        pdk: {
+            enabled: false,
+        },
+    },
+    compile_dex: true,
+}
diff --git a/car-lib/Android.mk b/car-lib/Android.mk
index 3cb7d82..41c6d86 100644
--- a/car-lib/Android.mk
+++ b/car-lib/Android.mk
@@ -21,113 +21,9 @@
 
 include $(CLEAR_VARS)
 
-LOCAL_MODULE := android.car
-LOCAL_MODULE_TAGS := optional
-
-ifneq ($(TARGET_USES_CAR_FUTURE_FEATURES),true)
-#TODO need a tool to generate proguard rule to drop all items under @FutureFeature
-#LOCAL_PROGUARD_ENABLED := custom
-#LOCAL_PROGUARD_FLAG_FILES := proguard_drop_future.flags
-endif
-
-car_lib_sources := $(call all-java-files-under, src)
-ifeq ($(TARGET_USES_CAR_FUTURE_FEATURES),true)
-car_lib_sources += $(call all-java-files-under, src_feature_future)
-else
-car_lib_sources += $(call all-java-files-under, src_feature_current)
-endif
-
-car_lib_sources += $(call all-Iaidl-files-under, src)
-
-# IoStats* are parcelable types (vs. interface types), but the build system uses an initial
-# I as a magic marker to mean "interface", and due to this ends up refusing to compile
-# these files as part of the build process.
-# A clean solution to this is actively being worked on by the build team, but is not yet
-# available, so for now we just filter the files out by hand.
-car_lib_sources := $(filter-out src/android/car/storagemonitoring/IoStats.aidl,$(car_lib_sources))
-car_lib_sources := $(filter-out src/android/car/storagemonitoring/IoStatsEntry.aidl,$(car_lib_sources))
-
-LOCAL_AIDL_INCLUDES += system/bt/binder
-
-LOCAL_SRC_FILES := $(car_lib_sources)
-
-ifeq ($(EMMA_INSTRUMENT_FRAMEWORK),true)
-LOCAL_EMMA_INSTRUMENT := true
-endif
-
-include $(BUILD_JAVA_LIBRARY)
-
 ifeq ($(BOARD_IS_AUTOMOTIVE), true)
-$(call dist-for-goals,dist_files,$(full_classes_jar):$(LOCAL_MODULE).jar)
+full_classes_jar := $(call intermediates-dir-for,JAVA_LIBRARIES,android.car,,COMMON)/classes.jar
+$(call dist-for-goals,dist_files,$(full_classes_jar):android.car.jar)
 endif
 
-# API Check
-# ---------------------------------------------
-car_module := $(LOCAL_MODULE)
-car_module_src_files := $(LOCAL_SRC_FILES)
-car_module_api_dir := $(LOCAL_PATH)/api
-car_module_java_libraries := framework
-car_module_include_systemapi := true
-car_module_java_packages := android.car*
-include $(CAR_API_CHECK)
-
-# Build stubs jar for target android-support-car
-# ---------------------------------------------
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_JAVA_LIBRARIES := android.car
-
-LOCAL_ADDITIONAL_JAVA_DIR := $(call intermediates-dir-for,JAVA_LIBRARIES,android.car,,COMMON)/src
-
-android_car_stub_packages := \
-    android.car*
-
-android_car_api := \
-    $(TARGET_OUT_COMMON_INTERMEDIATES)/PACKAGING/android.car_api.txt
-
-# Note: The make target is android.car-stub-docs
-LOCAL_MODULE := android.car-stub
-LOCAL_DROIDDOC_OPTIONS := \
-    -stubs $(call intermediates-dir-for,JAVA_LIBRARIES,android.car-stubs,,COMMON)/src \
-    -stubpackages $(subst $(space),:,$(android_car_stub_packages)) \
-    -api $(android_car_api) \
-    -nodocs
-
-LOCAL_DROIDDOC_SOURCE_PATH := $(LOCAL_PATH)/java/
-LOCAL_DROIDDOC_HTML_DIR :=
-
-LOCAL_MODULE_CLASS := JAVA_LIBRARIES
-
-LOCAL_UNINSTALLABLE_MODULE := true
-
-include $(BUILD_DROIDDOC)
-
-$(android_car_api): $(full_target)
-
-android.car-stubs_stamp := $(full_target)
-
-###############################################
-# Build the stubs java files into a jar. This build rule relies on the
-# stubs_stamp make variable being set from the droiddoc rule.
-
-include $(CLEAR_VARS)
-
-# CAR_API_CHECK uses the same name to generate a module, but BUILD_DROIDDOC
-# appends "-docs" to module name.
-LOCAL_MODULE := android.car-stubs
-LOCAL_SOURCE_FILES_ALL_GENERATED := true
-
-# Make sure to run droiddoc first to generate the stub source files.
-LOCAL_ADDITIONAL_DEPENDENCIES := $(android.car-stubs_stamp)
-
-include $(BUILD_STATIC_JAVA_LIBRARY)
-
-android.car-stubs_stamp :=
-android_car_stub_packages :=
-android_car_api :=
-
-include $(call all-makefiles-under,$(LOCAL_PATH))
-
 endif #TARGET_BUILD_PDK
diff --git a/car-lib/api/1.txt b/car-lib/api/released/1.txt
similarity index 100%
rename from car-lib/api/1.txt
rename to car-lib/api/released/1.txt
diff --git a/car-lib/api/2.txt b/car-lib/api/released/2.txt
similarity index 100%
rename from car-lib/api/2.txt
rename to car-lib/api/released/2.txt
diff --git a/car-lib/api/system-1.txt b/car-lib/api/system-released/system-1.txt
similarity index 100%
rename from car-lib/api/system-1.txt
rename to car-lib/api/system-released/system-1.txt
diff --git a/car-lib/api/system-2.txt b/car-lib/api/system-released/system-2.txt
similarity index 100%
rename from car-lib/api/system-2.txt
rename to car-lib/api/system-released/system-2.txt
diff --git a/car-lib/src/android/car/vms/VmsSubscriberManager.java b/car-lib/src/android/car/vms/VmsSubscriberManager.java
index fe9e8c3..1416b41 100644
--- a/car-lib/src/android/car/vms/VmsSubscriberManager.java
+++ b/car-lib/src/android/car/vms/VmsSubscriberManager.java
@@ -155,11 +155,11 @@
         } catch (RemoteException e) {
             Log.e(TAG, "Could not connect: ", e);
             throw new CarNotConnectedException(e);
-        }
-
-        synchronized (mClientCallbackLock) {
-            mClientCallback = null;
-            mExecutor = null;
+        } finally {
+            synchronized (mClientCallbackLock) {
+                mClientCallback = null;
+                mExecutor = null;
+            }
         }
     }
 
diff --git a/car-lib/src_feature_current/com/android/car/internal/FeatureConfiguration.java b/car-lib/src_feature_current/com/android/car/internal/FeatureConfiguration.java
deleted file mode 100644
index 462f320..0000000
--- a/car-lib/src_feature_current/com/android/car/internal/FeatureConfiguration.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Copyright (C) 2017 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.car.internal;
-
-/**
- * Class to hold static boolean flag for enabling / disabling features.
- *
- * @hide
- */
-public class FeatureConfiguration {
-    /** Disable future feature by default. */
-    public static final boolean DEFAULT = false;
-    /** product configuration in CarInfoManager */
-    public static final boolean ENABLE_PRODUCT_CONFIGURATION_INFO = DEFAULT;
-}
diff --git a/car-support-lib/Android.bp b/car-support-lib/Android.bp
new file mode 100644
index 0000000..2d4269e
--- /dev/null
+++ b/car-support-lib/Android.bp
@@ -0,0 +1,103 @@
+// Copyright (C) 2018 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.
+
+java_library_static {
+    name: "android.support.car",
+    srcs: [
+        "src/**/*.java",
+        "src/**/I*.aidl",
+    ],
+    aidl: {
+        include_dirs: [
+            "system/bt/binder",
+        ],
+    },
+    libs: [
+        "android.car",
+    ],
+    static_libs: [
+        "androidx.annotation_annotation",
+    ],
+    platform_apis: true,
+    product_variables: {
+        pdk: {
+            enabled: false,
+        },
+    },
+    installable: true,
+}
+
+doc_defaults {
+    name: "android.support.car-docs-default",
+    srcs: [
+        "src/**/*.java",
+    ],
+    libs: [
+        "android.car",
+        "android.support.car",
+        "androidx.annotation_annotation",
+    ],
+    custom_template: "droiddoc-templates-sdk",
+    product_variables: {
+        pdk: {
+            enabled: false,
+        },
+    },
+}
+
+droiddoc {
+    name: "android.support.car-stubs-docs",
+    defaults: ["android.support.car-docs-default"],
+    api_tag_name: "ANDROID_SUPPORT_CAR",
+    api_filename: "api.txt",
+    removed_api_filename: "removed.txt",
+    args: "-hide 113 -hide 110 -nodocs -stubpackages android.support.car* ",
+    installable: false,
+    check_api: {
+        current: {
+            api_file: "api/current.txt",
+            removed_api_file: "api/removed.txt",
+            args: " -error 2 -error 3 -error 4 -error 5 -error 6 -error 7 -error 8 -error 9 -error 10 -error 11 " +
+                  " -error 12 -error 13 -error 14 -error 15 -error 16 -error 17 -error 18 -error 19 -error 20 " +
+                  " -error 21 -error 23 -error 24 -error 25 -hide 113 ",
+        },
+    },
+}
+
+droiddoc {
+    name: "android.support.car-proguard-docs",
+    defaults: ["android.support.car-docs-default"],
+    api_tag_name: "ANDROID_SUPPORT_CAR_PROGUARD",
+    proguard_filename: "keep_list.proguard",
+    create_stubs: false,
+}
+
+// TODO(deanh) support lib should be able to be using public APIs only
+droiddoc {
+    name: "android.support.car-docs",
+    srcs: [
+        "src/**/*.java",
+    ],
+    libs: [
+        "android.car",
+        "androidx.annotation_annotation",
+    ],
+    custom_template: "droiddoc-templates-sdk",
+    create_stubs: false,
+    product_variables: {
+        pdk: {
+            enabled: false,
+        },
+    },
+}
diff --git a/car-support-lib/Android.mk b/car-support-lib/Android.mk
index 6201f21..cfa40be 100644
--- a/car-support-lib/Android.mk
+++ b/car-support-lib/Android.mk
@@ -76,59 +76,9 @@
     $(call dist-for-goals, dist_files, $(built_aar):android.support.car-1p.aar)
 endif
 
-# Build support library.
-# ---------------------------------------------
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := android.support.car
-
-#TODO(b/72620511) support lib should be able to be using public APIs only
-#LOCAL_SDK_VERSION := current
-LOCAL_PRIVATE_PLATFORM_APIS := true
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src) $(call all-Iaidl-files-under, src)
-
-LOCAL_STATIC_JAVA_LIBRARIES += androidx.annotation_annotation
-
-LOCAL_JAVA_LIBRARIES += android.car
-
-include $(BUILD_STATIC_JAVA_LIBRARY)
-
-# API Check
-# ---------------------------------------------
-car_module := $(LOCAL_MODULE)
-car_module_src_files := $(LOCAL_SRC_FILES)
-car_module_proguard_file := $(LOCAL_PATH)/proguard-release.flags
-car_module_api_dir := $(LOCAL_PATH)/api
-car_module_java_libraries := $(LOCAL_JAVA_LIBRARIES) $(LOCAL_STATIC_JAVA_LIBRARIES) framework
-car_module_java_packages := android.support.car*
-car_module_include_proguard := true
-include $(CAR_API_CHECK)
-
-
-# Generate offline docs
-#---------------------------------------------
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src) $(call all-Iaidl-files-under, src)
-
-LOCAL_DROIDDOC_SOURCE_PATH := $(LOCAL_PATH)/src
-
-LOCAL_JAVA_LIBRARIES := \
-    android.car \
-    androidx.annotation_annotation
-
-LOCAL_MODULE := android.support.car
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE_CLASS := JAVA_LIBRARIES
-LOCAL_IS_HOST_MODULE := false
-
-LOCAL_ADDITIONAL_JAVA_DIR := $(call intermediates-dir-for,$(LOCAL_MODULE_CLASS),android.support.car,,COMMON)
-
-LOCAL_DROIDDOC_CUSTOM_TEMPLATE_DIR := external/doclava/res/assets/templates-sdk
-
-include $(BUILD_DROIDDOC)
-
+.PHONY: update-support-car-proguard-api
+update-support-car-proguard-api: $(INTERNAL_PLATFORM_ANDROID_SUPPORT_CAR_PROGUARD_PROGUARD_FILE) | $(ACP)
+	@echo $(PRIVATE_CAR_MODULE) copying $(INTERNAL_PLATFORM_ANDROID_SUPPORT_CAR_PROGUARD_PROGUARD_FILE) to $(LOCAL_PATH)/proguard-release.flags
+	$(hide) $(ACP) $(INTERNAL_PLATFORM_ANDROID_SUPPORT_CAR_PROGUARD_PROGUARD_FILE) $(LOCAL_PATH)/proguard-release.flags
 
 endif #TARGET_BUILD_PDK
diff --git a/car_product/build/car.mk b/car_product/build/car.mk
index 669e828..0250813 100644
--- a/car_product/build/car.mk
+++ b/car_product/build/car.mk
@@ -126,5 +126,11 @@
 PRODUCT_BOOT_JARS += \
     android.car
 
+PRODUCT_HIDDENAPI_STUBS := \
+    android.car-stubs
+
+PRODUCT_HIDDENAPI_STUBS_SYSTEM := \
+    android.car-system-stubs
+
 INCLUDED_ANDROID_CAR_TO_PRODUCT_BOOT_JARS := yes
 endif
diff --git a/car_product/build/car_base.mk b/car_product/build/car_base.mk
index 9138090..bd5f9cd 100644
--- a/car_product/build/car_base.mk
+++ b/car_product/build/car_base.mk
@@ -20,8 +20,6 @@
 PRODUCT_PACKAGE_OVERLAYS += packages/services/Car/car_product/overlay
 
 PRODUCT_PACKAGES += \
-    ContactsProvider \
-    DefaultContainerService \
     Home \
     BasicDreams \
     CaptivePortalLogin \
@@ -36,7 +34,6 @@
     Launcher2 \
     ManagedProvisioning \
     PacProcessor \
-    libpac \
     PrintSpooler \
     ProxyHandler \
     Settings \
@@ -46,39 +43,13 @@
     ExternalStorageProvider \
     atrace \
     libandroidfw \
-    libaudiopreprocessing \
     libaudioutils \
-    libfilterpack_imageproc \
-    libgabi++ \
     libmdnssd \
     libnfc_ndef \
     libpowermanager \
     libspeexresampler \
-    libstagefright_soft_aacdec \
-    libstagefright_soft_aacenc \
-    libstagefright_soft_amrdec \
-    libstagefright_soft_amrnbenc \
-    libstagefright_soft_amrwbenc \
-    libstagefright_soft_avcdec \
-    libstagefright_soft_avcenc \
-    libstagefright_soft_flacdec \
-    libstagefright_soft_flacenc \
-    libstagefright_soft_g711dec \
-    libstagefright_soft_gsmdec \
-    libstagefright_soft_hevcdec \
-    libstagefright_soft_mp3dec \
-    libstagefright_soft_mpeg2dec \
-    libstagefright_soft_mpeg4dec \
-    libstagefright_soft_mpeg4enc \
-    libstagefright_soft_opusdec \
-    libstagefright_soft_rawdec \
-    libstagefright_soft_vorbisdec \
-    libstagefright_soft_vpxdec \
-    libstagefright_soft_vpxenc \
     libvariablespeed \
     libwebrtc_audio_preprocessing \
-    mdnsd \
-    requestsync \
     wifi-service \
     A2dpSinkService \
 
diff --git a/car_product/overlay/frameworks/base/packages/SettingsLib/res/values/dimens.xml b/car_product/overlay/frameworks/base/packages/SettingsLib/res/values/dimens.xml
index f295e6c..70d19e0 100644
--- a/car_product/overlay/frameworks/base/packages/SettingsLib/res/values/dimens.xml
+++ b/car_product/overlay/frameworks/base/packages/SettingsLib/res/values/dimens.xml
@@ -15,12 +15,8 @@
   ~ limitations under the License
   -->
 <resources>
+    <add-resource type="dimen" name="small_text_size" />
     <dimen name="small_text_size">24sp</dimen>
+    <add-resource type="dimen" name="medium_text_size" />
     <dimen name="medium_text_size">28sp</dimen>
-    <dimen name="drawer_icon_size">54dp</dimen>
-    <dimen name="normal_icon_size">54dp</dimen>
-    <dimen name="drawer_icon_margin">44dp</dimen>
-    <dimen name="drawer_width">600dp</dimen>
-    <dimen name="drawer_item_top_bottom_margin">8dp</dimen>
-    <dimen name="drawer_spacer_height">70dp</dimen>
 </resources>
diff --git a/car_product/sepolicy/private/procfsinspector.te b/car_product/sepolicy/private/procfsinspector.te
index 9bee707..e2aa062 100644
--- a/car_product/sepolicy/private/procfsinspector.te
+++ b/car_product/sepolicy/private/procfsinspector.te
@@ -1,5 +1,5 @@
 type procfsinspector, domain, coredomain;
-type procfsinspector_exec, exec_type, file_type;
+type procfsinspector_exec, exec_type, file_type, system_file_type;
 
 init_daemon_domain(procfsinspector)
 
diff --git a/car_product/sepolicy/test/powertestservice.te b/car_product/sepolicy/test/powertestservice.te
index 2e2ace7..2d7d48e 100644
--- a/car_product/sepolicy/test/powertestservice.te
+++ b/car_product/sepolicy/test/powertestservice.te
@@ -1,5 +1,5 @@
 type powertestservice, domain, coredomain;
-type powertestservice_exec, exec_type, file_type;
+type powertestservice_exec, exec_type, file_type, system_file_type;
 
 init_daemon_domain(powertestservice)
 
diff --git a/evs/app/RenderDirectView.cpp b/evs/app/RenderDirectView.cpp
index f0d26e4..d7267cf 100644
--- a/evs/app/RenderDirectView.cpp
+++ b/evs/app/RenderDirectView.cpp
@@ -138,6 +138,6 @@
 
     // Wait for the rendering to finish
     glFinish();
-
+    detachRenderTarget();
     return true;
 }
diff --git a/evs/app/RenderTopView.cpp b/evs/app/RenderTopView.cpp
index 80ccb11..f09e76f 100644
--- a/evs/app/RenderTopView.cpp
+++ b/evs/app/RenderTopView.cpp
@@ -217,7 +217,7 @@
 
     // Wait for the rendering to finish
     glFinish();
-
+    detachRenderTarget();
     return true;
 }
 
diff --git a/evs/manager/HalCamera.cpp b/evs/manager/HalCamera.cpp
index 41cff24..ba2e9c6 100644
--- a/evs/manager/HalCamera.cpp
+++ b/evs/manager/HalCamera.cpp
@@ -130,6 +130,7 @@
     Return<EvsResult> result = EvsResult::OK;
 
     if (mStreamState == STOPPED) {
+        mStreamState = RUNNING;
         result = mHwCamera->startVideoStream(this);
     }
 
@@ -149,6 +150,7 @@
 
     // If not, then stop the hardware stream
     if (!stillRunning) {
+        mStreamState = STOPPED;
         mHwCamera->stopVideoStream();
     }
 }
diff --git a/service/Android.mk b/service/Android.mk
index d9ae9ec..e961fbb 100644
--- a/service/Android.mk
+++ b/service/Android.mk
@@ -49,7 +49,7 @@
         car-systemtest \
         com.android.car.procfsinspector-client \
 
-include frameworks/base/packages/SettingsLib/common.mk
+LOCAL_STATIC_ANDROID_LIBRARIES := SettingsLib androidx.preference_preference
 
 include $(BUILD_PACKAGE)
 
@@ -76,7 +76,9 @@
         car-systemtest \
         com.android.car.procfsinspector-client \
 
-include frameworks/base/packages/SettingsLib/common.mk
+LOCAL_MIN_SDK_VERSION := 25
+
+LOCAL_STATIC_ANDROID_LIBRARIES := SettingsLib androidx.preference_preference
 
 include $(BUILD_STATIC_JAVA_LIBRARY)
 
diff --git a/service/AndroidManifest.xml b/service/AndroidManifest.xml
index 870ed10..24c9cd7 100644
--- a/service/AndroidManifest.xml
+++ b/service/AndroidManifest.xml
@@ -231,7 +231,7 @@
     <uses-permission android:name="android.permission.LOCATION_HARDWARE" />
     <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
 
-    <application android:label="Car service"
+    <application android:label="@string/app_title"
                  android:directBootAware="true"
                  android:allowBackup="false"
                  android:persistent="true">
diff --git a/service/res/values/strings.xml b/service/res/values/strings.xml
index 9423e85..1947e43 100644
--- a/service/res/values/strings.xml
+++ b/service/res/values/strings.xml
@@ -14,6 +14,8 @@
      limitations under the License.
 -->
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_title">Car service</string>
+
     <!--  For permissions -->
     <!-- Permission text: can access your car's information [CHAR LIMIT=NONE] -->
     <string name="car_permission_label">Car information</string>
diff --git a/tests/EmbeddedKitchenSinkApp/Android.mk b/tests/EmbeddedKitchenSinkApp/Android.mk
index 7a8c145..71adf6b 100644
--- a/tests/EmbeddedKitchenSinkApp/Android.mk
+++ b/tests/EmbeddedKitchenSinkApp/Android.mk
@@ -41,7 +41,7 @@
 LOCAL_DEX_PREOPT := false
 
 LOCAL_STATIC_ANDROID_LIBRARIES += \
-    android-support-car \
+    androidx.car_car \
     car-service-lib-for-test
 
 LOCAL_STATIC_JAVA_LIBRARIES += \
diff --git a/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/KitchenSinkActivity.java b/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/KitchenSinkActivity.java
index caca03a..9453bf7 100644
--- a/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/KitchenSinkActivity.java
+++ b/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/KitchenSinkActivity.java
@@ -30,12 +30,12 @@
 import android.support.car.CarAppFocusManager;
 import android.support.car.CarConnectionCallback;
 import android.support.car.CarNotConnectedException;
-import android.support.v4.app.Fragment;
 import android.util.Log;
 
 import androidx.car.drawer.CarDrawerActivity;
 import androidx.car.drawer.CarDrawerAdapter;
 import androidx.car.drawer.DrawerItemViewHolder;
+import androidx.fragment.app.Fragment;
 
 import com.google.android.car.kitchensink.activityview.ActivityViewTestFragment;
 import com.google.android.car.kitchensink.alertdialog.AlertDialogTestFragment;
diff --git a/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/activityview/ActivityViewTestFragment.java b/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/activityview/ActivityViewTestFragment.java
index 2df0b07..a41427d 100644
--- a/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/activityview/ActivityViewTestFragment.java
+++ b/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/activityview/ActivityViewTestFragment.java
@@ -21,12 +21,13 @@
 import android.content.Intent;
 import android.os.Bundle;
 import android.os.SystemClock;
-import android.support.annotation.Nullable;
-import android.support.v4.app.Fragment;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 
+import androidx.annotation.Nullable;
+import androidx.fragment.app.Fragment;
+
 import com.google.android.car.kitchensink.R;
 
 import java.util.Random;
diff --git a/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/alertdialog/AlertDialogTestFragment.java b/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/alertdialog/AlertDialogTestFragment.java
index f2f5712..324df02 100644
--- a/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/alertdialog/AlertDialogTestFragment.java
+++ b/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/alertdialog/AlertDialogTestFragment.java
@@ -19,12 +19,13 @@
 import android.app.AlertDialog;
 import android.content.DialogInterface;
 import android.os.Bundle;
-import android.support.v4.app.Fragment;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.Button;
 
+import androidx.fragment.app.Fragment;
+
 import com.google.android.car.kitchensink.R;
 
 /**
diff --git a/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/assistant/CarAssistantFragment.java b/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/assistant/CarAssistantFragment.java
index 4bee453..9f3ab1a 100644
--- a/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/assistant/CarAssistantFragment.java
+++ b/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/assistant/CarAssistantFragment.java
@@ -18,8 +18,6 @@
 import android.content.Context;
 import android.content.Intent;
 import android.os.Bundle;
-import android.support.annotation.Nullable;
-import android.support.v4.app.Fragment;
 import android.view.HapticFeedbackConstants;
 import android.view.LayoutInflater;
 import android.view.View;
@@ -27,6 +25,9 @@
 import android.widget.ImageView;
 import android.widget.Toast;
 
+import androidx.annotation.Nullable;
+import androidx.fragment.app.Fragment;
+
 import com.google.android.car.kitchensink.R;
 
 public class CarAssistantFragment extends Fragment {
diff --git a/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/audio/AudioTestFragment.java b/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/audio/AudioTestFragment.java
index 626dc2a..6325512 100644
--- a/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/audio/AudioTestFragment.java
+++ b/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/audio/AudioTestFragment.java
@@ -31,7 +31,6 @@
 import android.os.Handler;
 import android.os.IBinder;
 import android.os.Looper;
-import android.support.v4.app.Fragment;
 import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.View;
@@ -42,6 +41,8 @@
 import android.widget.Toast;
 import android.widget.ToggleButton;
 
+import androidx.fragment.app.Fragment;
+
 import com.google.android.car.kitchensink.CarEmulator;
 import com.google.android.car.kitchensink.R;
 
diff --git a/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/bluetooth/BluetoothHeadsetFragment.java b/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/bluetooth/BluetoothHeadsetFragment.java
index a98d49e..2d57d28 100644
--- a/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/bluetooth/BluetoothHeadsetFragment.java
+++ b/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/bluetooth/BluetoothHeadsetFragment.java
@@ -26,8 +26,6 @@
 import android.content.Intent;
 import android.content.IntentFilter;
 import android.os.Bundle;
-import android.support.annotation.Nullable;
-import android.support.v4.app.Fragment;
 import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.View;
@@ -35,6 +33,9 @@
 import android.widget.Button;
 import android.widget.TextView;
 
+import androidx.annotation.Nullable;
+import androidx.fragment.app.Fragment;
+
 import com.google.android.car.kitchensink.R;
 
 public class BluetoothHeadsetFragment extends Fragment {
diff --git a/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/bluetooth/MapMceTestFragment.java b/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/bluetooth/MapMceTestFragment.java
index 6a72428..2d9df69 100644
--- a/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/bluetooth/MapMceTestFragment.java
+++ b/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/bluetooth/MapMceTestFragment.java
@@ -32,8 +32,6 @@
 import android.net.Uri;
 import android.os.Build;
 import android.os.Bundle;
-import android.support.annotation.Nullable;
-import android.support.v4.app.Fragment;
 import android.telecom.PhoneAccount;
 import android.util.Log;
 import android.view.LayoutInflater;
@@ -45,6 +43,9 @@
 import android.widget.TextView;
 import android.widget.Toast;
 
+import androidx.annotation.Nullable;
+import androidx.fragment.app.Fragment;
+
 import com.google.android.car.kitchensink.KitchenSinkActivity;
 import com.google.android.car.kitchensink.R;
 
diff --git a/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/cluster/InstrumentClusterFragment.java b/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/cluster/InstrumentClusterFragment.java
index 748ea68..8e4483e 100644
--- a/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/cluster/InstrumentClusterFragment.java
+++ b/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/cluster/InstrumentClusterFragment.java
@@ -20,19 +20,20 @@
 import android.content.Intent;
 import android.content.pm.PackageManager;
 import android.os.Bundle;
-import android.support.annotation.Nullable;
 import android.support.car.Car;
 import android.support.car.CarAppFocusManager;
 import android.support.car.CarConnectionCallback;
 import android.support.car.CarNotConnectedException;
 import android.support.car.navigation.CarNavigationStatusManager;
-import android.support.v4.app.Fragment;
 import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.Toast;
 
+import androidx.annotation.Nullable;
+import androidx.fragment.app.Fragment;
+
 import com.google.android.car.kitchensink.R;
 
 /**
diff --git a/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/connectivity/ConnectivityFragment.java b/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/connectivity/ConnectivityFragment.java
index 0ffa6bf..3c04bcb 100644
--- a/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/connectivity/ConnectivityFragment.java
+++ b/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/connectivity/ConnectivityFragment.java
@@ -26,7 +26,6 @@
 import android.net.NetworkRequest;
 import android.os.Bundle;
 import android.os.Handler;
-import android.support.v4.app.Fragment;
 import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.View;
@@ -35,6 +34,8 @@
 import android.widget.ListView;
 import android.widget.Toast;
 
+import androidx.fragment.app.Fragment;
+
 import com.google.android.car.kitchensink.R;
 
 import java.util.ArrayList;
diff --git a/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/cube/CubesTestFragment.java b/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/cube/CubesTestFragment.java
index b149df5..209d98d 100644
--- a/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/cube/CubesTestFragment.java
+++ b/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/cube/CubesTestFragment.java
@@ -18,12 +18,13 @@
 
 import android.opengl.GLSurfaceView;
 import android.os.Bundle;
-import android.support.v4.app.Fragment;
 import android.view.LayoutInflater;
 import android.view.MotionEvent;
 import android.view.View;
 import android.view.ViewGroup;
 
+import androidx.fragment.app.Fragment;
+
 import com.google.android.car.kitchensink.R;
 
 public class CubesTestFragment extends Fragment {
diff --git a/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/diagnostic/DiagnosticTestFragment.java b/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/diagnostic/DiagnosticTestFragment.java
index e2b452c..5569848 100644
--- a/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/diagnostic/DiagnosticTestFragment.java
+++ b/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/diagnostic/DiagnosticTestFragment.java
@@ -24,13 +24,14 @@
 import android.graphics.Color;
 import android.os.Bundle;
 import android.support.car.hardware.CarSensorManager;
-import android.support.v4.app.Fragment;
 import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.TextView;
 
+import androidx.fragment.app.Fragment;
+
 import com.google.android.car.kitchensink.KitchenSinkActivity;
 import com.google.android.car.kitchensink.R;
 
diff --git a/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/displayinfo/DisplayInfoFragment.java b/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/displayinfo/DisplayInfoFragment.java
index bae2253..ac0bdae 100644
--- a/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/displayinfo/DisplayInfoFragment.java
+++ b/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/displayinfo/DisplayInfoFragment.java
@@ -20,7 +20,6 @@
 import android.content.res.Resources;
 import android.graphics.Point;
 import android.os.Bundle;
-import android.support.v4.app.Fragment;
 import android.util.DisplayMetrics;
 import android.view.LayoutInflater;
 import android.view.View;
@@ -28,6 +27,8 @@
 import android.widget.LinearLayout;
 import android.widget.TextView;
 
+import androidx.fragment.app.Fragment;
+
 import com.google.android.car.kitchensink.R;
 
 /**
diff --git a/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/hvac/HvacTestFragment.java b/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/hvac/HvacTestFragment.java
index c7b80e8..f56b487 100644
--- a/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/hvac/HvacTestFragment.java
+++ b/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/hvac/HvacTestFragment.java
@@ -26,7 +26,6 @@
 import android.hardware.automotive.vehicle.V2_0.VehicleAreaWindow;
 import android.os.Bundle;
 import android.os.Handler;
-import android.support.v4.app.Fragment;
 import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.View;
@@ -37,6 +36,8 @@
 import android.widget.TextView;
 import android.widget.ToggleButton;
 
+import androidx.fragment.app.Fragment;
+
 import com.google.android.car.kitchensink.KitchenSinkActivity;
 import com.google.android.car.kitchensink.R;
 
diff --git a/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/input/InputTestFragment.java b/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/input/InputTestFragment.java
index 19ad094..34ea1cf 100644
--- a/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/input/InputTestFragment.java
+++ b/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/input/InputTestFragment.java
@@ -30,13 +30,11 @@
 import android.hardware.automotive.vehicle.V2_0.VehicleArea;
 import android.hardware.automotive.vehicle.V2_0.VehicleDisplay;
 import android.hardware.automotive.vehicle.V2_0.VehiclePropValue;
-import android.hardware.automotive.vehicle.V2_0.VehicleProperty;
 import android.hardware.automotive.vehicle.V2_0.VehiclePropertyGroup;
 import android.hardware.automotive.vehicle.V2_0.VehiclePropertyStatus;
 import android.hardware.automotive.vehicle.V2_0.VehiclePropertyType;
 import android.os.Bundle;
 import android.os.RemoteException;
-import android.support.v4.app.Fragment;
 import android.text.method.ScrollingMovementMethod;
 import android.util.Log;
 import android.view.KeyEvent;
@@ -48,6 +46,8 @@
 import android.widget.TextView;
 import android.widget.Toast;
 
+import androidx.fragment.app.Fragment;
+
 import com.android.car.keventreader.EventReaderService;
 import com.android.car.keventreader.IEventCallback;
 import com.android.car.keventreader.KeypressEvent;
diff --git a/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/job/JobSchedulerFragment.java b/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/job/JobSchedulerFragment.java
index 3cf96e4..b82818f 100644
--- a/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/job/JobSchedulerFragment.java
+++ b/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/job/JobSchedulerFragment.java
@@ -22,8 +22,6 @@
 import android.content.SharedPreferences;
 import android.os.Bundle;
 import android.os.PersistableBundle;
-import android.support.annotation.Nullable;
-import android.support.v4.app.Fragment;
 import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.View;
@@ -35,6 +33,9 @@
 import android.widget.TextView;
 import android.widget.Toast;
 
+import androidx.annotation.Nullable;
+import androidx.fragment.app.Fragment;
+
 import com.google.android.car.kitchensink.R;
 
 import java.util.List;
diff --git a/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/notification/NotificationFragment.java b/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/notification/NotificationFragment.java
index 5f88259..7a26f93 100644
--- a/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/notification/NotificationFragment.java
+++ b/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/notification/NotificationFragment.java
@@ -12,12 +12,13 @@
 import android.content.Context;
 import android.content.Intent;
 import android.os.Bundle;
-import android.support.v4.app.Fragment;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.Button;
 
+import androidx.fragment.app.Fragment;
+
 import com.google.android.car.kitchensink.KitchenSinkActivity;
 import com.google.android.car.kitchensink.R;
 
diff --git a/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/orientation/OrientationTestFragment.java b/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/orientation/OrientationTestFragment.java
index ef49ae4..b81104b 100644
--- a/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/orientation/OrientationTestFragment.java
+++ b/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/orientation/OrientationTestFragment.java
@@ -18,13 +18,14 @@
 
 import android.content.Intent;
 import android.os.Bundle;
-import android.support.annotation.Nullable;
-import android.support.v4.app.Fragment;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.Button;
 
+import androidx.annotation.Nullable;
+import androidx.fragment.app.Fragment;
+
 import com.google.android.car.kitchensink.R;
 
 public class OrientationTestFragment extends Fragment {
diff --git a/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/power/PowerTestFragment.java b/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/power/PowerTestFragment.java
index 9a6c2b9..d24148d 100644
--- a/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/power/PowerTestFragment.java
+++ b/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/power/PowerTestFragment.java
@@ -23,7 +23,6 @@
 import android.os.Handler;
 import android.os.PowerManager;
 import android.os.SystemClock;
-import android.support.v4.app.Fragment;
 import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.View;
@@ -31,6 +30,8 @@
 import android.widget.Button;
 import android.widget.TextView;
 
+import androidx.fragment.app.Fragment;
+
 import com.google.android.car.kitchensink.KitchenSinkActivity;
 import com.google.android.car.kitchensink.R;
 
diff --git a/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/property/PropertyTestFragment.java b/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/property/PropertyTestFragment.java
index ff1c402..83bbfa9 100644
--- a/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/property/PropertyTestFragment.java
+++ b/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/property/PropertyTestFragment.java
@@ -27,7 +27,6 @@
 import android.hardware.automotive.vehicle.V2_0.VehiclePropertyType;
 import android.os.Bundle;
 import android.os.Handler;
-import android.support.v4.app.Fragment;
 import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.View;
@@ -43,6 +42,8 @@
 import android.widget.TextView;
 import android.widget.Toast;
 
+import androidx.fragment.app.Fragment;
+
 import com.google.android.car.kitchensink.KitchenSinkActivity;
 import com.google.android.car.kitchensink.R;
 
diff --git a/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/sensor/SensorsTestFragment.java b/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/sensor/SensorsTestFragment.java
index 1440ff0..39392b9 100644
--- a/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/sensor/SensorsTestFragment.java
+++ b/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/sensor/SensorsTestFragment.java
@@ -28,7 +28,6 @@
 import android.content.pm.PackageManager;
 import android.os.Bundle;
 import android.os.Handler;
-import android.support.v4.app.Fragment;
 import android.text.TextUtils;
 import android.util.Log;
 import android.view.LayoutInflater;
@@ -36,6 +35,8 @@
 import android.view.ViewGroup;
 import android.widget.TextView;
 
+import androidx.fragment.app.Fragment;
+
 import com.google.android.car.kitchensink.KitchenSinkActivity;
 import com.google.android.car.kitchensink.R;
 
diff --git a/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/storagelifetime/StorageLifetimeFragment.java b/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/storagelifetime/StorageLifetimeFragment.java
index fc4052e..b134139 100644
--- a/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/storagelifetime/StorageLifetimeFragment.java
+++ b/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/storagelifetime/StorageLifetimeFragment.java
@@ -27,8 +27,8 @@
 import android.car.storagemonitoring.IoStatsEntry;
 import android.os.Bundle;
 import android.os.StatFs;
-import android.support.v4.app.Fragment;
 import android.system.ErrnoException;
+import android.system.Os;
 import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.View;
@@ -37,11 +37,11 @@
 import android.widget.ListView;
 import android.widget.TextView;
 
+import androidx.fragment.app.Fragment;
+
 import com.google.android.car.kitchensink.KitchenSinkActivity;
 import com.google.android.car.kitchensink.R;
 
-import libcore.io.Libcore;
-
 import java.io.File;
 import java.io.FileDescriptor;
 import java.io.IOException;
@@ -147,16 +147,16 @@
     private void fsyncFile() {
         try {
             final Path filePath = getFilePath();
-            FileDescriptor fd = Libcore.os.open(filePath.toString(), O_APPEND | O_RDWR, 0);
+            FileDescriptor fd = Os.open(filePath.toString(), O_APPEND | O_RDWR, 0);
             if (!fd.valid()) {
                 Log.w(TAG, "file descriptor is invalid");
                 return;
             }
             // fill byteBuffer with arbitrary data in order to make an fsync() meaningful
             ByteBuffer byteBuffer = ByteBuffer.wrap(new byte[] {101, 110, 114, 105, 99, 111});
-            Libcore.os.write(fd, byteBuffer);
-            Libcore.os.fsync(fd);
-            Libcore.os.close(fd);
+            Os.write(fd, byteBuffer);
+            Os.fsync(fd);
+            Os.close(fd);
         } catch (ErrnoException | IOException e) {
             Log.w(TAG, "could not fsync data", e);
         }
diff --git a/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/touch/TouchTestFragment.java b/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/touch/TouchTestFragment.java
index fe2c385..2cb0a64 100644
--- a/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/touch/TouchTestFragment.java
+++ b/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/touch/TouchTestFragment.java
@@ -17,11 +17,12 @@
 package com.google.android.car.kitchensink.touch;
 
 import android.os.Bundle;
-import android.support.v4.app.Fragment;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 
+import androidx.fragment.app.Fragment;
+
 import com.google.android.car.kitchensink.R;
 
 public class TouchTestFragment extends Fragment {
diff --git a/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/vhal/VehicleHalFragment.java b/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/vhal/VehicleHalFragment.java
index ac62505..df5f0fc 100644
--- a/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/vhal/VehicleHalFragment.java
+++ b/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/vhal/VehicleHalFragment.java
@@ -24,7 +24,6 @@
 import android.hardware.automotive.vehicle.V2_0.VehicleProperty;
 import android.os.Bundle;
 import android.os.RemoteException;
-import android.support.v4.app.Fragment;
 import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.View;
@@ -34,6 +33,8 @@
 import android.widget.ArrayAdapter;
 import android.widget.ListView;
 
+import androidx.fragment.app.Fragment;
+
 import com.google.android.car.kitchensink.KitchenSinkActivity;
 import com.google.android.car.kitchensink.R;
 
diff --git a/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/volume/VolumeTestFragment.java b/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/volume/VolumeTestFragment.java
index 800d650..066f46a 100644
--- a/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/volume/VolumeTestFragment.java
+++ b/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/volume/VolumeTestFragment.java
@@ -26,8 +26,6 @@
 import android.os.Handler;
 import android.os.IBinder;
 import android.os.Message;
-import android.support.annotation.Nullable;
-import android.support.v4.app.Fragment;
 import android.util.Log;
 import android.util.SparseIntArray;
 import android.view.LayoutInflater;
@@ -36,6 +34,9 @@
 import android.widget.ListView;
 import android.widget.SeekBar;
 
+import androidx.annotation.Nullable;
+import androidx.fragment.app.Fragment;
+
 import com.google.android.car.kitchensink.R;
 
 public class VolumeTestFragment extends Fragment {
diff --git a/tests/VmsSubscriberClientSample/src/com/google/android/car/vms/subscriber/VmsSubscriberClientSampleActivity.java b/tests/VmsSubscriberClientSample/src/com/google/android/car/vms/subscriber/VmsSubscriberClientSampleActivity.java
index a82350b..d1b92dc 100644
--- a/tests/VmsSubscriberClientSample/src/com/google/android/car/vms/subscriber/VmsSubscriberClientSampleActivity.java
+++ b/tests/VmsSubscriberClientSample/src/com/google/android/car/vms/subscriber/VmsSubscriberClientSampleActivity.java
@@ -84,6 +84,14 @@
         @Override
         public void onDisconnected(Car car) {
             Log.d(TAG, "Disconnect from Car Service");
+            if (mVmsSubscriberManager != null) {
+                try {
+                    mVmsSubscriberManager.clearVmsSubscriberClientCallback();
+                    mVmsSubscriberManager.unsubscribe(TEST_LAYER);
+                } catch (android.car.CarNotConnectedException e) {
+                    Log.e(TAG, "Car is not connected!", e);
+                }
+            }
         }
 
         private VmsSubscriberManager getVmsSubscriberManager() {
diff --git a/tools/keventreader/server/Android.mk b/tools/keventreader/server/Android.mk
index 726e2fc..3dd6bba 100644
--- a/tools/keventreader/server/Android.mk
+++ b/tools/keventreader/server/Android.mk
@@ -42,6 +42,5 @@
 LOCAL_MODULE_TAGS := optional
 
 LOCAL_CFLAGS += -Wall -Werror
-LOCAL_CPPFLAGS += -std=c++17
 
 include $(BUILD_EXECUTABLE)