From 3164fb8bfdf45a48b8c12edf0e3e00a32f233cf1 Mon Sep 17 00:00:00 2001
From: Janne Koschinski <janne@kuschku.de>
Date: Fri, 27 Apr 2018 17:24:40 +0200
Subject: [PATCH] Attempt at improving lint, updating versions, improving CI

Signed-off-by: Janne Koschinski <janne@kuschku.de>
---
 .gitlab-ci.yml                                  |  7 ++++++-
 app/build.gradle.kts                            |  7 ++++---
 app/sampledata/libraries.json                   |  6 +++---
 app/src/main/AndroidManifest.xml                |  1 +
 .../ui/clientsettings/about/AboutFragment.kt    |  6 +++---
 .../util/ui/ColorChooserDialog.java             |  2 +-
 .../quasseldroid/util/ui/DoubleClickHelper.kt   |  2 ++
 .../util/ui/RipplePassthroughTextView.kt        |  2 ++
 .../quasseldroid/util/ui/TextDrawable.java      |  4 +++-
 app/src/main/res/drawable/ic_settings.xml       |  4 +++-
 .../res/layout-sw600dp-land/setup_slide.xml     |  3 ++-
 app/src/main/res/layout-sw600dp/setup_slide.xml |  3 ++-
 app/src/main/res/layout/dialog_colorchooser.xml |  6 ++++--
 .../res/layout/dialog_colorchooser_custom.xml   |  4 +++-
 .../res/layout/dialog_colorchooser_presets.xml  |  4 +++-
 app/src/main/res/layout/layout_history.xml      |  2 +-
 .../res/layout/setup_account_connection.xml     |  7 +++++--
 app/src/main/res/layout/setup_account_edit.xml  | 15 ++++++++++-----
 app/src/main/res/layout/setup_account_name.xml  |  4 +++-
 app/src/main/res/layout/setup_account_user.xml  |  7 +++++--
 app/src/main/res/layout/setup_slide.xml         |  3 ++-
 app/src/main/res/xml/backup_content.xml         |  6 ++++++
 lint.xml                                        | 17 +++++++++++++++++
 malheur/build.gradle.kts                        |  5 +++++
 persistence/build.gradle.kts                    |  9 +++++++--
 settings.gradle                                 |  9 ++++++++-
 slidingpanel/build.gradle.kts                   |  5 +++++
 .../slidinguppanel/SlidingUpPanelLayout.java    |  1 +
 viewmodel/build.gradle.kts                      |  5 +++++
 29 files changed, 122 insertions(+), 34 deletions(-)
 create mode 100644 app/src/main/res/xml/backup_content.xml
 create mode 100644 lint.xml

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 6eba13a50..1e2b5c6af 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -37,11 +37,16 @@ unitTests:
   cache:
     policy: "pull"
   script:
-    - "./gradlew test"
+    - "./gradlew check"
 
 deploy:
   stage: "deploy"
   image: "k8r.eu/justjanne/docker-s3cmd:latest"
+  only:
+    refs:
+    - "master"
+    variables:
+    - "$S3_CONFIG != ''"
   dependencies:
   - "build"
   script:
diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index df3ccc09f..8461fb730 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -106,7 +106,8 @@ android {
   }
 
   lintOptions {
-    disable("ResourceType")
+    isWarningsAsErrors = true
+    setLintConfig(file("../lint.xml"))
   }
 }
 
@@ -133,7 +134,7 @@ dependencies {
   }
 
   // App Arch Persistence
-  withVersion("1.1.0-beta2") {
+  withVersion("1.1.0-beta3") {
     implementation("android.arch.persistence.room", "runtime", version)
     implementation("android.arch.persistence.room", "rxjava2", version)
     kapt("android.arch.persistence.room", "compiler", version)
@@ -141,7 +142,7 @@ dependencies {
   }
 
   // App Arch Paging
-  implementation("android.arch.paging", "runtime", "1.0.0-beta1") {
+  implementation("android.arch.paging", "runtime", "1.0.0-rc1") {
     exclude(group = "junit", module = "junit")
   }
 
diff --git a/app/sampledata/libraries.json b/app/sampledata/libraries.json
index 16a8be11d..81d668907 100644
--- a/app/sampledata/libraries.json
+++ b/app/sampledata/libraries.json
@@ -20,7 +20,7 @@
     },
     {
       "name": "Android Architecture Components: Persistence",
-      "version": "1.1.0-beta1",
+      "version": "1.1.0-beta3",
       "license": {
         "short_name": "Apache-2.0",
         "full_name": "Apache License"
@@ -29,7 +29,7 @@
     },
     {
       "name": "Android Architecture Components: Room",
-      "version": "1.1.0-beta1",
+      "version": "1.1.0-beta3",
       "license": {
         "short_name": "Apache-2.0",
         "full_name": "Apache License"
@@ -47,7 +47,7 @@
     },
     {
       "name": "Android Support Library",
-      "version": "27.1.0",
+      "version": "27.1.1",
       "license": {
         "short_name": "Apache-2.0",
         "full_name": "Apache License"
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index c790f3065..96b3a7d1c 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -38,6 +38,7 @@
   <application
     android:name=".QuasselDroid"
     android:allowBackup="true"
+    android:fullBackupContent="@xml/backup_content"
     android:description="@string/app_description"
     android:icon="@mipmap/ic_launcher"
     android:label="@string/app_name"
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/about/AboutFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/about/AboutFragment.kt
index df041ed4f..bdfa52c1b 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/about/AboutFragment.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/about/AboutFragment.kt
@@ -107,13 +107,13 @@ class AboutFragment : DaggerFragment() {
       ),
       Library(
         name = "Android Architecture Components: Persistence",
-        version = "1.1.0-beta1",
+        version = "1.1.0-beta3",
         license = apache2,
         url = "https://android.googlesource.com/platform/frameworks/support/+/master/persistence"
       ),
       Library(
         name = "Android Architecture Components: Room",
-        version = "1.1.0-beta1",
+        version = "1.1.0-beta3",
         license = apache2,
         url = "https://android.googlesource.com/platform/frameworks/support/+/master/persistence"
       ),
@@ -125,7 +125,7 @@ class AboutFragment : DaggerFragment() {
       ),
       Library(
         name = "Android Support Library",
-        version = "27.1.0",
+        version = "27.1.1",
         license = apache2,
         url = "https://android.googlesource.com/platform/frameworks/support/+/master"
       ),
diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/ui/ColorChooserDialog.java b/app/src/main/java/de/kuschku/quasseldroid/util/ui/ColorChooserDialog.java
index 887290fa8..f8b9a8196 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/util/ui/ColorChooserDialog.java
+++ b/app/src/main/java/de/kuschku/quasseldroid/util/ui/ColorChooserDialog.java
@@ -67,7 +67,7 @@ import de.kuschku.quasseldroid.R;
 /**
  * @author Aidan Follestad (afollestad)
  */
-@SuppressWarnings({"FieldCanBeLocal", "ConstantConditions"})
+@SuppressWarnings({"FieldCanBeLocal", "ConstantConditions", "PrivateResource"})
 public class ColorChooserDialog extends DialogFragment
   implements View.OnClickListener, View.OnLongClickListener {
 
diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/ui/DoubleClickHelper.kt b/app/src/main/java/de/kuschku/quasseldroid/util/ui/DoubleClickHelper.kt
index a7bdd0bad..82ce2f70f 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/util/ui/DoubleClickHelper.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/util/ui/DoubleClickHelper.kt
@@ -22,6 +22,7 @@
 
 package de.kuschku.quasseldroid.util.ui
 
+import android.annotation.SuppressLint
 import android.view.GestureDetector
 import android.view.MotionEvent
 import android.view.View
@@ -43,5 +44,6 @@ class DoubleClickHelper(view: View) : View.OnTouchListener {
     }
   )
 
+  @SuppressLint("ClickableViewAccessibility")
   override fun onTouch(v: View?, event: MotionEvent?) = gestureDetector.onTouchEvent(event)
 }
diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/ui/RipplePassthroughTextView.kt b/app/src/main/java/de/kuschku/quasseldroid/util/ui/RipplePassthroughTextView.kt
index 5e0794218..67bf9d6d1 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/util/ui/RipplePassthroughTextView.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/util/ui/RipplePassthroughTextView.kt
@@ -22,6 +22,7 @@
 
 package de.kuschku.quasseldroid.util.ui
 
+import android.annotation.SuppressLint
 import android.content.Context
 import android.support.v7.widget.AppCompatTextView
 import android.text.Spannable
@@ -36,6 +37,7 @@ class RipplePassthroughTextView : AppCompatTextView {
 
   // The goal is to provide all normal interaction to the parent view, unless a link is touched
   // But additionally, we want to provide all normal textview interactions as well
+  @SuppressLint("ClickableViewAccessibility")
   override fun onTouchEvent(event: MotionEvent): Boolean {
     val movementMethod = this.movementMethod
     this.movementMethod = null
diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/ui/TextDrawable.java b/app/src/main/java/de/kuschku/quasseldroid/util/ui/TextDrawable.java
index 6ecc40896..20c37bcdc 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/util/ui/TextDrawable.java
+++ b/app/src/main/java/de/kuschku/quasseldroid/util/ui/TextDrawable.java
@@ -35,6 +35,8 @@ import android.graphics.drawable.shapes.OvalShape;
 import android.graphics.drawable.shapes.RectShape;
 import android.graphics.drawable.shapes.RoundRectShape;
 
+import java.util.Locale;
+
 /**
  * @author amulya
  * created 14 Oct 2014
@@ -62,7 +64,7 @@ public class TextDrawable extends ShapeDrawable {
     radius = builder.radius;
 
     // text and color
-    text = builder.toUpperCase ? builder.text.toUpperCase() : builder.text;
+    text = builder.toUpperCase ? builder.text.toUpperCase(Locale.getDefault()) : builder.text;
 
     // text paint settings
     fontSize = builder.fontSize;
diff --git a/app/src/main/res/drawable/ic_settings.xml b/app/src/main/res/drawable/ic_settings.xml
index 9092a800b..f532bfd12 100644
--- a/app/src/main/res/drawable/ic_settings.xml
+++ b/app/src/main/res/drawable/ic_settings.xml
@@ -21,10 +21,12 @@
   -->
 
 <vector xmlns:android="http://schemas.android.com/apk/res/android"
+  xmlns:tools="http://schemas.android.com/tools"
   android:width="24dp"
   android:height="24dp"
   android:viewportHeight="24"
-  android:viewportWidth="24">
+  android:viewportWidth="24"
+  tools:ignore="VectorPath">
   <path
     android:fillColor="#000"
     android:pathData="M12,15.5A3.5,3.5 0 0,1 8.5,12A3.5,3.5 0 0,1 12,8.5A3.5,3.5 0 0,1 15.5,12A3.5,3.5 0 0,1 12,15.5M19.43,12.97C19.47,12.65 19.5,12.33 19.5,12C19.5,11.67 19.47,11.34 19.43,11L21.54,9.37C21.73,9.22 21.78,8.95 21.66,8.73L19.66,5.27C19.54,5.05 19.27,4.96 19.05,5.05L16.56,6.05C16.04,5.66 15.5,5.32 14.87,5.07L14.5,2.42C14.46,2.18 14.25,2 14,2H10C9.75,2 9.54,2.18 9.5,2.42L9.13,5.07C8.5,5.32 7.96,5.66 7.44,6.05L4.95,5.05C4.73,4.96 4.46,5.05 4.34,5.27L2.34,8.73C2.21,8.95 2.27,9.22 2.46,9.37L4.57,11C4.53,11.34 4.5,11.67 4.5,12C4.5,12.33 4.53,12.65 4.57,12.97L2.46,14.63C2.27,14.78 2.21,15.05 2.34,15.27L4.34,18.73C4.46,18.95 4.73,19.03 4.95,18.95L7.44,17.94C7.96,18.34 8.5,18.68 9.13,18.93L9.5,21.58C9.54,21.82 9.75,22 10,22H14C14.25,22 14.46,21.82 14.5,21.58L14.87,18.93C15.5,18.67 16.04,18.34 16.56,17.94L19.05,18.95C19.27,19.03 19.54,18.95 19.66,18.73L21.66,15.27C21.78,15.05 21.73,14.78 21.54,14.63L19.43,12.97Z" />
diff --git a/app/src/main/res/layout-sw600dp-land/setup_slide.xml b/app/src/main/res/layout-sw600dp-land/setup_slide.xml
index 9220d8a36..7dad7edaa 100644
--- a/app/src/main/res/layout-sw600dp-land/setup_slide.xml
+++ b/app/src/main/res/layout-sw600dp-land/setup_slide.xml
@@ -28,7 +28,8 @@
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:paddingLeft="?attr/actionBarSize"
-  android:paddingRight="?attr/actionBarSize">
+  android:paddingRight="?attr/actionBarSize"
+  tools:ignore="InconsistentLayout">
 
   <LinearLayout
     android:layout_width="0dip"
diff --git a/app/src/main/res/layout-sw600dp/setup_slide.xml b/app/src/main/res/layout-sw600dp/setup_slide.xml
index 1697d6960..1a3ec1d8d 100644
--- a/app/src/main/res/layout-sw600dp/setup_slide.xml
+++ b/app/src/main/res/layout-sw600dp/setup_slide.xml
@@ -24,7 +24,8 @@
   xmlns:app="http://schemas.android.com/apk/res-auto"
   xmlns:tools="http://schemas.android.com/tools"
   android:layout_width="match_parent"
-  android:layout_height="match_parent">
+  android:layout_height="match_parent"
+  tools:ignore="InconsistentLayout">
 
   <LinearLayout
     android:layout_width="400dp"
diff --git a/app/src/main/res/layout/dialog_colorchooser.xml b/app/src/main/res/layout/dialog_colorchooser.xml
index 033fc5e9e..fc9b41103 100644
--- a/app/src/main/res/layout/dialog_colorchooser.xml
+++ b/app/src/main/res/layout/dialog_colorchooser.xml
@@ -21,10 +21,12 @@
   -->
 
 <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
+  xmlns:tools="http://schemas.android.com/tools"
   android:layout_width="match_parent"
-  android:layout_height="match_parent">
+  android:layout_height="match_parent"
+  tools:ignore="PrivateResource">
 
-  <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+  <FrameLayout
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:orientation="vertical">
diff --git a/app/src/main/res/layout/dialog_colorchooser_custom.xml b/app/src/main/res/layout/dialog_colorchooser_custom.xml
index 93b303a98..2861ac2b6 100644
--- a/app/src/main/res/layout/dialog_colorchooser_custom.xml
+++ b/app/src/main/res/layout/dialog_colorchooser_custom.xml
@@ -27,7 +27,8 @@
   android:layout_height="wrap_content"
   android:orientation="vertical"
   android:paddingBottom="@dimen/md_title_frame_margin_bottom"
-  android:paddingTop="@dimen/md_title_frame_margin_bottom">
+  android:paddingTop="@dimen/md_title_frame_margin_bottom"
+  tools:ignore="PrivateResource">
 
   <View
     android:id="@+id/md_colorIndicator"
@@ -63,6 +64,7 @@
       android:textColor="?colorTextPrimary"
       android:textColorHint="?colorTextSecondary"
       android:textSize="@dimen/md_title_textsize"
+      android:inputType="textNoSuggestions"
       tools:ignore="HardcodedText" />
 
   </LinearLayout>
diff --git a/app/src/main/res/layout/dialog_colorchooser_presets.xml b/app/src/main/res/layout/dialog_colorchooser_presets.xml
index 596f06e09..507b20766 100644
--- a/app/src/main/res/layout/dialog_colorchooser_presets.xml
+++ b/app/src/main/res/layout/dialog_colorchooser_presets.xml
@@ -21,6 +21,7 @@
   -->
 
 <com.afollestad.materialdialogs.color.FillGridView xmlns:android="http://schemas.android.com/apk/res/android"
+  xmlns:tools="http://schemas.android.com/tools"
   android:id="@+id/md_grid"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
@@ -32,4 +33,5 @@
   android:orientation="vertical"
   android:padding="16dp"
   android:stretchMode="columnWidth"
-  android:verticalSpacing="8dp" />
+  android:verticalSpacing="8dp"
+  tools:ignore="PrivateResource" />
diff --git a/app/src/main/res/layout/layout_history.xml b/app/src/main/res/layout/layout_history.xml
index d9c462652..f1599ed2f 100644
--- a/app/src/main/res/layout/layout_history.xml
+++ b/app/src/main/res/layout/layout_history.xml
@@ -64,7 +64,7 @@
           android:layout_weight="1" />
 
         <android.support.v7.widget.AppCompatImageView
-          android:id="@+id/send"
+          android:id="@+id/close"
           android:layout_width="48dp"
           android:layout_height="48dp"
           android:layout_gravity="top|end"
diff --git a/app/src/main/res/layout/setup_account_connection.xml b/app/src/main/res/layout/setup_account_connection.xml
index 0c5985fc5..f5b3785a9 100644
--- a/app/src/main/res/layout/setup_account_connection.xml
+++ b/app/src/main/res/layout/setup_account_connection.xml
@@ -24,6 +24,7 @@
 
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:app="http://schemas.android.com/apk/res-auto"
+  xmlns:tools="http://schemas.android.com/tools"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:orientation="vertical"
@@ -34,7 +35,8 @@
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:hint="@string/label_connection_host"
-    app:errorEnabled="true">
+    app:errorEnabled="true"
+    tools:ignore="LabelFor">
 
     <EditText
       android:id="@+id/host"
@@ -48,7 +50,8 @@
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:hint="@string/labelConnectionPort"
-    app:errorEnabled="true">
+    app:errorEnabled="true"
+    tools:ignore="LabelFor">
 
     <EditText
       android:id="@+id/port"
diff --git a/app/src/main/res/layout/setup_account_edit.xml b/app/src/main/res/layout/setup_account_edit.xml
index 94c913574..ae0cc9110 100644
--- a/app/src/main/res/layout/setup_account_edit.xml
+++ b/app/src/main/res/layout/setup_account_edit.xml
@@ -59,7 +59,8 @@
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:hint="@string/label_account_name"
-        app:errorEnabled="true">
+        app:errorEnabled="true"
+        tools:ignore="LabelFor">
 
         <EditText
           android:id="@+id/name"
@@ -102,7 +103,8 @@
           android:layout_width="match_parent"
           android:layout_height="wrap_content"
           android:hint="@string/label_connection_host"
-          app:errorEnabled="true">
+          app:errorEnabled="true"
+          tools:ignore="LabelFor">
 
           <EditText
             android:id="@+id/host"
@@ -116,7 +118,8 @@
           android:layout_width="match_parent"
           android:layout_height="wrap_content"
           android:hint="@string/labelConnectionPort"
-          app:errorEnabled="true">
+          app:errorEnabled="true"
+          tools:ignore="LabelFor">
 
           <EditText
             android:id="@+id/port"
@@ -161,7 +164,8 @@
           android:id="@+id/userWrapper"
           android:layout_width="match_parent"
           android:layout_height="wrap_content"
-          android:hint="@string/label_account_user">
+          android:hint="@string/label_account_user"
+          tools:ignore="LabelFor">
 
           <EditText
             android:id="@+id/user"
@@ -176,7 +180,8 @@
           android:layout_width="match_parent"
           android:layout_height="wrap_content"
           android:hint="@string/label_account_pass"
-          app:passwordToggleEnabled="true">
+          app:passwordToggleEnabled="true"
+          tools:ignore="LabelFor">
 
           <EditText
             android:id="@+id/pass"
diff --git a/app/src/main/res/layout/setup_account_name.xml b/app/src/main/res/layout/setup_account_name.xml
index 381402b07..1b34e2ec8 100644
--- a/app/src/main/res/layout/setup_account_name.xml
+++ b/app/src/main/res/layout/setup_account_name.xml
@@ -22,6 +22,7 @@
 
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:app="http://schemas.android.com/apk/res-auto"
+  xmlns:tools="http://schemas.android.com/tools"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:orientation="vertical"
@@ -32,7 +33,8 @@
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:hint="@string/label_account_name"
-    app:errorEnabled="true">
+    app:errorEnabled="true"
+    tools:ignore="LabelFor">
 
     <EditText
       android:id="@+id/name"
diff --git a/app/src/main/res/layout/setup_account_user.xml b/app/src/main/res/layout/setup_account_user.xml
index f00af4bf7..e2f79cba4 100644
--- a/app/src/main/res/layout/setup_account_user.xml
+++ b/app/src/main/res/layout/setup_account_user.xml
@@ -22,6 +22,7 @@
 
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:app="http://schemas.android.com/apk/res-auto"
+  xmlns:tools="http://schemas.android.com/tools"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:orientation="vertical"
@@ -31,7 +32,8 @@
     android:id="@+id/userWrapper"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
-    android:hint="@string/label_account_user">
+    android:hint="@string/label_account_user"
+    tools:ignore="LabelFor">
 
     <EditText
       android:id="@+id/user"
@@ -46,7 +48,8 @@
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:hint="@string/label_account_pass"
-    app:passwordToggleEnabled="true">
+    app:passwordToggleEnabled="true"
+    tools:ignore="LabelFor">
 
     <EditText
       android:id="@+id/pass"
diff --git a/app/src/main/res/layout/setup_slide.xml b/app/src/main/res/layout/setup_slide.xml
index 689d098c1..78761f95a 100644
--- a/app/src/main/res/layout/setup_slide.xml
+++ b/app/src/main/res/layout/setup_slide.xml
@@ -24,7 +24,8 @@
   xmlns:app="http://schemas.android.com/apk/res-auto"
   xmlns:tools="http://schemas.android.com/tools"
   android:layout_width="match_parent"
-  android:layout_height="match_parent">
+  android:layout_height="match_parent"
+  tools:ignore="InconsistentLayout">
 
   <android.support.design.widget.AppBarLayout
     android:layout_width="match_parent"
diff --git a/app/src/main/res/xml/backup_content.xml b/app/src/main/res/xml/backup_content.xml
new file mode 100644
index 000000000..dde517c6c
--- /dev/null
+++ b/app/src/main/res/xml/backup_content.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<full-backup-content>
+  <include
+    domain="sharedpref"
+    path="." />
+</full-backup-content>
diff --git a/lint.xml b/lint.xml
new file mode 100644
index 000000000..9e813ae3b
--- /dev/null
+++ b/lint.xml
@@ -0,0 +1,17 @@
+<lint>
+  <issue id="NewerVersionAvailable" severity="error" />
+
+  <!-- Because of course paging and room have incompatible versions -->
+  <issue id="GradleCompatible" severity="ignore" />
+
+  <!-- Because these are entirely broken -->
+  <issue id="ResourceType" severity="ignore" />
+  <issue id="UnusedResources" severity="ignore" />
+  <issue id="ObsoleteLintCustomCheck" severity="ignore" />
+
+  <!-- Because otherwise I can’t use the legacy icon in the settings -->
+  <issue id="IconDuplicates" severity="ignore" />
+
+  <!-- Because this doesn’t work when using splash themes -->
+  <issue id="Overdraw" severity="ignore" />
+</lint>
diff --git a/malheur/build.gradle.kts b/malheur/build.gradle.kts
index 0a96ebfc8..1bd79c8f9 100644
--- a/malheur/build.gradle.kts
+++ b/malheur/build.gradle.kts
@@ -41,6 +41,11 @@ android {
       "disableAnalytics" to "true"
     )
   }
+
+  lintOptions {
+    isWarningsAsErrors = true
+    setLintConfig(file("../lint.xml"))
+  }
 }
 
 dependencies {
diff --git a/persistence/build.gradle.kts b/persistence/build.gradle.kts
index c4858bc34..091ab25e1 100644
--- a/persistence/build.gradle.kts
+++ b/persistence/build.gradle.kts
@@ -47,6 +47,11 @@ android {
       "disableAnalytics" to "true"
     )
   }
+
+  lintOptions {
+    isWarningsAsErrors = true
+    setLintConfig(file("../lint.xml"))
+  }
 }
 
 dependencies {
@@ -58,7 +63,7 @@ dependencies {
   }
 
   // App Arch Persistence
-  withVersion("1.1.0-beta2") {
+  withVersion("1.1.0-beta3") {
     implementation("android.arch.persistence.room", "runtime", version)
     implementation("android.arch.persistence.room", "rxjava2", version)
     kapt("android.arch.persistence.room", "compiler", version)
@@ -66,7 +71,7 @@ dependencies {
   }
 
   // App Arch Paging
-  implementation("android.arch.paging", "runtime", "1.0.0-beta1") {
+  implementation("android.arch.paging", "runtime", "1.0.0-rc1") {
     exclude(group = "junit", module = "junit")
   }
 
diff --git a/settings.gradle b/settings.gradle
index 8346cc68a..91ee4e247 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -1,3 +1,10 @@
-include ':invokerannotations', ':invokergenerator', ':lib', ':malheur', ':app', ":slidingpanel", ":viewmodel", ":persistence"
+include ':invokerannotations',
+        ':invokergenerator',
+        ':lib',
+        ":viewmodel",
+        ":persistence",
+        ":slidingpanel",
+        ':malheur',
+        ':app'
 
 rootProject.buildFileName = 'build.gradle.kts'
diff --git a/slidingpanel/build.gradle.kts b/slidingpanel/build.gradle.kts
index de15f4bcd..273bf0043 100644
--- a/slidingpanel/build.gradle.kts
+++ b/slidingpanel/build.gradle.kts
@@ -15,6 +15,11 @@ android {
       "disableAnalytics" to "true"
     )
   }
+
+  lintOptions {
+    isWarningsAsErrors = true
+    setLintConfig(file("../lint.xml"))
+  }
 }
 
 dependencies {
diff --git a/slidingpanel/src/main/java/com/sothree/slidinguppanel/SlidingUpPanelLayout.java b/slidingpanel/src/main/java/com/sothree/slidinguppanel/SlidingUpPanelLayout.java
index e8d904a9a..5c20c6e8f 100644
--- a/slidingpanel/src/main/java/com/sothree/slidinguppanel/SlidingUpPanelLayout.java
+++ b/slidingpanel/src/main/java/com/sothree/slidinguppanel/SlidingUpPanelLayout.java
@@ -906,6 +906,7 @@ public class SlidingUpPanelLayout extends ViewGroup {
     return mDragHelper.shouldInterceptTouchEvent(ev);
   }
 
+  @SuppressLint("ClickableViewAccessibility")
   @Override
   public boolean onTouchEvent(MotionEvent ev) {
     if (!isEnabled() || !isTouchEnabled()) {
diff --git a/viewmodel/build.gradle.kts b/viewmodel/build.gradle.kts
index 5b950b367..55e2f01d6 100644
--- a/viewmodel/build.gradle.kts
+++ b/viewmodel/build.gradle.kts
@@ -41,6 +41,11 @@ android {
       "disableAnalytics" to "true"
     )
   }
+
+  lintOptions {
+    isWarningsAsErrors = true
+    setLintConfig(file("../lint.xml"))
+  }
 }
 
 dependencies {
-- 
GitLab