mirror of
https://github.com/TeamNewPipe/NewPipe
synced 2024-11-16 06:44:55 +00:00
c43bca6007
It will be shown even when nothing could be loaded not due to a network error, and the user can choose to ignore or report it. Also improve error reporting arguments Also completely refactor error activity Also improve some code here and there
264 lines
8.7 KiB
Groovy
264 lines
8.7 KiB
Groovy
apply plugin: 'com.android.application'
|
|
apply plugin: 'kotlin-android'
|
|
apply plugin: 'kotlin-android-extensions'
|
|
apply plugin: 'kotlin-kapt'
|
|
apply plugin: 'checkstyle'
|
|
|
|
android {
|
|
compileSdkVersion 29
|
|
buildToolsVersion '29.0.3'
|
|
|
|
defaultConfig {
|
|
applicationId "org.schabi.newpipe"
|
|
resValue "string", "app_name", "NewPipe"
|
|
minSdkVersion 19
|
|
targetSdkVersion 29
|
|
versionCode 965
|
|
versionName "0.20.11"
|
|
|
|
multiDexEnabled true
|
|
|
|
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
|
vectorDrawables.useSupportLibrary = true
|
|
|
|
javaCompileOptions {
|
|
annotationProcessorOptions {
|
|
arguments = ["room.schemaLocation": "$projectDir/schemas".toString()]
|
|
}
|
|
}
|
|
}
|
|
|
|
buildTypes {
|
|
debug {
|
|
debuggable true
|
|
|
|
// suffix the app id and the app name with git branch name
|
|
def workingBranch = getGitWorkingBranch()
|
|
def normalizedWorkingBranch = workingBranch.replaceFirst("^[^A-Za-z]+", "").replaceAll("[^0-9A-Za-z]+", "")
|
|
if (normalizedWorkingBranch.isEmpty() || workingBranch == "master" || workingBranch == "dev") {
|
|
// default values when branch name could not be determined or is master or dev
|
|
applicationIdSuffix ".debug"
|
|
resValue "string", "app_name", "NewPipe Debug"
|
|
} else {
|
|
applicationIdSuffix ".debug." + normalizedWorkingBranch
|
|
resValue "string", "app_name", "NewPipe " + workingBranch
|
|
archivesBaseName = 'NewPipe_' + normalizedWorkingBranch
|
|
}
|
|
}
|
|
|
|
// Keep the release build type at the end of the list to override 'archivesBaseName' of
|
|
// debug build. This seems to be a Gradle bug, therefore
|
|
// TODO: update Gradle version
|
|
release {
|
|
minifyEnabled true
|
|
shrinkResources false // disabled to fix F-Droid's reproducible build
|
|
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
|
|
archivesBaseName = 'app'
|
|
}
|
|
}
|
|
|
|
lintOptions {
|
|
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
|
|
}
|
|
|
|
compileOptions {
|
|
// Flag to enable support for the new language APIs
|
|
coreLibraryDesugaringEnabled true
|
|
|
|
sourceCompatibility JavaVersion.VERSION_1_8
|
|
targetCompatibility JavaVersion.VERSION_1_8
|
|
encoding 'utf-8'
|
|
}
|
|
|
|
kotlinOptions {
|
|
jvmTarget = JavaVersion.VERSION_1_8
|
|
}
|
|
|
|
// Required and used only by groupie
|
|
androidExtensions {
|
|
experimental = true
|
|
}
|
|
|
|
sourceSets {
|
|
androidTest.assets.srcDirs += files("$projectDir/schemas".toString())
|
|
}
|
|
|
|
buildFeatures {
|
|
viewBinding true
|
|
}
|
|
}
|
|
|
|
ext {
|
|
icepickVersion = '3.2.0'
|
|
checkstyleVersion = '8.38'
|
|
stethoVersion = '1.5.1'
|
|
leakCanaryVersion = '2.5'
|
|
exoPlayerVersion = '2.11.8'
|
|
androidxLifecycleVersion = '2.2.0'
|
|
androidxRoomVersion = '2.3.0-alpha03'
|
|
groupieVersion = '2.8.1'
|
|
markwonVersion = '4.6.0'
|
|
googleAutoServiceVersion = '1.0-rc7'
|
|
mockitoVersion = '3.6.0'
|
|
}
|
|
|
|
configurations {
|
|
checkstyle
|
|
ktlint
|
|
}
|
|
|
|
checkstyle {
|
|
configFile rootProject.file('checkstyle.xml')
|
|
ignoreFailures false
|
|
showViolations true
|
|
toolVersion = checkstyleVersion
|
|
}
|
|
|
|
task runCheckstyle(type: Checkstyle) {
|
|
source 'src'
|
|
include '**/*.java'
|
|
exclude '**/gen/**'
|
|
exclude '**/R.java'
|
|
exclude '**/BuildConfig.java'
|
|
exclude 'main/java/us/shandian/giga/**'
|
|
|
|
classpath = configurations.checkstyle
|
|
|
|
showViolations true
|
|
|
|
reports {
|
|
xml.enabled true
|
|
html.enabled true
|
|
}
|
|
}
|
|
|
|
def outputDir = "${project.buildDir}/reports/ktlint/"
|
|
def inputFiles = project.fileTree(dir: "src", include: "**/*.kt")
|
|
|
|
task runKtlint(type: JavaExec) {
|
|
inputs.files(inputFiles)
|
|
outputs.dir(outputDir)
|
|
main = "com.pinterest.ktlint.Main"
|
|
classpath = configurations.ktlint
|
|
args "src/**/*.kt"
|
|
}
|
|
|
|
task formatKtlint(type: JavaExec) {
|
|
inputs.files(inputFiles)
|
|
outputs.dir(outputDir)
|
|
main = "com.pinterest.ktlint.Main"
|
|
classpath = configurations.ktlint
|
|
args "-F", "src/**/*.kt"
|
|
}
|
|
|
|
afterEvaluate {
|
|
//preDebugBuild.dependsOn formatKtlint, runCheckstyle, runKtlint
|
|
}
|
|
|
|
dependencies {
|
|
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.1.1'
|
|
|
|
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:${kotlin_version}"
|
|
|
|
implementation "frankiesardo:icepick:${icepickVersion}"
|
|
kapt "frankiesardo:icepick-processor:${icepickVersion}"
|
|
|
|
checkstyle "com.puppycrawl.tools:checkstyle:${checkstyleVersion}"
|
|
ktlint "com.pinterest:ktlint:0.40.0"
|
|
|
|
debugImplementation "com.facebook.stetho:stetho:${stethoVersion}"
|
|
debugImplementation "com.facebook.stetho:stetho-okhttp3:${stethoVersion}"
|
|
|
|
debugImplementation "com.squareup.leakcanary:leakcanary-android:${leakCanaryVersion}"
|
|
implementation "com.squareup.leakcanary:leakcanary-object-watcher-android:${leakCanaryVersion}"
|
|
implementation "com.squareup.leakcanary:plumber-android:${leakCanaryVersion}"
|
|
|
|
implementation "androidx.multidex:multidex:2.0.1"
|
|
|
|
// NewPipe dependencies
|
|
// You can use a local version by uncommenting a few lines in settings.gradle
|
|
implementation "com.github.TeamNewPipe:NewPipeExtractor:7e6f464407fc1a2c8fb0886d294093526a6ef0f1"
|
|
implementation "com.github.TeamNewPipe:nanojson:1d9e1aea9049fc9f85e68b43ba39fe7be1c1f751"
|
|
|
|
implementation "org.jsoup:jsoup:1.13.1"
|
|
|
|
//noinspection GradleDependency --> do not update okhttp to keep supporting Android 4.4 users
|
|
implementation "com.squareup.okhttp3:okhttp:3.12.13"
|
|
|
|
implementation "com.google.android.exoplayer:exoplayer:${exoPlayerVersion}"
|
|
implementation "com.google.android.exoplayer:extension-mediasession:${exoPlayerVersion}"
|
|
|
|
implementation "com.google.android.material:material:1.2.1"
|
|
|
|
compileOnly "com.google.auto.service:auto-service-annotations:${googleAutoServiceVersion}"
|
|
kapt "com.google.auto.service:auto-service:${googleAutoServiceVersion}"
|
|
|
|
implementation "androidx.appcompat:appcompat:1.2.0"
|
|
implementation "androidx.preference:preference:1.1.1"
|
|
implementation "androidx.recyclerview:recyclerview:1.1.0"
|
|
implementation "androidx.cardview:cardview:1.0.0"
|
|
implementation "androidx.constraintlayout:constraintlayout:2.0.4"
|
|
implementation 'androidx.core:core-ktx:1.3.2'
|
|
implementation 'androidx.documentfile:documentfile:1.0.1'
|
|
implementation 'androidx.localbroadcastmanager:localbroadcastmanager:1.0.0'
|
|
implementation 'androidx.media:media:1.2.1'
|
|
implementation 'androidx.webkit:webkit:1.4.0'
|
|
|
|
implementation "androidx.lifecycle:lifecycle-livedata:${androidxLifecycleVersion}"
|
|
implementation "androidx.lifecycle:lifecycle-viewmodel:${androidxLifecycleVersion}"
|
|
|
|
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"
|
|
|
|
implementation "com.xwray:groupie:${groupieVersion}"
|
|
implementation "com.xwray:groupie-viewbinding:${groupieVersion}"
|
|
|
|
implementation "de.hdodenhof:circleimageview:3.1.0"
|
|
implementation "com.nostra13.universalimageloader:universal-image-loader:1.9.5"
|
|
|
|
implementation "io.noties.markwon:core:${markwonVersion}"
|
|
implementation "io.noties.markwon:linkify:${markwonVersion}"
|
|
|
|
implementation "com.nononsenseapps:filepicker:4.2.1"
|
|
|
|
implementation "ch.acra:acra-core:5.7.0"
|
|
|
|
implementation "io.reactivex.rxjava3:rxjava:3.0.7"
|
|
implementation "io.reactivex.rxjava3:rxandroid:3.0.0"
|
|
implementation "com.jakewharton.rxbinding4:rxbinding:4.0.0"
|
|
|
|
implementation "org.ocpsoft.prettytime:prettytime:4.0.6.Final"
|
|
|
|
testImplementation 'junit:junit:4.13.1'
|
|
testImplementation "org.mockito:mockito-core:${mockitoVersion}"
|
|
testImplementation "org.mockito:mockito-inline:${mockitoVersion}"
|
|
|
|
androidTestImplementation "androidx.test.ext:junit:1.1.2"
|
|
androidTestImplementation "androidx.room:room-testing:${androidxRoomVersion}"
|
|
androidTestImplementation "androidx.test.espresso:espresso-core:3.3.0", {
|
|
exclude module: 'support-annotations'
|
|
}
|
|
}
|
|
|
|
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 ""
|
|
}
|
|
}
|