mirror of
				https://github.com/TeamNewPipe/NewPipe
				synced 2025-10-31 07:13:00 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			243 lines
		
	
	
		
			7.9 KiB
		
	
	
	
		
			Groovy
		
	
	
	
	
	
			
		
		
	
	
			243 lines
		
	
	
		
			7.9 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 956
 | |
|         versionName "0.20.2"
 | |
| 
 | |
|         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.36.2'
 | |
|     stethoVersion = '1.5.1'
 | |
|     leakCanaryVersion = '2.2'
 | |
|     exoPlayerVersion = '2.11.8'
 | |
|     androidxLifecycleVersion = '2.2.0'
 | |
|     androidxRoomVersion = '2.2.5'
 | |
|     groupieVersion = '2.8.0'
 | |
|     markwonVersion = '4.3.1'
 | |
|     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
 | |
|     }
 | |
| }
 | |
| 
 | |
| //task runKtlint(type: JavaExec) {
 | |
| //    main = "com.pinterest.ktlint.Main"
 | |
| //    classpath = configurations.ktlint
 | |
| //    args "src/**/*.kt"
 | |
| //}
 | |
| //
 | |
| //task formatKtlint(type: JavaExec) {
 | |
| //    main = "com.pinterest.ktlint.Main"
 | |
| //    classpath = configurations.ktlint
 | |
| //    args "-F", "src/**/*.kt"
 | |
| //}
 | |
| 
 | |
| afterEvaluate {
 | |
|     preDebugBuild.dependsOn runCheckstyle //, runKtlint
 | |
| }
 | |
| 
 | |
| dependencies {
 | |
|     coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.0.10'
 | |
| 
 | |
|     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.35.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 "androidx.multidex:multidex:2.0.1"
 | |
| 
 | |
|     testImplementation 'junit:junit:4.13.1'
 | |
|     testImplementation 'org.mockito:mockito-core:3.3.3'
 | |
| 
 | |
|     androidTestImplementation "androidx.test.ext:junit:1.1.1"
 | |
|     androidTestImplementation "androidx.room:room-testing:${androidxRoomVersion}"
 | |
|     androidTestImplementation "androidx.test.espresso:espresso-core:3.2.0", {
 | |
|         exclude module: 'support-annotations'
 | |
|     }
 | |
| 
 | |
|     // NewPipe dependencies
 | |
|     // You can use a local version by uncommenting a few lines in settings.gradle
 | |
|     implementation 'com.github.Stypox:NewPipeExtractor:501ec30152642ad49ce0a1825410d200942d174c'
 | |
|     implementation "com.github.TeamNewPipe:nanojson:1d9e1aea9049fc9f85e68b43ba39fe7be1c1f751"
 | |
| 
 | |
|     implementation "org.jsoup:jsoup:1.13.1"
 | |
| 
 | |
|     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.1.0"
 | |
| 
 | |
|     compileOnly "com.google.auto.service:auto-service-annotations:${googleAutoServiceVersion}"
 | |
|     kapt "com.google.auto.service:auto-service:${googleAutoServiceVersion}"
 | |
| 
 | |
|     implementation "androidx.appcompat:appcompat:1.1.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:1.1.3"
 | |
|     implementation 'androidx.core:core-ktx:1.3.1'
 | |
| 
 | |
|     implementation "androidx.lifecycle:lifecycle-livedata:${androidxLifecycleVersion}"
 | |
|     implementation "androidx.lifecycle:lifecycle-viewmodel:${androidxLifecycleVersion}"
 | |
| 
 | |
|     implementation "androidx.room:room-runtime:${androidxRoomVersion}"
 | |
|     implementation "androidx.room:room-rxjava2:${androidxRoomVersion}"
 | |
|     kapt "androidx.room:room-compiler:${androidxRoomVersion}"
 | |
| 
 | |
|     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.5.0"
 | |
| 
 | |
|     implementation "io.reactivex.rxjava2:rxjava:2.2.19"
 | |
|     implementation "io.reactivex.rxjava2:rxandroid:2.1.1"
 | |
|     implementation "com.jakewharton.rxbinding2:rxbinding:2.2.0"
 | |
| 
 | |
|     implementation "org.ocpsoft.prettytime:prettytime:4.0.6.Final"
 | |
| }
 | |
| 
 | |
| 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 ""
 | |
|     }
 | |
| }
 | 
