37a96d063f
Add new error strings for the six new exceptions created in the extractor and catch these exceptions. Extractor is, of course, updated with this PR.
263 lines
8.7 KiB
Groovy
263 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 ""
|
|
}
|
|
}
|