2023-01-20 18:39:16 +01:00
import com.android.tools.profgen.ArtProfileKt
import com.android.tools.profgen.ArtProfileSerializer
import com.android.tools.profgen.DexFile
2021-03-15 09:51:51 +01:00
plugins {
2021-12-04 21:16:37 -05:00
id "com.android.application"
id "kotlin-android"
id "kotlin-kapt"
id "kotlin-parcelize"
id "checkstyle"
2023-05-30 12:22:05 -04:00
id "org.sonarqube" version "4.0.0.2929"
2021-03-15 09:51:51 +01:00
}
2015-09-04 02:15:03 +02:00
android {
2022-11-05 23:44:35 +01:00
compileSdk 33
2022-09-17 19:17:03 +05:30
namespace 'org.schabi.newpipe'
2015-09-04 02:15:03 +02:00
defaultConfig {
2020-12-18 17:41:03 -07:00
applicationId "org.polymorphicshade.newpipe"
2021-09-26 11:24:42 -06:00
resValue "string" , "app_name" , "NewPipe SponsorBlock"
2022-07-06 16:30:30 -04:00
minSdk 21
2022-11-05 23:44:35 +01:00
targetSdk 33
2023-12-26 16:59:02 +01:00
versionCode 996
versionName "0.26.1"
2020-10-18 14:14:27 +05:30
2019-10-04 14:59:08 +02:00
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
2019-04-28 17:43:52 -03:00
javaCompileOptions {
annotationProcessorOptions {
arguments = [ "room.schemaLocation" : "$projectDir/schemas" . toString ( ) ]
}
}
2015-09-04 02:15:03 +02:00
}
2018-08-11 19:13:52 +05:30
2015-09-04 02:15:03 +02:00
buildTypes {
2017-08-07 06:02:30 -07:00
debug {
debuggable true
2020-02-23 09:46:42 +01:00
2020-02-23 20:56:56 +01:00
// suffix the app id and the app name with git branch name
2020-03-02 20:50:35 +01:00
def workingBranch = getGitWorkingBranch ( )
2020-09-26 22:32:11 +02:00
def normalizedWorkingBranch = workingBranch . replaceFirst ( "^[^A-Za-z]+" , "" ) . replaceAll ( "[^0-9A-Za-z]+" , "" )
2020-03-02 20:50:35 +01:00
if ( normalizedWorkingBranch . isEmpty ( ) | | workingBranch = = "master" | | workingBranch = = "dev" ) {
// default values when branch name could not be determined or is master or dev
2020-02-23 09:46:42 +01:00
applicationIdSuffix ".debug"
2021-08-12 08:28:39 +02:00
resValue "string" , "app_name" , "BraveNewPipe Debug"
2020-02-23 09:46:42 +01:00
} else {
2020-03-02 20:50:35 +01:00
applicationIdSuffix ".debug." + normalizedWorkingBranch
2021-08-12 08:28:39 +02:00
resValue "string" , "app_name" , "BraveNewPipe " + workingBranch
archivesBaseName = 'BraveNewPipe_' + normalizedWorkingBranch
2020-02-23 09:46:42 +01:00
}
2017-08-07 06:02:30 -07:00
}
2020-04-11 22:17:39 +02:00
release {
2021-09-12 20:19:45 +02:00
if ( System . properties . containsKey ( 'packageSuffix' ) ) {
applicationIdSuffix System . getProperty ( 'packageSuffix' )
resValue "string" , "app_name" , "NewPipe " + System . getProperty ( 'packageSuffix' )
archivesBaseName = 'NewPipe_' + System . getProperty ( 'packageSuffix' )
}
2020-04-11 22:17:39 +02:00
minifyEnabled true
2020-07-23 21:19:21 +02:00
shrinkResources false // disabled to fix F-Droid's reproducible build
2020-04-11 22:17:39 +02:00
proguardFiles getDefaultProguardFile ( 'proguard-android.txt' ) , 'proguard-rules.pro'
archivesBaseName = 'app'
}
2015-09-04 02:15:03 +02:00
}
2015-12-24 14:55:33 +01:00
2021-08-12 08:28:39 +02:00
// use productFlavors to keep the name/version changes AFAP for BraveNewPipe
// more separate in hope of not getting to many merge conflicts
flavorDimensions 'default'
productFlavors {
// the amount of trailing zeros depends on the amount of digits the
// defaultConfig.versionCode has -> we just prepend our increasing
// versionCode before those zeros.
2024-01-31 00:37:38 +01:00
def braveVersionCode = 25000
2021-08-12 08:28:39 +02:00
// -> our versionName will be added as suffix to defaultConfig.versionName
// We use major.minor.patch
2024-01-31 00:37:38 +01:00
def braveVersionName = "2.1.7"
2021-08-12 08:28:39 +02:00
brave {
dimension 'default'
applicationId "com.github.bravenewpipe"
resValue "string" , "app_name" , "BraveNewPipe"
versionCode defaultConfig . versionCode + braveVersionCode
versionName "${defaultConfig.versionName}-${braveVersionName}"
}
2022-05-03 00:58:23 +02:00
braveConscrypt {
dimension 'default'
applicationId "com.github.bravenewpipe"
resValue "string" , "app_name" , "BraveNewPipe"
versionCode defaultConfig . versionCode + braveVersionCode
versionName "${defaultConfig.versionName}-${braveVersionName}"
android . sourceSets . braveConscrypt . res . srcDirs = android . sourceSets . brave . res . srcDirs
2024-03-04 09:08:05 +01:00
dependencies {
implementation 'org.conscrypt:conscrypt-android:2.5.2'
}
2022-05-03 00:58:23 +02:00
}
2024-03-04 09:09:38 +01:00
braveLegacy {
dimension 'default'
applicationId "com.github.bravenewpipe.kitkat"
resValue "string" , "app_name" , "BraveNewPipe"
versionCode defaultConfig . versionCode + braveVersionCode
versionName "${defaultConfig.versionName}-${braveVersionName}"
2024-03-01 22:33:01 +01:00
android . sourceSets . braveLegacy . res . srcDirs = [ 'src/braveLegacy/res' , android . sourceSets . braveConscrypt . res . srcDirs ]
2024-03-04 09:09:38 +01:00
multiDexEnabled true
minSdk 19
dependencies {
implementation 'androidx.multidex:multidex:2.0.1'
implementation 'org.conscrypt:conscrypt-android:2.5.2'
}
}
2021-08-12 08:28:39 +02:00
}
2022-01-21 16:25:11 -05:00
lint {
2015-12-01 21:31:10 +01:00
checkReleaseBuilds false
// Or, if you prefer, you can continue to check for errors in release builds,
// but continue the build even when errors are found:
abortOnError false
2021-04-19 19:26:15 +05:30
// suppress false warning ("Resource IDs will be non-final in Android Gradle Plugin version
// 5.0, avoid using them in switch case statements"), which affects only library projects
disable 'NonConstantResourceId'
2015-12-01 21:31:10 +01:00
}
2018-08-11 19:13:52 +05:30
2016-02-05 17:09:29 +01:00
compileOptions {
2020-06-25 16:42:59 +05:30
// Flag to enable support for the new language APIs
coreLibraryDesugaringEnabled true
2023-04-20 11:31:45 +02:00
sourceCompatibility JavaVersion . VERSION_17
targetCompatibility JavaVersion . VERSION_17
2020-04-13 23:40:44 +03:00
encoding 'utf-8'
2016-02-05 17:09:29 +01:00
}
2019-04-28 17:43:54 -03:00
2020-09-13 17:20:29 +05:30
kotlinOptions {
2023-04-20 11:31:45 +02:00
jvmTarget = JavaVersion . VERSION_17
2020-09-13 17:20:29 +05:30
}
2020-03-07 14:46:32 -03:00
sourceSets {
androidTest . assets . srcDirs + = files ( "$projectDir/schemas" . toString ( ) )
}
2020-10-31 10:07:18 +05:30
buildFeatures {
viewBinding true
}
2023-04-04 17:42:34 +02:00
packagingOptions {
2023-04-20 10:24:19 +02:00
resources {
// remove two files which belong to jsoup
// no idea how they ended up in the META-INF dir...
excludes + = [ 'META-INF/README.md' , 'META-INF/CHANGES' ]
}
2023-04-04 17:42:34 +02:00
}
2015-09-04 02:15:03 +02:00
}
2017-12-06 18:19:56 -06:00
ext {
2023-07-01 13:29:39 +02:00
checkstyleVersion = '10.12.1'
2021-03-31 11:49:55 -04:00
2022-07-23 13:52:56 +05:30
androidxLifecycleVersion = '2.5.1'
2023-07-17 21:09:44 -04:00
androidxRoomVersion = '2.5.2'
2022-02-23 18:16:07 +01:00
androidxWorkVersion = '2.7.1'
2021-03-31 11:49:55 -04:00
icepickVersion = '3.2.0'
2023-05-30 12:22:05 -04:00
exoPlayerVersion = '2.18.7'
2023-07-20 17:07:52 -04:00
googleAutoServiceVersion = '1.1.1'
2022-05-16 11:45:56 -04:00
groupieVersion = '2.10.1'
2021-06-20 17:26:59 -04:00
markwonVersion = '4.6.2'
2021-03-31 11:49:55 -04:00
2023-07-11 20:32:29 -04:00
leakCanaryVersion = '2.12'
2021-06-20 17:26:59 -04:00
stethoVersion = '1.6.0'
2021-12-12 21:26:59 -05:00
mockitoVersion = '4.0.0'
2017-12-06 18:19:56 -06:00
}
2018-08-17 17:03:26 +02:00
2020-06-28 14:59:44 +02:00
configurations {
checkstyle
2020-10-31 21:55:45 +01:00
ktlint
2020-06-28 14:59:44 +02:00
}
2020-03-27 20:45:26 +01:00
checkstyle {
2022-03-18 19:58:59 +01:00
getConfigDirectory ( ) . set ( rootProject . file ( "checkstyle" ) )
2020-03-27 20:45:26 +01:00
ignoreFailures false
showViolations true
2020-05-01 16:06:02 +02:00
toolVersion = checkstyleVersion
2020-03-27 20:45:26 +01:00
}
task runCheckstyle ( type: Checkstyle ) {
source 'src'
include '**/*.java'
exclude '**/gen/**'
exclude '**/R.java'
exclude '**/BuildConfig.java'
exclude 'main/java/us/shandian/giga/**'
2020-06-28 14:59:44 +02:00
classpath = configurations . checkstyle
2020-03-27 20:45:26 +01:00
showViolations true
reports {
2021-07-06 12:16:20 -04:00
xml . getRequired ( ) . set ( true )
html . getRequired ( ) . set ( true )
2020-03-27 20:45:26 +01:00
}
}
2020-10-31 21:55:45 +01:00
def outputDir = "${project.buildDir}/reports/ktlint/"
def inputFiles = project . fileTree ( dir: "src" , include: "**/*.kt" )
task runKtlint ( type: JavaExec ) {
inputs . files ( inputFiles )
outputs . dir ( outputDir )
2021-07-06 12:16:20 -04:00
getMainClass ( ) . set ( "com.pinterest.ktlint.Main" )
2020-10-31 21:55:45 +01:00
classpath = configurations . ktlint
args "src/**/*.kt"
2023-04-25 18:37:04 +02:00
jvmArgs ( "--add-opens" , "java.base/java.lang=ALL-UNNAMED" )
2020-10-31 21:55:45 +01:00
}
task formatKtlint ( type: JavaExec ) {
inputs . files ( inputFiles )
outputs . dir ( outputDir )
2021-07-06 12:16:20 -04:00
getMainClass ( ) . set ( "com.pinterest.ktlint.Main" )
2020-10-31 21:55:45 +01:00
classpath = configurations . ktlint
args "-F" , "src/**/*.kt"
2023-04-25 18:37:04 +02:00
jvmArgs ( "--add-opens" , "java.base/java.lang=ALL-UNNAMED" )
2020-10-31 21:55:45 +01:00
}
2020-05-01 20:09:52 +02:00
2020-04-20 17:01:36 +02:00
afterEvaluate {
2021-08-06 18:11:22 +02:00
if ( ! System . properties . containsKey ( 'skipFormatKtlint' ) ) {
2021-08-12 08:28:39 +02:00
preBraveDebugBuild . dependsOn formatKtlint
2021-08-06 18:11:22 +02:00
}
2021-08-12 08:28:39 +02:00
preBraveDebugBuild . dependsOn runCheckstyle , runKtlint
2020-04-20 17:01:36 +02:00
}
2020-03-27 20:45:26 +01:00
2022-11-29 11:20:31 -05:00
sonar {
2021-03-15 09:51:51 +01:00
properties {
property "sonar.projectKey" , "TeamNewPipe_NewPipe"
property "sonar.organization" , "teamnewpipe"
property "sonar.host.url" , "https://sonarcloud.io"
}
}
2015-09-04 02:15:03 +02:00
dependencies {
2021-03-31 11:49:55 -04:00
/** Desugaring **/
2023-03-11 09:48:56 +05:30
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs_nio:2.0.3'
2020-06-25 16:42:59 +05:30
2021-03-31 11:49:55 -04:00
/** NewPipe libraries **/
// You can use a local version by uncommenting a few lines in settings.gradle
2021-06-17 20:47:22 +02:00
// Or you can use a commit you pushed to GitHub by just replacing TeamNewPipe with your GitHub
// name and the commit hash with the commit hash of the (pushed) commit you want to test
// This works thanks to JitPack: https://jitpack.io/
2021-03-31 11:49:55 -04:00
implementation 'com.github.TeamNewPipe:nanojson:1d9e1aea9049fc9f85e68b43ba39fe7be1c1f751'
2023-12-21 22:28:09 +01:00
implementation 'com.github.TeamNewPipe:NewPipeExtractor:v0.23.1'
2022-07-20 21:01:17 -04:00
implementation 'com.github.TeamNewPipe:NoNonsense-FilePicker:5.0.0'
2020-05-01 16:06:02 +02:00
2021-03-31 11:49:55 -04:00
/** Checkstyle **/
2020-06-28 14:59:44 +02:00
checkstyle "com.puppycrawl.tools:checkstyle:${checkstyleVersion}"
2022-07-14 01:48:52 -04:00
ktlint 'com.pinterest:ktlint:0.45.2'
2017-06-28 07:27:32 +02:00
2021-03-31 11:49:55 -04:00
/** Kotlin **/
2023-07-20 17:07:52 -04:00
implementation "org.jetbrains.kotlin:kotlin-stdlib:${kotlin_version}"
2017-03-27 16:34:37 -03:00
2021-03-31 11:49:55 -04:00
/** AndroidX **/
2022-08-13 09:23:25 +05:30
implementation 'androidx.appcompat:appcompat:1.5.1'
2021-03-31 11:49:55 -04:00
implementation 'androidx.cardview:cardview:1.0.0'
2022-07-14 01:48:52 -04:00
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
2023-04-09 18:45:57 +05:30
implementation 'androidx.core:core-ktx:1.10.0'
2021-03-31 11:49:55 -04:00
implementation 'androidx.documentfile:documentfile:1.0.1'
2022-07-24 15:35:33 -04:00
implementation 'androidx.fragment:fragment-ktx:1.4.1'
2022-07-23 13:52:56 +05:30
implementation "androidx.lifecycle:lifecycle-livedata-ktx:${androidxLifecycleVersion}"
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:${androidxLifecycleVersion}"
2022-03-02 11:01:01 -05:00
implementation 'androidx.localbroadcastmanager:localbroadcastmanager:1.1.0'
2022-07-14 01:48:52 -04:00
implementation 'androidx.media:media:1.6.0'
2022-03-02 11:01:01 -05:00
implementation 'androidx.preference:preference:1.2.0'
2021-10-19 17:31:59 -04:00
implementation 'androidx.recyclerview:recyclerview:1.2.1'
2021-03-31 11:49:55 -04:00
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'
2021-10-19 17:31:59 -04:00
// 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-beta01'
2021-11-02 22:26:05 +01:00
implementation "androidx.work:work-runtime-ktx:${androidxWorkVersion}"
implementation "androidx.work:work-rxjava3:${androidxWorkVersion}"
2023-09-19 16:30:09 -04:00
implementation 'com.google.android.material:material:1.9.0'
2017-04-26 16:32:20 -03:00
2021-03-31 11:49:55 -04:00
/** Third-party libraries **/
// Instance state boilerplate elimination
implementation "frankiesardo:icepick:${icepickVersion}"
kapt "frankiesardo:icepick-processor:${icepickVersion}"
2020-10-16 13:27:04 +02:00
2021-03-31 11:49:55 -04:00
// HTML parser
2023-05-30 12:22:05 -04:00
implementation "org.jsoup:jsoup:1.16.1"
2017-04-26 16:32:20 -03:00
2021-03-31 11:49:55 -04:00
// HTTP client
2023-05-30 12:22:05 -04:00
implementation "com.squareup.okhttp3:okhttp:4.11.0"
2023-07-31 21:46:45 +02:00
// okhttp3:4.11.0 introduces a vulnerability from com.squareup.okio:okio@3.3.0,
// remove com.squareup.okio:okio when updating okhttp
implementation "com.squareup.okio:okio:3.4.0"
2018-03-29 18:24:30 -07:00
2021-03-31 11:49:55 -04:00
// Media player
2022-07-13 11:57:14 -04:00
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}"
2020-05-01 16:06:02 +02:00
implementation "com.google.android.exoplayer:extension-mediasession:${exoPlayerVersion}"
2017-08-07 06:02:30 -07:00
2021-03-31 11:49:55 -04:00
// Metadata generator for service descriptors
2020-07-28 11:02:01 +02:00
compileOnly "com.google.auto.service:auto-service-annotations:${googleAutoServiceVersion}"
kapt "com.google.auto.service:auto-service:${googleAutoServiceVersion}"
2021-03-31 11:49:55 -04:00
// Manager for complex RecyclerView layouts
2021-06-20 15:44:17 -04:00
implementation "com.github.lisawray.groupie:groupie:${groupieVersion}"
implementation "com.github.lisawray.groupie:groupie-viewbinding:${groupieVersion}"
2018-06-16 11:55:57 +02:00
2021-03-31 11:49:55 -04:00
// Image loading
2021-03-27 14:37:44 +01:00
//noinspection GradleDependency --> 2.8 is the last version, not 2.71828!
implementation "com.squareup.picasso:picasso:2.8"
2020-02-08 09:56:37 +01:00
2021-03-31 11:49:55 -04:00
// Markdown library for Android
2020-02-08 09:56:37 +01:00
implementation "io.noties.markwon:core:${markwonVersion}"
implementation "io.noties.markwon:linkify:${markwonVersion}"
2020-05-01 16:06:02 +02:00
2021-03-31 11:49:55 -04:00
// Crash reporting
2023-07-01 13:29:39 +02:00
implementation "ch.acra:acra-core:5.10.1"
2020-05-01 16:06:02 +02:00
2021-09-06 20:47:44 +02:00
// Properly restarting
implementation 'com.jakewharton:process-phoenix:2.1.2'
2021-03-31 11:49:55 -04:00
// Reactive extensions for Java VM
2023-05-30 12:22:05 -04:00
implementation "io.reactivex.rxjava3:rxjava:3.1.6"
2023-01-01 12:46:56 +01:00
implementation "io.reactivex.rxjava3:rxandroid:3.0.2"
2021-03-31 11:49:55 -04:00
// RxJava binding APIs for Android UI widgets
2020-10-31 21:55:45 +01:00
implementation "com.jakewharton.rxbinding4:rxbinding:4.0.0"
2020-05-01 16:06:02 +02:00
2021-03-31 11:49:55 -04:00
// Date and time formatting
2022-11-01 19:32:31 +01:00
implementation "org.ocpsoft.prettytime:prettytime:5.0.6.Final"
2020-11-22 13:49:09 +01:00
2021-03-31 11:49:55 -04:00
/** Debugging **/
// Memory leak detection
2023-07-14 18:32:30 +02:00
debugImplementation "com.squareup.leakcanary:leakcanary-object-watcher-android:${leakCanaryVersion}"
debugImplementation "com.squareup.leakcanary:plumber-android:${leakCanaryVersion}"
2023-07-11 20:32:29 -04:00
debugImplementation "com.squareup.leakcanary:leakcanary-android-core:${leakCanaryVersion}"
2021-03-31 11:49:55 -04:00
// Debug bridge for Android
debugImplementation "com.facebook.stetho:stetho:${stethoVersion}"
debugImplementation "com.facebook.stetho:stetho-okhttp3:${stethoVersion}"
/** Testing **/
2021-05-28 15:04:39 +02:00
testImplementation 'junit:junit:4.13.2'
2020-12-19 14:10:10 +01:00
testImplementation "org.mockito:mockito-core:${mockitoVersion}"
testImplementation "org.mockito:mockito-inline:${mockitoVersion}"
2020-11-22 13:49:09 +01:00
2023-05-30 12:22:05 -04:00
androidTestImplementation "androidx.test.ext:junit:1.1.5"
androidTestImplementation "androidx.test:runner:1.5.2"
2020-11-22 13:49:09 +01:00
androidTestImplementation "androidx.room:room-testing:${androidxRoomVersion}"
2023-05-30 12:22:05 -04:00
androidTestImplementation "org.assertj:assertj-core:3.23.1"
2015-09-04 02:15:03 +02:00
}
2020-03-13 20:10:37 -03:00
static String getGitWorkingBranch ( ) {
try {
def gitProcess = "git rev-parse --abbrev-ref HEAD" . execute ( )
gitProcess . waitFor ( )
if ( gitProcess . exitValue ( ) = = 0 ) {
return gitProcess . text . trim ( )
} else {
// not a git repository
return ""
}
} catch ( IOException ignored ) {
// git was not found
return ""
}
2020-03-27 20:45:26 +01:00
}
2021-08-12 08:28:39 +02:00
2023-04-04 17:42:34 +02:00
// fix reproducible builds
2023-01-20 18:39:16 +01:00
project . afterEvaluate {
2023-02-10 01:44:19 +01:00
tasks . compileBraveReleaseArtProfile . doLast {
2023-01-20 18:39:16 +01:00
outputs . files . each { file - >
if ( file . toString ( ) . endsWith ( ".profm" ) ) {
println ( "Sorting ${file} ..." )
def version = ArtProfileSerializer . valueOf ( "METADATA_0_0_2" )
def profile = ArtProfileKt . ArtProfile ( file )
def keys = new ArrayList ( profile . profileData . keySet ( ) )
def sortedData = new LinkedHashMap ( )
Collections . sort keys , new DexFile . Companion ( )
keys . each { key - > sortedData [ key ] = profile . profileData [ key ] }
new FileOutputStream ( file ) . with {
write ( version . magicBytes $profgen )
write ( version . versionBytes $profgen )
version . write $profgen ( it , sortedData , "" )
}
}
}
}
}
2023-02-09 21:10:04 +01:00
2021-08-12 08:28:39 +02:00
// keep the changed dependencies for BraveNewPipe more
// separate in hope of not getting to many merge conflicts
configurations . all {
exclude group: 'com.github.TeamNewPipe' , module: 'NewPipeExtractor'
2024-01-31 00:37:38 +01:00
project . getDependencies ( ) . implementation ( "com.github.bravenewpipe:NewPipeExtractor:v0.23.1-2.1.7" )
2024-03-03 07:25:18 +01:00
// for JavaNetCookieJar see https://github.com/bravenewpipe/NewPipeExtractor/issues/123
project . getDependencies ( ) . implementation ( "com.squareup.okhttp3:okhttp-urlconnection:3.12.13" )
2024-03-04 09:09:38 +01:00
if ( it . getName ( ) . contains ( "braveLegacy" ) | | it . getName ( ) . contains ( "BraveLegacy" ) ) {
resolutionStrategy . dependencySubstitution {
substitute module ( "com.github.TeamNewPipe:NoNonsense-FilePicker" ) using module ( "com.github.bravenewpipe:NoNonsense-FilePicker:21d5c57" ) because "we need Sdk 19 support"
substitute module ( "com.squareup.okhttp3:okhttp" ) using module ( "com.squareup.okhttp3:okhttp:3.12.13" ) because "we need Sdk 19 support"
}
}
2021-08-12 08:28:39 +02:00
}
2021-08-30 07:04:34 +02:00
// replace NewPipe with BraveNewPipe in all strings.xml
apply from: 'replace-newpipe-with-bravenewpipe-strings.gradle'