diff --git a/app/build.gradle b/app/build.gradle
index 47e7a550a..9c6edb45b 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -1,6 +1,6 @@
plugins {
id('com.android.application')
- id('com.github.triplet.play') version '3.7.0-agp4.2' apply false
+ id('com.github.triplet.play') version '3.7.0' apply false
}
apply from: "../common.gradle"
apply from: "../playFlavor.gradle"
@@ -56,23 +56,19 @@ android {
}
}
- lintOptions {
+ lint {
disable 'ObsoleteLintCustomCheck', 'CheckResult', 'UnusedAttribute', 'BatteryLife', 'InflateParams',
'RestrictedApi', 'TrustAllX509TrustManager', 'ExportedReceiver', 'AllowBackup', 'VectorDrawableCompat',
'StaticFieldLeak', 'UseCompoundDrawables', 'NestedWeights', 'Overdraw', 'UselessParent', 'TextFields',
'AlwaysShowAction', 'Autofill', 'ClickableViewAccessibility', 'ContentDescription',
'KeyboardInaccessibleWidget', 'LabelFor', 'SetTextI18n', 'HardcodedText', 'RelativeOverlap',
'RtlCompat', 'RtlHardcoded', 'MissingMediaBrowserServiceIntentFilter', 'VectorPath',
- 'InvalidPeriodicWorkRequestInterval'
+ 'InvalidPeriodicWorkRequestInterval', 'NotifyDataSetChanged', 'RtlEnabled'
}
- aaptOptions {
+ androidResources {
additionalParameters "--no-version-vectors"
}
-
- dexOptions {
- jumboMode true
- }
}
dependencies {
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index d784e8709..a1b596d6c 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -76,7 +76,6 @@
@@ -99,7 +98,6 @@
android:configChanges="keyboardHidden|orientation|screenSize|smallestScreenSize|screenLayout|density|uiMode|keyboard|navigation"
android:windowSoftInputMode="stateAlwaysHidden"
android:launchMode="singleTask"
- android:label="@string/app_name"
android:exported="true">
@@ -111,14 +109,21 @@
android:host="antennapod.org"
android:pathPrefix="/deeplink/main"
android:scheme="https" />
+
+
+
+
+
+
+
-
+
@@ -382,6 +387,7 @@
diff --git a/build.gradle b/build.gradle
index d5f24bc56..1a16e1dac 100644
--- a/build.gradle
+++ b/build.gradle
@@ -5,7 +5,7 @@ buildscript {
gradlePluginPortal()
}
dependencies {
- classpath 'com.android.tools.build:gradle:4.2.2'
+ classpath 'com.android.tools.build:gradle:7.4.0'
classpath "gradle.plugin.com.github.spotbugs.snom:spotbugs-gradle-plugin:4.7.0"
classpath 'org.codehaus.groovy:groovy-xml:3.0.9'
}
diff --git a/common.gradle b/common.gradle
index 258f512f1..902b17496 100644
--- a/common.gradle
+++ b/common.gradle
@@ -24,16 +24,17 @@ android {
}
packagingOptions {
- exclude "META-INF/LICENSE.txt"
- exclude "META-INF/NOTICE.txt"
- // Extraneous jsoup files
- exclude "META-INF/CHANGES"
- exclude "META-INF/README.md"
+ resources {
+ excludes += ["META-INF/LICENSE.txt",
+ "META-INF/NOTICE.txt",
+ "META-INF/CHANGES",
+ "META-INF/README.md"]
+ }
}
compileOptions {
- sourceCompatibility JavaVersion.VERSION_1_8
- targetCompatibility JavaVersion.VERSION_1_8
+ sourceCompatibility JavaVersion.VERSION_11
+ targetCompatibility JavaVersion.VERSION_11
}
testOptions {
@@ -43,7 +44,7 @@ android {
}
}
- lintOptions {
+ lint {
disable "GradleDependency"
checkDependencies true
warningsAsErrors true
diff --git a/core/build.gradle b/core/build.gradle
index 02c273db1..526589230 100644
--- a/core/build.gradle
+++ b/core/build.gradle
@@ -5,7 +5,7 @@ apply from: "../common.gradle"
apply from: "../playFlavor.gradle"
android {
- lintOptions {
+ lint {
disable "InvalidPeriodicWorkRequestInterval", "ObsoleteLintCustomCheck", "DefaultLocale", "UnusedAttribute",
"ParcelClassLoader", "CheckResult", "TrustAllX509TrustManager",
"StaticFieldLeak", "IconDensities", "IconDuplicates"
diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackService.java b/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackService.java
index e512f413f..43ee32680 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackService.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackService.java
@@ -2,6 +2,7 @@ package de.danoeh.antennapod.core.service.playback;
import static de.danoeh.antennapod.model.feed.FeedPreferences.SPEED_USE_GLOBAL;
+import android.annotation.SuppressLint;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.app.Service;
@@ -540,6 +541,7 @@ public class PlaybackService extends MediaBrowserServiceCompat {
}
}
+ @SuppressLint("LaunchActivityFromNotification")
private void displayStreamingNotAllowedNotification(Intent originalIntent) {
Intent intentAllowThisTime = new Intent(originalIntent);
intentAllowThisTime.setAction(PlaybackServiceInterface.EXTRA_ALLOW_STREAM_THIS_TIME);
diff --git a/gradle.properties b/gradle.properties
index 4217706ec..e57f3d564 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -1,4 +1,4 @@
android.useAndroidX=true
android.enableJetifier=true
-android.jetifier.blacklist=bcprov-jdk15on
+android.jetifier.ignorelist=bcprov-jdk15on
org.gradle.jvmargs=-Xmx4096m
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index 2e6e5897b..8049c684f 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,5 +1,5 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.3-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
diff --git a/net/download/service-interface/build.gradle b/net/download/service-interface/build.gradle
index 785326bab..5779ab51d 100644
--- a/net/download/service-interface/build.gradle
+++ b/net/download/service-interface/build.gradle
@@ -5,7 +5,7 @@ plugins {
apply from: "../../../common.gradle"
android {
- lintOptions {
+ lint {
disable 'ParcelClassLoader'
}
}
diff --git a/net/ssl/src/main/java/de/danoeh/antennapod/net/ssl/CompositeX509TrustManager.java b/net/ssl/src/main/java/de/danoeh/antennapod/net/ssl/CompositeX509TrustManager.java
index 16b2f0931..252950a99 100644
--- a/net/ssl/src/main/java/de/danoeh/antennapod/net/ssl/CompositeX509TrustManager.java
+++ b/net/ssl/src/main/java/de/danoeh/antennapod/net/ssl/CompositeX509TrustManager.java
@@ -1,5 +1,7 @@
package de.danoeh.antennapod.net.ssl;
+import android.annotation.SuppressLint;
+
import javax.net.ssl.X509TrustManager;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
@@ -12,6 +14,7 @@ import java.util.List;
* trusts a certificate chain, then it is trusted by the composite manager.
* Based on https://stackoverflow.com/a/16229909
*/
+@SuppressLint("CustomX509TrustManager")
public class CompositeX509TrustManager implements X509TrustManager {
private final List trustManagers;
diff --git a/playFlavor.gradle b/playFlavor.gradle
index 7289bd4c9..9f2a3d8d5 100644
--- a/playFlavor.gradle
+++ b/playFlavor.gradle
@@ -1,5 +1,5 @@
android {
- flavorDimensions "market"
+ flavorDimensions += ["market"]
productFlavors {
free {
dimension "market"
diff --git a/playback/cast/src/play/java/de/danoeh/antennapod/playback/cast/CastOptionsProvider.java b/playback/cast/src/play/java/de/danoeh/antennapod/playback/cast/CastOptionsProvider.java
index cdea61c39..e91baa985 100644
--- a/playback/cast/src/play/java/de/danoeh/antennapod/playback/cast/CastOptionsProvider.java
+++ b/playback/cast/src/play/java/de/danoeh/antennapod/playback/cast/CastOptionsProvider.java
@@ -1,5 +1,6 @@
package de.danoeh.antennapod.playback.cast;
+import android.annotation.SuppressLint;
import android.content.Context;
import androidx.annotation.NonNull;
import com.google.android.gms.cast.framework.CastOptions;
@@ -9,6 +10,7 @@ import com.google.android.gms.cast.framework.SessionProvider;
import java.util.List;
@SuppressWarnings("unused")
+@SuppressLint("VisibleForTests")
public class CastOptionsProvider implements OptionsProvider {
@Override
@NonNull
diff --git a/playback/cast/src/play/java/de/danoeh/antennapod/playback/cast/CastPsmp.java b/playback/cast/src/play/java/de/danoeh/antennapod/playback/cast/CastPsmp.java
index 7562f9806..c5bb0a205 100644
--- a/playback/cast/src/play/java/de/danoeh/antennapod/playback/cast/CastPsmp.java
+++ b/playback/cast/src/play/java/de/danoeh/antennapod/playback/cast/CastPsmp.java
@@ -1,5 +1,6 @@
package de.danoeh.antennapod.playback.cast;
+import android.annotation.SuppressLint;
import android.content.Context;
import androidx.annotation.NonNull;
import android.util.Log;
@@ -36,6 +37,7 @@ import org.greenrobot.eventbus.EventBus;
/**
* Implementation of PlaybackServiceMediaPlayer suitable for remote playback on Cast Devices.
*/
+@SuppressLint("VisibleForTests")
public class CastPsmp extends PlaybackServiceMediaPlayer {
public static final String TAG = "CastPSMP";
diff --git a/storage/database/build.gradle b/storage/database/build.gradle
index 141cdb086..0dc5cef63 100644
--- a/storage/database/build.gradle
+++ b/storage/database/build.gradle
@@ -4,8 +4,8 @@ plugins {
apply from: "../../common.gradle"
android {
- lintOptions {
- disable "StaticFieldLeak"
+ lint {
+ disable "StaticFieldLeak", "StringFormatCount", "StringFormatMatches", "StringFormatInvalid", "PluralsCandidate", "StringFormatTrivial"
}
}
diff --git a/storage/preferences/build.gradle b/storage/preferences/build.gradle
index 0c852bf7a..0da810e28 100644
--- a/storage/preferences/build.gradle
+++ b/storage/preferences/build.gradle
@@ -4,7 +4,7 @@ plugins {
apply from: "../../common.gradle"
android {
- lintOptions {
+ lint {
disable "StaticFieldLeak"
}
}
diff --git a/ui/i18n/build.gradle b/ui/i18n/build.gradle
index a1ace417b..4f5370662 100644
--- a/ui/i18n/build.gradle
+++ b/ui/i18n/build.gradle
@@ -4,7 +4,7 @@ plugins {
apply from: "../../common.gradle"
android {
- lintOptions {
+ lint {
disable "Typos", "ExtraTranslation", "ImpliedQuantity",
"PluralsCandidate", "UnusedQuantity", "TypographyEllipsis"
}