e2e71e60ce
This is an attempt to prevent Android parsing errors when trying to install the APK. The applicationId will change later to differentiate itself more from NewPipe.
255 lines
8.5 KiB
Groovy
255 lines
8.5 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.polymorphicshade.newpipe"
|
|
resValue "string", "app_name", "NewPipe"
|
|
minSdkVersion 19
|
|
targetSdkVersion 29
|
|
versionCode 960
|
|
versionName "0.20.6_r3"
|
|
|
|
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())
|
|
}
|
|
}
|
|
|
|
ext {
|
|
icepickVersion = '3.2.0'
|
|
checkstyleVersion = '8.37'
|
|
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'
|
|
}
|
|
|
|
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.39.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:b3835bd616ab28b861c83dcefd56e1754c6d20be'
|
|
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.12"
|
|
|
|
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.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-kotlin-android-extensions:${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:3.6.0'
|
|
|
|
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 ""
|
|
}
|
|
}
|