diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 2cca2460f..8ab2ba467 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -36,21 +36,10 @@ jobs: target: [ google_apis ] channel: [ stable ] api-level: - - 21 - - 23 - 26 - 31 - 33 - 34 - include: - - arch: x86 - api-level: 16 - target: google_apis - channel: stable - - arch: x86 - api-level: 19 - target: google_apis - channel: stable steps: - name: Enable KVM group perms run: | diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 5409363a7..9de09e2ee 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -23,7 +23,7 @@ androidXJunit = "1.1.5" workManager = "2.7.0" detekt = "1.23.8" hilt = "2.53" -androidMinSdk = "14" +androidMinSdk = "26" androidCompileSdk = "35" [libraries] @@ -60,7 +60,7 @@ androidX-test-monitor = { module = "androidx.test:monitor", version = "1.6.1" } androidX-test-rules = { module = "androidx.test:rules", version.ref = "androidXTest" } # Exposed transitively, avoid increasing androidX-test-runner = { module = "androidx.test:runner", version = "1.5.2" } -androidX-test-orchestrator = { module = "androidx.test:orchestrator", version = "1.4.2" } # 1.5.0+ requires API 21+, keeping at 1.4.2 for API 16 compatibility +androidX-test-orchestrator = { module = "androidx.test:orchestrator", version = "1.5.0" } androidX-test-espresso = { module = "androidx.test.espresso:espresso-core", version = "3.5.1" } androidX-test-junit = { module = "androidx.test.ext:junit", version.ref = "androidXJunit" } androidX-test-junitKtx = { module = "androidx.test.ext:junit-ktx", version.ref = "androidXJunit" } diff --git a/leakcanary/leakcanary-android-core/src/main/java/leakcanary/LeakCanaryAndroidInternalUtils.kt b/leakcanary/leakcanary-android-core/src/main/java/leakcanary/LeakCanaryAndroidInternalUtils.kt index b56804c3f..72e48ec94 100644 --- a/leakcanary/leakcanary-android-core/src/main/java/leakcanary/LeakCanaryAndroidInternalUtils.kt +++ b/leakcanary/leakcanary-android-core/src/main/java/leakcanary/LeakCanaryAndroidInternalUtils.kt @@ -7,8 +7,6 @@ import android.content.Intent import android.content.pm.ShortcutInfo.Builder import android.content.pm.ShortcutManager import android.graphics.drawable.Icon -import android.os.Build.VERSION -import android.os.Build.VERSION_CODES import com.squareup.leakcanary.core.R import shark.SharkLog @@ -18,9 +16,6 @@ internal object LeakCanaryAndroidInternalUtils { @Suppress("ReturnCount") fun addLeakActivityDynamicShortcut(application: Application) { - if (VERSION.SDK_INT < VERSION_CODES.N_MR1) { - return - } if (!application.resources.getBoolean(R.bool.leak_canary_add_dynamic_shortcut)) { return } @@ -124,6 +119,6 @@ internal object LeakCanaryAndroidInternalUtils { } fun isInstantApp(application: Application): Boolean { - return VERSION.SDK_INT >= VERSION_CODES.O && application.packageManager.isInstantApp + return application.packageManager.isInstantApp } } diff --git a/leakcanary/leakcanary-android-core/src/main/java/leakcanary/NotificationEventListener.kt b/leakcanary/leakcanary-android-core/src/main/java/leakcanary/NotificationEventListener.kt index c13213d07..06a1e951a 100644 --- a/leakcanary/leakcanary-android-core/src/main/java/leakcanary/NotificationEventListener.kt +++ b/leakcanary/leakcanary-android-core/src/main/java/leakcanary/NotificationEventListener.kt @@ -4,7 +4,6 @@ import android.app.Notification import android.app.NotificationManager import android.app.PendingIntent import android.content.Context -import android.os.Build import com.squareup.leakcanary.core.R import leakcanary.EventListener.Event import leakcanary.EventListener.Event.DumpingHeap @@ -67,11 +66,7 @@ object NotificationEventListener : EventListener { } else { appContext.getString(R.string.leak_canary_analysis_failed) } - val flags = if (Build.VERSION.SDK_INT >= 23) { - PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE - } else { - PendingIntent.FLAG_UPDATE_CURRENT - } + val flags = PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE val pendingIntent = PendingIntent.getActivity(appContext, 1, event.showIntent, flags) showHeapAnalysisResultNotification(contentTitle,pendingIntent) } diff --git a/leakcanary/leakcanary-android-core/src/main/java/leakcanary/internal/LeakCanaryFileProvider.kt b/leakcanary/leakcanary-android-core/src/main/java/leakcanary/internal/LeakCanaryFileProvider.kt index c5f6ae13a..00156837a 100644 --- a/leakcanary/leakcanary-android-core/src/main/java/leakcanary/internal/LeakCanaryFileProvider.kt +++ b/leakcanary/leakcanary-android-core/src/main/java/leakcanary/internal/LeakCanaryFileProvider.kt @@ -24,7 +24,6 @@ import android.content.pm.ProviderInfo import android.database.Cursor import android.database.MatrixCursor import android.net.Uri -import android.os.Build import android.os.Environment import android.os.ParcelFileDescriptor import android.os.StrictMode @@ -499,7 +498,7 @@ internal class LeakCanaryFileProvider : ContentProvider() { if (externalCacheDirs.isNotEmpty()) { target = externalCacheDirs[0] } - } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP && TAG_EXTERNAL_MEDIA == tag) { + } else if (TAG_EXTERNAL_MEDIA == tag) { val externalMediaDirs = context.externalMediaDirs if (externalMediaDirs.isNotEmpty()) { target = externalMediaDirs[0] @@ -519,19 +518,11 @@ internal class LeakCanaryFileProvider : ContentProvider() { context: Context, type: String? ): Array { - return if (Build.VERSION.SDK_INT >= 19) { - context.getExternalFilesDirs(type) - } else { - arrayOf(context.getExternalFilesDir(type)!!) - } + return context.getExternalFilesDirs(type) } private fun getExternalCacheDirs(context: Context): Array { - return if (Build.VERSION.SDK_INT >= 19) { - context.externalCacheDirs - } else { - arrayOf(context.externalCacheDir!!) - } + return context.externalCacheDirs } /** diff --git a/leakcanary/leakcanary-android-core/src/main/java/leakcanary/internal/LeakDirectoryProvider.kt b/leakcanary/leakcanary-android-core/src/main/java/leakcanary/internal/LeakDirectoryProvider.kt index abdf99d29..640c719e9 100644 --- a/leakcanary/leakcanary-android-core/src/main/java/leakcanary/internal/LeakDirectoryProvider.kt +++ b/leakcanary/leakcanary-android-core/src/main/java/leakcanary/internal/LeakDirectoryProvider.kt @@ -16,11 +16,8 @@ package leakcanary.internal import android.Manifest.permission.WRITE_EXTERNAL_STORAGE -import android.annotation.TargetApi import android.content.Context import android.content.pm.PackageManager.PERMISSION_GRANTED -import android.os.Build.VERSION.SDK_INT -import android.os.Build.VERSION_CODES.M import android.os.Environment import android.os.Environment.DIRECTORY_DOWNLOADS import com.squareup.leakcanary.core.R @@ -79,12 +76,7 @@ internal class LeakDirectoryProvider constructor( return File(storageDirectory, fileName) } - @TargetApi(M) fun hasStoragePermission(): Boolean { - // Defensive check: @TargetApi doesn't prevent this method from being called on older APIs - @Suppress("ObsoleteSdkInt") - if (SDK_INT < M) { - return true - } + fun hasStoragePermission(): Boolean { // Once true, this won't change for the life of the process so we can cache it. if (writeExternalStorageGranted) { return true diff --git a/leakcanary/leakcanary-android-core/src/main/java/leakcanary/internal/NotificationReceiver.kt b/leakcanary/leakcanary-android-core/src/main/java/leakcanary/internal/NotificationReceiver.kt index d853d54b4..489eb2a70 100644 --- a/leakcanary/leakcanary-android-core/src/main/java/leakcanary/internal/NotificationReceiver.kt +++ b/leakcanary/leakcanary-android-core/src/main/java/leakcanary/internal/NotificationReceiver.kt @@ -4,7 +4,6 @@ import android.app.PendingIntent import android.content.BroadcastReceiver import android.content.Context import android.content.Intent -import android.os.Build import leakcanary.internal.NotificationReceiver.Action.CANCEL_NOTIFICATION import leakcanary.internal.NotificationReceiver.Action.DUMP_HEAP import shark.SharkLog @@ -40,11 +39,7 @@ internal class NotificationReceiver : BroadcastReceiver() { ): PendingIntent { val broadcastIntent = Intent(context, NotificationReceiver::class.java) broadcastIntent.action = action.name - val flags = if (Build.VERSION.SDK_INT >= 23) { - PendingIntent.FLAG_IMMUTABLE - } else { - 0 - } + val flags = PendingIntent.FLAG_IMMUTABLE return PendingIntent.getBroadcast(context, 0, broadcastIntent, flags) } } diff --git a/leakcanary/leakcanary-android-core/src/main/java/leakcanary/internal/Notifications.kt b/leakcanary/leakcanary-android-core/src/main/java/leakcanary/internal/Notifications.kt index 5a41a4181..45c9185b2 100644 --- a/leakcanary/leakcanary-android-core/src/main/java/leakcanary/internal/Notifications.kt +++ b/leakcanary/leakcanary-android-core/src/main/java/leakcanary/internal/Notifications.kt @@ -22,8 +22,6 @@ import android.app.NotificationManager import android.app.PendingIntent import android.content.Context import android.os.Build.VERSION.SDK_INT -import android.os.Build.VERSION_CODES.JELLY_BEAN -import android.os.Build.VERSION_CODES.O import com.squareup.leakcanary.core.R import leakcanary.LeakCanary import leakcanary.internal.InternalLeakCanary.FormFactor.MOBILE @@ -90,9 +88,7 @@ internal object Notifications { return } - val builder = if (SDK_INT >= O) { - Notification.Builder(context, type.name) - } else Notification.Builder(context) + val builder = Notification.Builder(context, type.name) builder .setContentText(contentText) @@ -115,26 +111,19 @@ internal object Notifications { builder.setSmallIcon(R.drawable.leak_canary_leak) .setWhen(System.currentTimeMillis()) - if (SDK_INT >= O) { - val notificationManager = - context.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager - var notificationChannel: NotificationChannel? = - notificationManager.getNotificationChannel(type.name) - if (notificationChannel == null) { - val channelName = context.getString(type.nameResId) - notificationChannel = - NotificationChannel(type.name, channelName, type.importance) - notificationManager.createNotificationChannel(notificationChannel) - } - builder.setChannelId(type.name) - builder.setGroup(type.name) + val notificationManager = + context.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager + var notificationChannel: NotificationChannel? = + notificationManager.getNotificationChannel(type.name) + if (notificationChannel == null) { + val channelName = context.getString(type.nameResId) + notificationChannel = + NotificationChannel(type.name, channelName, type.importance) + notificationManager.createNotificationChannel(notificationChannel) } + builder.setChannelId(type.name) + builder.setGroup(type.name) - return if (SDK_INT < JELLY_BEAN) { - @Suppress("DEPRECATION") - builder.notification - } else { - builder.build() - } + return builder.build() } } diff --git a/leakcanary/leakcanary-android-core/src/main/java/leakcanary/internal/RequestPermissionActivity.kt b/leakcanary/leakcanary-android-core/src/main/java/leakcanary/internal/RequestPermissionActivity.kt index 33a4d707f..ebf5db251 100644 --- a/leakcanary/leakcanary-android-core/src/main/java/leakcanary/internal/RequestPermissionActivity.kt +++ b/leakcanary/leakcanary-android-core/src/main/java/leakcanary/internal/RequestPermissionActivity.kt @@ -15,7 +15,6 @@ */ package leakcanary.internal -import android.annotation.TargetApi import android.app.Activity import android.app.PendingIntent import android.app.PendingIntent.FLAG_UPDATE_CURRENT @@ -26,12 +25,10 @@ import android.content.Intent.FLAG_ACTIVITY_CLEAR_TOP import android.content.Intent.FLAG_ACTIVITY_NEW_TASK import android.content.pm.PackageManager.PERMISSION_GRANTED import android.os.Bundle -import android.os.Build import android.widget.Toast import android.widget.Toast.LENGTH_LONG import com.squareup.leakcanary.core.R -@TargetApi(Build.VERSION_CODES.M) // internal class RequestPermissionActivity : Activity() { private val targetPermission: String @@ -84,13 +81,7 @@ internal class RequestPermissionActivity : Activity() { fun createPendingIntent(context: Context, permission: String): PendingIntent { val intent = createIntent(context, permission) - // Defensive check: @TargetApi on class doesn't prevent this method from being called on older APIs - @Suppress("ObsoleteSdkInt") - val flags = if (Build.VERSION.SDK_INT >= 23) { - FLAG_UPDATE_CURRENT or FLAG_IMMUTABLE - } else { - FLAG_UPDATE_CURRENT - } + val flags = FLAG_UPDATE_CURRENT or FLAG_IMMUTABLE return PendingIntent.getActivity(context, 1, intent, flags) } } diff --git a/leakcanary/leakcanary-android-core/src/main/java/leakcanary/internal/SquigglySpanRenderer.kt b/leakcanary/leakcanary-android-core/src/main/java/leakcanary/internal/SquigglySpanRenderer.kt index 36229b28d..ef17ee376 100644 --- a/leakcanary/leakcanary-android-core/src/main/java/leakcanary/internal/SquigglySpanRenderer.kt +++ b/leakcanary/leakcanary-android-core/src/main/java/leakcanary/internal/SquigglySpanRenderer.kt @@ -4,7 +4,6 @@ import android.content.Context import android.graphics.Canvas import android.graphics.Paint import android.graphics.Path -import android.os.Build import android.text.Layout import com.squareup.leakcanary.core.R import kotlin.math.max @@ -107,7 +106,7 @@ internal abstract class SquigglySpanRenderer(context: Context) { private fun Layout.getLineBottomWithoutSpacing(line: Int): Int { val lineBottom = getLineBottom(line) - val lastLineSpacingNotAdded = Build.VERSION.SDK_INT >= 19 + val lastLineSpacingNotAdded = true val isLastLine = line == lineCount - 1 val lineBottomWithoutSpacing: Int diff --git a/leakcanary/leakcanary-android-core/src/main/java/leakcanary/internal/activity/db/Cursors.kt b/leakcanary/leakcanary-android-core/src/main/java/leakcanary/internal/activity/db/Cursors.kt index 6cb1e2741..2793a2af4 100644 --- a/leakcanary/leakcanary-android-core/src/main/java/leakcanary/internal/activity/db/Cursors.kt +++ b/leakcanary/leakcanary-android-core/src/main/java/leakcanary/internal/activity/db/Cursors.kt @@ -6,7 +6,7 @@ import kotlin.concurrent.getOrSet /** * Similar to the more generic use() for Closable. - * Cursor started implementing Closable in API 16. + * Cursor implements Closable on all supported API levels (26+). */ internal inline fun Cursor.use(block: (Cursor) -> R): R { var exception: Throwable? = null diff --git a/leakcanary/leakcanary-android-core/src/main/java/leakcanary/internal/activity/screen/RenderHeapDumpScreen.kt b/leakcanary/leakcanary-android-core/src/main/java/leakcanary/internal/activity/screen/RenderHeapDumpScreen.kt index 09a62d5ee..32d68d372 100644 --- a/leakcanary/leakcanary-android-core/src/main/java/leakcanary/internal/activity/screen/RenderHeapDumpScreen.kt +++ b/leakcanary/leakcanary-android-core/src/main/java/leakcanary/internal/activity/screen/RenderHeapDumpScreen.kt @@ -2,8 +2,6 @@ package leakcanary.internal.activity.screen import android.content.Intent import android.graphics.Bitmap -import android.os.Build.VERSION -import android.os.Build.VERSION_CODES import android.os.Environment import android.os.Environment.DIRECTORY_DOWNLOADS import android.view.View @@ -60,11 +58,7 @@ internal class RenderHeapDumpScreen( imageView.visibility = View.VISIBLE } } - if (VERSION.SDK_INT >= VERSION_CODES.JELLY_BEAN) { - viewTreeObserver.removeOnGlobalLayoutListener(this) - } else { - viewTreeObserver.removeGlobalOnLayoutListener(this) - } + viewTreeObserver.removeOnGlobalLayoutListener(this) } }) diff --git a/leakcanary/leakcanary-android-core/src/main/java/leakcanary/internal/navigation/NavigatingActivity.kt b/leakcanary/leakcanary-android-core/src/main/java/leakcanary/internal/navigation/NavigatingActivity.kt index 31e25c5d5..d376d93e6 100644 --- a/leakcanary/leakcanary-android-core/src/main/java/leakcanary/internal/navigation/NavigatingActivity.kt +++ b/leakcanary/leakcanary-android-core/src/main/java/leakcanary/internal/navigation/NavigatingActivity.kt @@ -2,7 +2,6 @@ package leakcanary.internal.navigation import android.app.Activity import android.content.Intent -import android.os.Build.VERSION.SDK_INT import android.os.Bundle import android.os.Parcelable import android.view.Menu @@ -155,12 +154,10 @@ internal abstract class NavigatingActivity : Activity() { private fun screenUpdated() { invalidateOptionsMenu() - if (SDK_INT >= 18) { - actionBar?.run { - val goBack = backstack.size > 0 - val indicator = if (goBack) 0 else android.R.drawable.ic_menu_close_clear_cancel - setHomeAsUpIndicator(indicator) - } + actionBar?.run { + val goBack = backstack.size > 0 + val indicator = if (goBack) 0 else android.R.drawable.ic_menu_close_clear_cancel + setHomeAsUpIndicator(indicator) } onNewScreen(currentScreen) } diff --git a/leakcanary/leakcanary-android-core/src/main/java/leakcanary/internal/navigation/Views.kt b/leakcanary/leakcanary-android-core/src/main/java/leakcanary/internal/navigation/Views.kt index fe2430390..2fe0b070f 100644 --- a/leakcanary/leakcanary-android-core/src/main/java/leakcanary/internal/navigation/Views.kt +++ b/leakcanary/leakcanary-android-core/src/main/java/leakcanary/internal/navigation/Views.kt @@ -2,7 +2,6 @@ package leakcanary.internal.navigation import android.app.Activity import android.content.Context -import android.os.Build.VERSION import android.os.Parcelable import android.util.SparseArray import android.view.LayoutInflater @@ -41,11 +40,7 @@ internal fun View.goBack() { } internal fun Context.getColorCompat(id: Int): Int { - return if (VERSION.SDK_INT >= 23) { - getColor(id) - } else { - resources.getColor(id) - } + return getColor(id) } internal fun View.onScreenExiting(block: () -> Unit) { diff --git a/leakcanary/leakcanary-android-core/src/main/res/drawable-v21/leak_canary_gray_fill.xml b/leakcanary/leakcanary-android-core/src/main/res/drawable-v21/leak_canary_gray_fill.xml deleted file mode 100644 index 00d67ea3a..000000000 --- a/leakcanary/leakcanary-android-core/src/main/res/drawable-v21/leak_canary_gray_fill.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/leakcanary/leakcanary-android-core/src/main/res/drawable-v21/leak_canary_list_selector.xml b/leakcanary/leakcanary-android-core/src/main/res/drawable-v21/leak_canary_list_selector.xml deleted file mode 100644 index 4bbb9c540..000000000 --- a/leakcanary/leakcanary-android-core/src/main/res/drawable-v21/leak_canary_list_selector.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/leakcanary/leakcanary-android-core/src/main/res/drawable-v21/leak_canary_primary_button.xml b/leakcanary/leakcanary-android-core/src/main/res/drawable-v21/leak_canary_primary_button.xml deleted file mode 100644 index 67b9d2c63..000000000 --- a/leakcanary/leakcanary-android-core/src/main/res/drawable-v21/leak_canary_primary_button.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/leakcanary/leakcanary-android-core/src/main/res/drawable-v21/leak_canary_secondary_button.xml b/leakcanary/leakcanary-android-core/src/main/res/drawable-v21/leak_canary_secondary_button.xml deleted file mode 100644 index 97cc859a0..000000000 --- a/leakcanary/leakcanary-android-core/src/main/res/drawable-v21/leak_canary_secondary_button.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/leakcanary/leakcanary-android-core/src/main/res/drawable-v21/leak_canary_tab_background.xml b/leakcanary/leakcanary-android-core/src/main/res/drawable-v21/leak_canary_tab_background.xml deleted file mode 100644 index 2418076a5..000000000 --- a/leakcanary/leakcanary-android-core/src/main/res/drawable-v21/leak_canary_tab_background.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/leakcanary/leakcanary-android-core/src/main/res/drawable/leak_canary_gray_fill.xml b/leakcanary/leakcanary-android-core/src/main/res/drawable/leak_canary_gray_fill.xml index 0685b99ef..00d67ea3a 100644 --- a/leakcanary/leakcanary-android-core/src/main/res/drawable/leak_canary_gray_fill.xml +++ b/leakcanary/leakcanary-android-core/src/main/res/drawable/leak_canary_gray_fill.xml @@ -1,8 +1,9 @@ - - + + - + @@ -12,4 +13,4 @@ - + diff --git a/leakcanary/leakcanary-android-core/src/main/res/drawable/leak_canary_list_selector.xml b/leakcanary/leakcanary-android-core/src/main/res/drawable/leak_canary_list_selector.xml index 3f6a244ac..4bbb9c540 100644 --- a/leakcanary/leakcanary-android-core/src/main/res/drawable/leak_canary_list_selector.xml +++ b/leakcanary/leakcanary-android-core/src/main/res/drawable/leak_canary_list_selector.xml @@ -1,7 +1,7 @@ - + diff --git a/leakcanary/leakcanary-android-core/src/main/res/drawable/leak_canary_primary_button.xml b/leakcanary/leakcanary-android-core/src/main/res/drawable/leak_canary_primary_button.xml index 5fe33eade..8682faf1c 100644 --- a/leakcanary/leakcanary-android-core/src/main/res/drawable/leak_canary_primary_button.xml +++ b/leakcanary/leakcanary-android-core/src/main/res/drawable/leak_canary_primary_button.xml @@ -1,16 +1,11 @@ - - - - - - - + - + diff --git a/leakcanary/leakcanary-android-core/src/main/res/drawable/leak_canary_secondary_button.xml b/leakcanary/leakcanary-android-core/src/main/res/drawable/leak_canary_secondary_button.xml index 8987d5f63..1329d0ff8 100644 --- a/leakcanary/leakcanary-android-core/src/main/res/drawable/leak_canary_secondary_button.xml +++ b/leakcanary/leakcanary-android-core/src/main/res/drawable/leak_canary_secondary_button.xml @@ -1,15 +1,10 @@ - - - - - - - + - + diff --git a/leakcanary/leakcanary-android-core/src/main/res/drawable/leak_canary_tab_background.xml b/leakcanary/leakcanary-android-core/src/main/res/drawable/leak_canary_tab_background.xml index 9d1173d49..015470a65 100644 --- a/leakcanary/leakcanary-android-core/src/main/res/drawable/leak_canary_tab_background.xml +++ b/leakcanary/leakcanary-android-core/src/main/res/drawable/leak_canary_tab_background.xml @@ -1,5 +1,5 @@ - - - - + + + diff --git a/leakcanary/leakcanary-android-core/src/main/res/drawable-v21/leak_canary_tab_selector_ripple.xml b/leakcanary/leakcanary-android-core/src/main/res/drawable/leak_canary_tab_selector_ripple.xml similarity index 95% rename from leakcanary/leakcanary-android-core/src/main/res/drawable-v21/leak_canary_tab_selector_ripple.xml rename to leakcanary/leakcanary-android-core/src/main/res/drawable/leak_canary_tab_selector_ripple.xml index a924d4e04..3c8726948 100644 --- a/leakcanary/leakcanary-android-core/src/main/res/drawable-v21/leak_canary_tab_selector_ripple.xml +++ b/leakcanary/leakcanary-android-core/src/main/res/drawable/leak_canary_tab_selector_ripple.xml @@ -2,4 +2,4 @@ + /> \ No newline at end of file diff --git a/leakcanary/leakcanary-android-core/src/main/res/mipmap-anydpi-v26/leak_canary_icon.xml b/leakcanary/leakcanary-android-core/src/main/res/mipmap-anydpi/leak_canary_icon.xml similarity index 100% rename from leakcanary/leakcanary-android-core/src/main/res/mipmap-anydpi-v26/leak_canary_icon.xml rename to leakcanary/leakcanary-android-core/src/main/res/mipmap-anydpi/leak_canary_icon.xml diff --git a/leakcanary/leakcanary-android-core/src/main/res/values-v21/leak_canary_themes.xml b/leakcanary/leakcanary-android-core/src/main/res/values-v21/leak_canary_themes.xml deleted file mode 100644 index c18b95185..000000000 --- a/leakcanary/leakcanary-android-core/src/main/res/values-v21/leak_canary_themes.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - diff --git a/leakcanary/leakcanary-android-core/src/main/res/values/leak_canary_themes.xml b/leakcanary/leakcanary-android-core/src/main/res/values/leak_canary_themes.xml index bd8ddb82c..bfcdc4e3e 100644 --- a/leakcanary/leakcanary-android-core/src/main/res/values/leak_canary_themes.xml +++ b/leakcanary/leakcanary-android-core/src/main/res/values/leak_canary_themes.xml @@ -15,14 +15,14 @@ ~ limitations under the License. --> - -