1
0
mirror of https://github.com/TeamNewPipe/NewPipe synced 2025-10-28 05:47:39 +00:00

Migrate to build version catalog

Ref: https://developer.android.com/build/migrate-to-catalogs

Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
This commit is contained in:
Aayush Gupta
2025-10-15 12:58:54 +08:00
parent d99435c4ad
commit 15089245bb
3 changed files with 206 additions and 97 deletions

View File

@@ -4,11 +4,11 @@
*/
plugins {
id("com.android.application")
id("kotlin-android")
id("kotlin-kapt")
id("kotlin-parcelize")
id("org.sonarqube")
alias(libs.plugins.android.application)
alias(libs.plugins.jetbrains.kotlin.android)
alias(libs.plugins.jetbrains.kotlin.kapt)
alias(libs.plugins.jetbrains.kotlin.parcelize)
alias(libs.plugins.sonarqube)
checkstyle
}
@@ -126,28 +126,14 @@ android {
}
}
val checkstyleVersion = "10.12.1"
val androidxLifecycleVersion = "2.6.2"
val androidxRoomVersion = "2.6.1"
val androidxWorkVersion = "2.8.1"
val stateSaverVersion = "1.4.1"
val exoPlayerVersion = "2.18.7"
val googleAutoServiceVersion = "1.1.1"
val groupieVersion = "2.10.1"
val markwonVersion = "4.6.2"
val leakCanaryVersion = "2.12"
val stethoVersion = "1.6.0"
// Custom dependency configuration for ktlint
val ktlint by configurations.creating
checkstyle {
configDirectory = rootProject.file("checkstyle")
isIgnoreFailures = false
isShowViolations = true
toolVersion = checkstyleVersion
toolVersion = libs.versions.checkstyle.get()
}
tasks.register<Checkstyle>("runCheckstyle") {
@@ -208,113 +194,106 @@ sonar {
dependencies {
/** Desugaring **/
coreLibraryDesugaring("com.android.tools:desugar_jdk_libs_nio:2.0.4")
coreLibraryDesugaring(libs.android.desugar)
/** NewPipe libraries **/
implementation("com.github.TeamNewPipe:nanojson:e9d656ddb49a412a5a0a5d5ef20ca7ef09549996")
// WORKAROUND: if you get errors with the NewPipeExtractor dependency, replace `v0.24.3` with
// the corresponding commit hash, since JitPack sometimes deletes artifacts.
// If theres already a git hash, just add more of it to the end (or remove a letter)
// to cause jitpack to regenerate the artifact.
implementation("com.github.TeamNewPipe:NewPipeExtractor:0023b22095a2d62a60cdfc87f4b5cd85c8b266c3")
implementation("com.github.TeamNewPipe:NoNonsense-FilePicker:5.0.0")
implementation(libs.newpipe.nanojson)
implementation(libs.newpipe.extractor)
implementation(libs.newpipe.filepicker)
/** Checkstyle **/
checkstyle("com.puppycrawl.tools:checkstyle:$checkstyleVersion")
ktlint("com.pinterest:ktlint:0.45.2")
checkstyle(libs.puppycrawl.checkstyle)
ktlint(libs.pinterest.ktlint)
/** AndroidX **/
implementation("androidx.appcompat:appcompat:1.7.1")
implementation("androidx.cardview:cardview:1.0.0")
implementation("androidx.constraintlayout:constraintlayout:2.1.4")
implementation("androidx.core:core-ktx:1.12.0")
implementation("androidx.documentfile:documentfile:1.0.1")
implementation("androidx.fragment:fragment-ktx:1.6.2")
implementation("androidx.lifecycle:lifecycle-livedata-ktx:$androidxLifecycleVersion")
implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:$androidxLifecycleVersion")
implementation("androidx.localbroadcastmanager:localbroadcastmanager:1.1.0")
implementation("androidx.media:media:1.7.0")
implementation("androidx.preference:preference:1.2.1")
implementation("androidx.recyclerview:recyclerview:1.3.2")
implementation("androidx.room:room-runtime:$androidxRoomVersion")
implementation("androidx.room:room-rxjava3:$androidxRoomVersion")
kapt("androidx.room:room-compiler:$androidxRoomVersion")
implementation("androidx.swiperefreshlayout:swiperefreshlayout:1.1.0")
// Newer version specified to prevent accessibility regressions with RecyclerView, see:
// https://developer.android.com/jetpack/androidx/releases/viewpager2#1.1.0-alpha01
implementation("androidx.viewpager2:viewpager2:1.1.0-beta02")
implementation("androidx.work:work-runtime-ktx:$androidxWorkVersion")
implementation("androidx.work:work-rxjava3:$androidxWorkVersion")
implementation("com.google.android.material:material:1.11.0")
implementation("androidx.webkit:webkit:1.9.0")
implementation(libs.androidx.appcompat)
implementation(libs.androidx.cardview)
implementation(libs.androidx.constraintlayout)
implementation(libs.androidx.core)
implementation(libs.androidx.documentfile)
implementation(libs.androidx.fragment)
implementation(libs.androidx.lifecycle.livedata)
implementation(libs.androidx.lifecycle.viewmodel)
implementation(libs.androidx.localbroadcastmanager)
implementation(libs.androidx.media)
implementation(libs.androidx.preference)
implementation(libs.androidx.recyclerview)
implementation(libs.androidx.room.runtime)
implementation(libs.androidx.room.rxjava3)
kapt(libs.androidx.room.compiler)
implementation(libs.androidx.swiperefreshlayout)
implementation(libs.androidx.viewpager2)
implementation(libs.androidx.work.runtime)
implementation(libs.androidx.work.rxjava3)
implementation(libs.google.android.material)
implementation(libs.androidx.webkit)
/** Third-party libraries **/
implementation("com.github.livefront:bridge:v2.0.2")
implementation("com.evernote:android-state:$stateSaverVersion")
kapt("com.evernote:android-state-processor:$stateSaverVersion")
implementation(libs.livefront.bridge)
implementation(libs.evernote.statesaver.core)
kapt(libs.evernote.statesaver.compiler)
// HTML parser
implementation("org.jsoup:jsoup:1.17.2")
implementation(libs.jsoup)
// HTTP client
implementation("com.squareup.okhttp3:okhttp:4.12.0")
implementation(libs.squareup.okhttp)
// Media player
implementation("com.google.android.exoplayer:exoplayer-core:$exoPlayerVersion")
implementation("com.google.android.exoplayer:exoplayer-dash:$exoPlayerVersion")
implementation("com.google.android.exoplayer:exoplayer-database:$exoPlayerVersion")
implementation("com.google.android.exoplayer:exoplayer-datasource:$exoPlayerVersion")
implementation("com.google.android.exoplayer:exoplayer-hls:$exoPlayerVersion")
implementation("com.google.android.exoplayer:exoplayer-smoothstreaming:$exoPlayerVersion")
implementation("com.google.android.exoplayer:exoplayer-ui:$exoPlayerVersion")
implementation("com.google.android.exoplayer:extension-mediasession:$exoPlayerVersion")
implementation(libs.google.exoplayer.core)
implementation(libs.google.exoplayer.dash)
implementation(libs.google.exoplayer.database)
implementation(libs.google.exoplayer.datasource)
implementation(libs.google.exoplayer.hls)
implementation(libs.google.exoplayer.mediasession)
implementation(libs.google.exoplayer.smoothstreaming)
implementation(libs.google.exoplayer.ui)
// Metadata generator for service descriptors
compileOnly("com.google.auto.service:auto-service-annotations:$googleAutoServiceVersion")
kapt("com.google.auto.service:auto-service:$googleAutoServiceVersion")
compileOnly(libs.google.autoservice.annotations)
kapt(libs.google.autoservice.compiler)
// Manager for complex RecyclerView layouts
implementation("com.github.lisawray.groupie:groupie:$groupieVersion")
implementation("com.github.lisawray.groupie:groupie-viewbinding:$groupieVersion")
implementation(libs.lisawray.groupie.core)
implementation(libs.lisawray.groupie.viewbinding)
// Image loading
//noinspection NewerVersionAvailable,GradleDependency --> 2.8 is the last version, not 2.71828!
implementation("com.squareup.picasso:picasso:2.8")
implementation(libs.squareup.picasso)
// Markdown library for Android
implementation("io.noties.markwon:core:$markwonVersion")
implementation("io.noties.markwon:linkify:$markwonVersion")
implementation(libs.noties.markwon.core)
implementation(libs.noties.markwon.linkify)
// Crash reporting
implementation("ch.acra:acra-core:5.11.3")
implementation(libs.acra.core)
// Properly restarting
implementation("com.jakewharton:process-phoenix:2.1.2")
implementation(libs.jakewharton.phoenix)
// Reactive extensions for Java VM
implementation("io.reactivex.rxjava3:rxjava:3.1.8")
implementation("io.reactivex.rxjava3:rxandroid:3.0.2")
implementation(libs.reactivex.rxjava)
implementation(libs.reactivex.rxandroid)
// RxJava binding APIs for Android UI widgets
implementation("com.jakewharton.rxbinding4:rxbinding:4.0.0")
implementation(libs.jakewharton.rxbinding)
// Date and time formatting
implementation("org.ocpsoft.prettytime:prettytime:5.0.8.Final")
implementation(libs.ocpsoft.prettytime)
/** Debugging **/
// Memory leak detection
debugImplementation("com.squareup.leakcanary:leakcanary-object-watcher-android:$leakCanaryVersion")
debugImplementation("com.squareup.leakcanary:plumber-android:$leakCanaryVersion")
debugImplementation("com.squareup.leakcanary:leakcanary-android-core:$leakCanaryVersion")
debugImplementation(libs.squareup.leakcanary.watcher)
debugImplementation(libs.squareup.leakcanary.plumber)
debugImplementation(libs.squareup.leakcanary.core)
// Debug bridge for Android
debugImplementation("com.facebook.stetho:stetho:$stethoVersion")
debugImplementation("com.facebook.stetho:stetho-okhttp3:$stethoVersion")
debugImplementation(libs.facebook.stetho.core)
debugImplementation(libs.facebook.stetho.okhttp3)
/** Testing **/
testImplementation("junit:junit:4.13.2")
testImplementation("org.mockito:mockito-core:5.6.0")
testImplementation(libs.junit)
testImplementation(libs.mockito.core)
androidTestImplementation("androidx.test.ext:junit:1.1.5")
androidTestImplementation("androidx.test:runner:1.5.2")
androidTestImplementation("androidx.room:room-testing:$androidxRoomVersion")
androidTestImplementation("org.assertj:assertj-core:3.24.2")
androidTestImplementation(libs.androidx.junit)
androidTestImplementation(libs.androidx.runner)
androidTestImplementation(libs.androidx.room.testing)
androidTestImplementation(libs.assertj.core)
}

View File

@@ -4,9 +4,9 @@
*/
plugins {
id("com.android.application") version "8.13.0" apply false
id("org.jetbrains.kotlin.android") version "1.9.25" apply false
id("org.jetbrains.kotlin.kapt") version "1.9.25" apply false
id("org.jetbrains.kotlin.plugin.parcelize") version "1.9.25" apply false
id("org.sonarqube") version "4.0.0.2929" apply false
alias(libs.plugins.android.application) apply false
alias(libs.plugins.jetbrains.kotlin.android) apply false
alias(libs.plugins.jetbrains.kotlin.kapt) apply false
alias(libs.plugins.jetbrains.kotlin.parcelize) apply false
alias(libs.plugins.sonarqube) apply false
}

130
gradle/libs.versions.toml Normal file
View File

@@ -0,0 +1,130 @@
#
# SPDX-FileCopyrightText: 2025 NewPipe e.V. <https://newpipe-ev.de>
# SPDX-License-Identifier: GPL-3.0-or-later
#
[versions]
acra = "5.11.3"
agp = "8.13.0"
appcompat = "1.7.1"
assertj = "3.24.2"
autoservice = "1.1.1"
bridge = "v2.0.2"
cardview = "1.0.0"
checkstyle = "10.12.1"
constraintlayout = "2.1.4"
core = "1.12.0"
desugar = "2.0.4"
documentfile = "1.0.1"
exoplayer = "2.18.7"
extractor = "0023b22095a2d62a60cdfc87f4b5cd85c8b266c3"
filepicker = "5.0.0"
fragment = "1.6.2"
groupie = "2.10.1"
jsoup = "1.17.2"
junit = "4.13.2"
junit-ext = "1.1.5"
kotlin = "1.9.25"
ktlint = "0.45.2"
leakcanary = "2.12"
lifecycle = "2.6.2"
localbroadcastmanager = "1.1.0"
markwon = "4.6.2"
material = "1.11.0"
media = "1.7.0"
mockitoCore = "5.6.0"
nanojson = "e9d656ddb49a412a5a0a5d5ef20ca7ef09549996"
okhttp = "4.12.0"
phoenix = "2.1.2"
#noinspection NewerVersionAvailable,GradleDependency --> 2.8 is the last version, not 2.71828!
picasso = "2.8"
preference = "1.2.1"
prettytime = "5.0.8.Final"
recyclerview = "1.3.2"
room = "2.6.1"
runner = "1.5.2"
rxandroid = "3.0.2"
rxbinding = "4.0.0"
rxjava = "3.1.8"
sonarqube = "4.0.0.2929"
statesaver = "1.4.1"
stetho = "1.6.0"
swiperefreshlayout = "1.1.0"
# Newer version specified to prevent accessibility regressions with RecyclerView
# see: https://developer.android.com/jetpack/androidx/releases/viewpager2#1.1.0-alpha01
viewpager2 = "1.1.0-beta02"
webkit = "1.9.0"
work = "2.8.1"
[libraries]
acra-core = { module = "ch.acra:acra-core", version.ref = "acra" }
android-desugar = { module = "com.android.tools:desugar_jdk_libs_nio", version.ref = "desugar" }
androidx-appcompat = { module = "androidx.appcompat:appcompat", version.ref = "appcompat" }
androidx-cardview = { module = "androidx.cardview:cardview", version.ref = "cardview" }
androidx-constraintlayout = { module = "androidx.constraintlayout:constraintlayout", version.ref = "constraintlayout" }
androidx-core = { module = "androidx.core:core-ktx", version.ref = "core" }
androidx-documentfile = { module = "androidx.documentfile:documentfile", version.ref = "documentfile" }
androidx-fragment = { module = "androidx.fragment:fragment-ktx", version.ref = "fragment" }
androidx-junit = { module = "androidx.test.ext:junit", version.ref = "junit-ext" }
androidx-lifecycle-livedata = { module = "androidx.lifecycle:lifecycle-livedata-ktx", version.ref = "lifecycle" }
androidx-lifecycle-viewmodel = { module = "androidx.lifecycle:lifecycle-viewmodel-ktx", version.ref = "lifecycle" }
androidx-localbroadcastmanager = { module = "androidx.localbroadcastmanager:localbroadcastmanager", version.ref = "localbroadcastmanager" }
androidx-media = { module = "androidx.media:media", version.ref = "media" }
androidx-preference = { module = "androidx.preference:preference", version.ref = "preference" }
androidx-recyclerview = { module = "androidx.recyclerview:recyclerview", version.ref = "recyclerview" }
androidx-room-compiler = { module = "androidx.room:room-compiler", version.ref = "room" }
androidx-room-runtime = { module = "androidx.room:room-runtime", version.ref = "room" }
androidx-room-rxjava3 = { module = "androidx.room:room-rxjava3", version.ref = "room" }
androidx-room-testing = { module = "androidx.room:room-testing", version.ref = "room" }
androidx-runner = { module = "androidx.test:runner", version.ref = "runner" }
androidx-swiperefreshlayout = { module = "androidx.swiperefreshlayout:swiperefreshlayout", version.ref = "swiperefreshlayout" }
androidx-viewpager2 = { module = "androidx.viewpager2:viewpager2", version.ref = "viewpager2" }
androidx-webkit = { module = "androidx.webkit:webkit", version.ref = "webkit" }
androidx-work-runtime = { module = "androidx.work:work-runtime-ktx", version.ref = "work" }
androidx-work-rxjava3 = { module = "androidx.work:work-rxjava3", version.ref = "work" }
assertj-core = { module = "org.assertj:assertj-core", version.ref = "assertj" }
evernote-statesaver-compiler = { module = "com.evernote:android-state-processor", version.ref = "statesaver" }
evernote-statesaver-core = { module = "com.evernote:android-state", version.ref = "statesaver" }
facebook-stetho-core = { module = "com.facebook.stetho:stetho", version.ref = "stetho" }
facebook-stetho-okhttp3 = { module = "com.facebook.stetho:stetho-okhttp3", version.ref = "stetho" }
google-android-material = { module = "com.google.android.material:material", version.ref = "material" }
google-autoservice-annotations = { module = "com.google.auto.service:auto-service-annotations", version.ref = "autoservice" }
google-autoservice-compiler = { module = "com.google.auto.service:auto-service", version.ref = "autoservice" }
google-exoplayer-core = { module = "com.google.android.exoplayer:exoplayer-core", version.ref = "exoplayer" }
google-exoplayer-dash = { module = "com.google.android.exoplayer:exoplayer-dash", version.ref = "exoplayer" }
google-exoplayer-database = { module = "com.google.android.exoplayer:exoplayer-database", version.ref = "exoplayer" }
google-exoplayer-datasource = { module = "com.google.android.exoplayer:exoplayer-datasource", version.ref = "exoplayer" }
google-exoplayer-hls = { module = "com.google.android.exoplayer:exoplayer-hls", version.ref = "exoplayer" }
google-exoplayer-mediasession = { module = "com.google.android.exoplayer:extension-mediasession", version.ref = "exoplayer" }
google-exoplayer-smoothstreaming = { module = "com.google.android.exoplayer:exoplayer-smoothstreaming", version.ref = "exoplayer" }
google-exoplayer-ui = { module = "com.google.android.exoplayer:exoplayer-ui", version.ref = "exoplayer" }
jakewharton-phoenix = { module = "com.jakewharton:process-phoenix", version.ref = "phoenix" }
jakewharton-rxbinding = { module = "com.jakewharton.rxbinding4:rxbinding", version.ref = "rxbinding" }
jsoup = { module = "org.jsoup:jsoup", version.ref = "jsoup" }
junit = { module = "junit:junit", version.ref = "junit" }
lisawray-groupie-core = { module = "com.github.lisawray.groupie:groupie", version.ref = "groupie" }
lisawray-groupie-viewbinding = { module = "com.github.lisawray.groupie:groupie-viewbinding", version.ref = "groupie" }
livefront-bridge = { module = "com.github.livefront:bridge", version.ref = "bridge" }
mockito-core = { module = "org.mockito:mockito-core", version.ref = "mockitoCore" }
newpipe-extractor = { module = "com.github.TeamNewPipe:NewPipeExtractor", version.ref = "extractor" }
newpipe-filepicker = { module = "com.github.TeamNewPipe:NoNonsense-FilePicker", version.ref = "filepicker" }
newpipe-nanojson = { module = "com.github.TeamNewPipe:nanojson", version.ref = "nanojson" }
noties-markwon-core = { module = "io.noties.markwon:core", version.ref = "markwon" }
noties-markwon-linkify = { module = "io.noties.markwon:linkify", version.ref = "markwon" }
ocpsoft-prettytime = { module = "org.ocpsoft.prettytime:prettytime", version.ref = "prettytime" }
pinterest-ktlint = { module = "com.pinterest:ktlint", version.ref = "ktlint" }
puppycrawl-checkstyle = { module = "com.puppycrawl.tools:checkstyle", version.ref = "checkstyle" }
reactivex-rxandroid = { module = "io.reactivex.rxjava3:rxandroid", version.ref = "rxandroid" }
reactivex-rxjava = { module = "io.reactivex.rxjava3:rxjava", version.ref = "rxjava" }
squareup-leakcanary-core = { module = "com.squareup.leakcanary:leakcanary-android-core", version.ref = "leakcanary" }
squareup-leakcanary-plumber = { module = "com.squareup.leakcanary:plumber-android", version.ref = "leakcanary" }
squareup-leakcanary-watcher = { module = "com.squareup.leakcanary:leakcanary-object-watcher-android", version.ref = "leakcanary" }
squareup-okhttp = { module = "com.squareup.okhttp3:okhttp", version.ref = "okhttp" }
squareup-picasso = { module = "com.squareup.picasso:picasso", version.ref = "picasso" }
[plugins]
android-application = { id = "com.android.application", version.ref = "agp" }
jetbrains-kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" }
jetbrains-kotlin-kapt = { id = "org.jetbrains.kotlin.kapt", version.ref = "kotlin" }
jetbrains-kotlin-parcelize = { id = "org.jetbrains.kotlin.plugin.parcelize", version.ref = "kotlin" }
sonarqube = { id = "org.sonarqube", version.ref = "sonarqube" }