diff --git a/Android.bp b/Android.bp
deleted file mode 100644
index 3cbc298..0000000
--- a/Android.bp
+++ /dev/null
@@ -1,42 +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.
-
-android_app {
-    name: "SettingsIntelligence",
-    optimize: {
-        proguard_flags_files: ["proguard.cfg"],
-    },
-    platform_apis: true,
-    product_specific: true,
-    privileged: true,
-    required: ["privapp_whitelist_com.android.settings.intelligence"],
-
-    static_libs: [
-        "androidx.legacy_legacy-support-v4",
-        "androidx.legacy_legacy-support-v13",
-        "androidx.appcompat_appcompat",
-        "androidx.cardview_cardview",
-        "androidx.preference_preference",
-        "androidx.recyclerview_recyclerview",
-        "androidx.legacy_legacy-preference-v14",
-    ],
-    resource_dirs: ["res"],
-    srcs: [
-        "src/**/*.java",
-        "proto/**/*.proto",
-    ],
-    proto: {
-        type: "nano",
-    },
-}
diff --git a/Android.mk b/Android.mk
new file mode 100644
index 0000000..37d0b68
--- /dev/null
+++ b/Android.mk
@@ -0,0 +1,52 @@
+# 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.
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_PACKAGE_NAME := SettingsIntelligence
+LOCAL_MODULE_TAGS := optional
+LOCAL_PROGUARD_FLAG_FILES := proguard.cfg
+
+LOCAL_SDK_VERSION := system_current
+LOCAL_PRODUCT_MODULE := true
+LOCAL_PRIVILEGED_MODULE := true
+LOCAL_REQUIRED_MODULES := privapp_whitelist_com.android.settings.intelligence
+
+LOCAL_STATIC_ANDROID_LIBRARIES := \
+    androidx.legacy_legacy-support-v4 \
+    androidx.legacy_legacy-support-v13 \
+    androidx.appcompat_appcompat \
+    androidx.cardview_cardview \
+    androidx.preference_preference \
+    androidx.recyclerview_recyclerview \
+    androidx.legacy_legacy-preference-v14
+
+LOCAL_USE_AAPT2 := true
+
+LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res
+
+LOCAL_SRC_FILES := \
+    $(call all-java-files-under, src) \
+    $(call all-proto-files-under, proto)
+
+LOCAL_PROTOC_OPTIMIZE_TYPE := nano
+
+include $(BUILD_PACKAGE)
+
+# Use the following include to make our test apk.
+ifeq (,$(ONE_SHOT_MAKEFILE))
+include $(call all-makefiles-under,$(LOCAL_PATH))
+endif
diff --git a/res/values/colors.xml b/res/values/colors.xml
index 5c39967..9a469c1 100644
--- a/res/values/colors.xml
+++ b/res/values/colors.xml
@@ -16,7 +16,7 @@
   -->
 
 <resources>
-    <color name="launcher_background_color">@*android:color/accent_device_default</color>
+    <color name="launcher_background_color">@*android:color/accent_device_default_light</color>
 
     <color name="search_panel_background">@android:color/white</color>
 </resources>
diff --git a/src/com/android/settings/intelligence/search/indexing/IndexDatabaseHelper.java b/src/com/android/settings/intelligence/search/indexing/IndexDatabaseHelper.java
index a742cdc..cc90d21 100644
--- a/src/com/android/settings/intelligence/search/indexing/IndexDatabaseHelper.java
+++ b/src/com/android/settings/intelligence/search/indexing/IndexDatabaseHelper.java
@@ -288,7 +288,7 @@
      */
     static void setIndexed(Context context, List<ResolveInfo> providers) {
         final String localeStr = Locale.getDefault().toString();
-        final String fingerprint = Build.BLISS_FINGERPRINT;
+        final String fingerprint = Build.FINGERPRINT;
         final String providerVersionedNames =
                 IndexDatabaseHelper.buildProviderVersionedNames(context, providers);
         context.getSharedPreferences(SHARED_PREFS_TAG, Context.MODE_PRIVATE)
@@ -309,7 +309,7 @@
      */
     static boolean isFullIndex(Context context, List<ResolveInfo> providers) {
         final String localeStr = Locale.getDefault().toString();
-        final String fingerprint = Build.BLISS_FINGERPRINT;
+        final String fingerprint = Build.FINGERPRINT;
         final String providerVersionedNames =
                 IndexDatabaseHelper.buildProviderVersionedNames(context, providers);
         final SharedPreferences prefs = context
