diff --git a/Android.mk b/Android.mk
index 61851cf..e37e9fb 100644
--- a/Android.mk
+++ b/Android.mk
@@ -24,6 +24,7 @@
     android-slices-builders \
     android-slices-core \
     android-slices-view \
+    android-support-compat \
     android-support-v4 \
     android-support-v13 \
     android-support-v7-appcompat \
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 6443569..b892dee 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -105,7 +105,8 @@
             android:allowBackup="false"
             android:usesCleartextTraffic="true"
             android:defaultToDeviceProtectedStorage="true"
-            android:directBootAware="true">
+            android:directBootAware="true"
+            android:appComponentFactory="android.support.v4.app.CoreComponentFactory">
 
         <uses-library android:name="org.apache.http.legacy" />
         <!-- Settings -->
diff --git a/proguard.flags b/proguard.flags
index 21c5cfd..43a038b 100644
--- a/proguard.flags
+++ b/proguard.flags
@@ -51,3 +51,4 @@
     public static ** SEARCH_INDEX_DATA_PROVIDER;
     public static ** SUMMARY_PROVIDER_FACTORY;
 }
+-keep class android.support.v4.app.CoreComponentFactory
diff --git a/src/com/android/settings/slices/SettingsSliceProvider.java b/src/com/android/settings/slices/SettingsSliceProvider.java
index b07bcb0..1a73ea7 100644
--- a/src/com/android/settings/slices/SettingsSliceProvider.java
+++ b/src/com/android/settings/slices/SettingsSliceProvider.java
@@ -24,6 +24,7 @@
 import android.net.Uri;
 import android.net.wifi.WifiManager;
 import android.support.annotation.VisibleForTesting;
+import android.support.v4.graphics.drawable.IconCompat;
 import android.util.Log;
 
 import com.android.settings.R;
@@ -203,7 +204,8 @@
                         .addEndItem(new SliceAction(getBroadcastIntent(ACTION_WIFI_CHANGED),
                                 null, finalWifiEnabled))
                         .setPrimaryAction(
-                                new SliceAction(getIntent(Intent.ACTION_MAIN), null, null)))
+                                new SliceAction(getIntent(Intent.ACTION_MAIN),
+                                        (IconCompat) null, null)))
                 .build();
     }
 
diff --git a/src/com/android/settings/slices/SliceBuilderUtils.java b/src/com/android/settings/slices/SliceBuilderUtils.java
index af9a336..09a06d3 100644
--- a/src/com/android/settings/slices/SliceBuilderUtils.java
+++ b/src/com/android/settings/slices/SliceBuilderUtils.java
@@ -45,6 +45,7 @@
 import com.android.settings.search.DatabaseIndexingUtils;
 import com.android.settingslib.core.AbstractPreferenceController;
 
+import android.support.v4.graphics.drawable.IconCompat;
 import androidx.slice.Slice;
 import androidx.slice.builders.SliceAction;
 import androidx.slice.builders.ListBuilder;
@@ -164,7 +165,7 @@
                         .setTitle(sliceData.getTitle())
                         .setTitleItem(icon, ICON_IMAGE)
                         .setSubtitle(subtitleText)
-                        .setPrimaryAction(new SliceAction(contentIntent, null, null))
+                        .setPrimaryAction(new SliceAction(contentIntent, (IconCompat) null, null))
                         .addEndItem(sliceAction))
                 .build();
     }
@@ -180,7 +181,7 @@
                         .setTitle(sliceData.getTitle())
                         .setTitleItem(icon, ICON_IMAGE)
                         .setSubtitle(subtitleText)
-                        .setPrimaryAction(new SliceAction(contentIntent, null, null)))
+                        .setPrimaryAction(new SliceAction(contentIntent, (IconCompat) null, null)))
                 .build();
     }
 
@@ -284,24 +285,25 @@
         switch (controller.getAvailabilityStatus()) {
             case DISABLED_UNSUPPORTED:
                 summary = context.getString(R.string.unsupported_setting_summary);
-                primaryAction = new SliceAction(getSettingsIntent(context), null /* actionIcon */,
+                primaryAction = new SliceAction(getSettingsIntent(context),
+                        (IconCompat) null /* actionIcon */,
                         null /* actionTitle */);
                 break;
             case DISABLED_FOR_USER:
                 summary = context.getString(R.string.disabled_for_user_setting_summary);
                 primaryAction = new SliceAction(getContentIntent(context, data),
-                        null /* actionIcon */, null /* actionTitle */);
+                        (IconCompat) null /* actionIcon */, null /* actionTitle */);
                 break;
             case DISABLED_DEPENDENT_SETTING:
                 summary = context.getString(R.string.disabled_dependent_setting_summary);
                 primaryAction = new SliceAction(getContentIntent(context, data),
-                        null /* actionIcon */, null /* actionTitle */);
+                        (IconCompat) null /* actionIcon */, null /* actionTitle */);
                 break;
             case UNAVAILABLE_UNKNOWN:
             default:
                 summary = context.getString(R.string.unknown_unavailability_setting_summary);
                 primaryAction = new SliceAction(getSettingsIntent(context),
-                        null /* actionIcon */, null /* actionTitle */);
+                        (IconCompat) null /* actionIcon */, null /* actionTitle */);
         }
 
         return new ListBuilder(context, data.getUri())
