diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 540d8584..8e1798d8 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -8,7 +8,6 @@ plugins { id("com.android.application") id("com.google.devtools.ksp") id("kotlin-android") - id("kotlin-kapt") id("org.jetbrains.dokka") } @@ -34,12 +33,12 @@ android { enable = true } - // disable this for now - //externalNativeBuild { - // cmake { - // path("CMakeLists.txt") - // } - //} + /* disable this for now + externalNativeBuild { + cmake { + path("CMakeLists.txt") + } + }*/ signingConfigs { create("prerelease") { @@ -58,10 +57,8 @@ android { defaultConfig { applicationId = "com.lagradost.cloudstream3" minSdk = 21 - - // https://developer.android.com/about/versions/14/behavior-changes-14#safer-dynamic-code-loading - targetSdk = 33 // android 14 is fucked - + targetSdk = 33 /* Android 14 is Fu*ked + ^ https://developer.android.com/about/versions/14/behavior-changes-14#safer-dynamic-code-loading*/ versionCode = 62 versionName = "4.2.1" @@ -93,10 +90,6 @@ android { arg("room.schemaLocation", "$projectDir/schemas") arg("exportSchema", "true") } - - kapt { - includeCompileClasspath = true - } } buildTypes { @@ -118,6 +111,7 @@ android { ) } } + flavorDimensions.add("state") productFlavors { create("stable") { @@ -137,14 +131,15 @@ android { compileOptions { isCoreLibraryDesugaringEnabled = true - sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 } + lint { abortOnError = false checkReleaseBuilds = false } + namespace = "com.lagradost.cloudstream3" } @@ -153,125 +148,93 @@ repositories { } dependencies { - implementation("com.google.android.mediahome:video:1.0.0") - implementation("androidx.test.ext:junit-ktx:1.1.5") + // Testing + testImplementation("junit:junit:4.13.2") testImplementation("org.json:json:20230618") + androidTestImplementation("androidx.test:core") + implementation("androidx.test.ext:junit-ktx:1.1.5") + androidTestImplementation("androidx.test.ext:junit:1.1.5") + androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1") + // Android Core & Lifecycle implementation("androidx.core:core-ktx:1.12.0") implementation("androidx.appcompat:appcompat:1.6.1") - - implementation("com.google.android.material:material:1.10.0") - implementation("androidx.constraintlayout:constraintlayout:2.1.4") - - implementation("androidx.navigation:navigation-fragment-ktx:2.7.5") implementation("androidx.navigation:navigation-ui-ktx:2.7.5") implementation("androidx.lifecycle:lifecycle-livedata-ktx:2.6.2") implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.2") + implementation("androidx.navigation:navigation-fragment-ktx:2.7.5") - testImplementation("junit:junit:4.13.2") - androidTestImplementation("androidx.test.ext:junit:1.1.5") - androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1") - androidTestImplementation("androidx.test:core") - - // implementation("io.karn:khttp-android:0.1.2") //okhttp instead - // implementation("org.jsoup:jsoup:1.13.1") - // DONT UPDATE, WILL CRASH ANDROID TV ???? - implementation("com.fasterxml.jackson.module:jackson-module-kotlin:2.13.1") - - implementation("androidx.preference:preference-ktx:1.2.1") - - implementation("com.github.bumptech.glide:glide:4.15.1") - ksp("com.github.bumptech.glide:ksp:4.15.1") - implementation("com.github.bumptech.glide:okhttp3-integration:4.15.1") - // for ksp - ksp("dev.zacsweers.autoservice:auto-service-ksp:1.1.0") - implementation("dev.zacsweers.autoservice:auto-service-ksp:1.1.0") - implementation("com.google.guava:guava:32.1.2-android") - + // Design & UI implementation("jp.wasabeef:glide-transformations:4.3.0") - + implementation("androidx.preference:preference-ktx:1.2.1") + implementation("com.google.android.material:material:1.10.0") + implementation("androidx.constraintlayout:constraintlayout:2.1.4") implementation("androidx.swiperefreshlayout:swiperefreshlayout:1.1.0") - // implementation("androidx.leanback:leanback-paging:1.1.0-alpha09") + // Glide Module + ksp("com.github.bumptech.glide:ksp:4.15.1") + implementation("com.github.bumptech.glide:glide:4.15.1") + implementation("com.github.bumptech.glide:okhttp3-integration:4.15.1") - // Media 3 - implementation("androidx.media3:media3-common:1.1.1") - implementation("androidx.media3:media3-exoplayer:1.1.1") - implementation("androidx.media3:media3-datasource-okhttp:1.1.1") + // For KSP -> Official Annotation Processors are Not Yet Supported for KSP + ksp("dev.zacsweers.autoservice:auto-service-ksp:1.1.0") + implementation("com.google.guava:guava:32.1.2-android") + implementation("dev.zacsweers.autoservice:auto-service-ksp:1.1.0") + + // Media 3 (ExoPlayer) implementation("androidx.media3:media3-ui:1.1.1") - implementation("androidx.media3:media3-session:1.1.1") implementation("androidx.media3:media3-cast:1.1.1") + implementation("androidx.media3:media3-common:1.1.1") + implementation("androidx.media3:media3-session:1.1.1") + implementation("androidx.media3:media3-exoplayer:1.1.1") + implementation("com.google.android.mediahome:video:1.0.0") implementation("androidx.media3:media3-exoplayer-hls:1.1.1") implementation("androidx.media3:media3-exoplayer-dash:1.1.1") - // Custom ffmpeg extension for audio codecs - implementation("com.github.recloudstream:media-ffmpeg:1.1.0") + implementation("androidx.media3:media3-datasource-okhttp:1.1.1") - // Bug reports + // PlayBack + implementation("com.jaredrummler:colorpicker:1.1.0") // Subtitle Color Picker + implementation("com.github.recloudstream:media-ffmpeg:1.1.0") // Custom FF-MPEG Lib for Audio Codecs + implementation("com.github.teamnewpipe:NewPipeExtractor:eac850") /* For Trailers + ^ Update to Latest Commits if Trailers Misbehave, github.com/TeamNewPipe/NewPipeExtractor/commits/dev */ + implementation("com.github.albfernandez:juniversalchardet:2.4.0") // Subtitle Decoding + + // Crash Reports (AcraApplication.kt) implementation("ch.acra:acra-core:5.11.2") implementation("ch.acra:acra-toast:5.11.2") - //or for kotlin sources (requires kapt gradle plugin): - kapt("com.google.auto.service:auto-service:1.1.1") + // UI Stuff + implementation("com.facebook.shimmer:shimmer:0.5.0") // Shimmering Effect (Loading Skeleton) + implementation("androidx.palette:palette-ktx:1.0.0") // Palette For Images -> Colors + implementation("androidx.tvprovider:tvprovider:1.0.0") + implementation("com.github.discord:OverlappingPanels:0.1.5") // Gestures + implementation("com.github.rubensousa:previewseekbar-media3:1.1.1.0") // SeekBar Preview - // subtitle color picker - implementation("com.jaredrummler:colorpicker:1.1.0") + // Extensionns & Other Libs + implementation("org.mozilla:rhino:1.7.13") /* run JS + ^ Don't Bump RhinoJS to 1.7.14, since in 1.7.14 Rhino Uses the `SourceVersion` Class, Which is NOT + Available on Android (even with Desugaring) & `NoClassDefFoundError` Occurs. */ + implementation("me.xdrop:fuzzywuzzy:1.4.0") // Library/Ext Searching with Levenshtein Distance + implementation("com.github.LagradOst:SafeFile:0.0.5") // To Prevent the URI File Fu*kery + implementation("org.conscrypt:conscrypt-android:2.5.2") // To Fix SSL Fu*kery on Android 9 + implementation("com.uwetrottmann.tmdb2:tmdb-java:2.10.0") // TMDB API v3 Wrapper Made with RetroFit + coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:1.1.6") + implementation("com.fasterxml.jackson.module:jackson-module-kotlin:2.13.1") /* JSON Parser + ^ Don't Bump Jackson above 2.13.1 , Crashes on Android TV's and FireSticks that have Min API + Level 25 or Less. */ - // run JS - // do not upgrade to 1.7.14, since in 1.7.14 Rhino uses the `SourceVersion` class, which is not - // available on Android (even when using desugaring), and `NoClassDefFoundError` is thrown - implementation("org.mozilla:rhino:1.7.13") - - // TorrentStream - // implementation("com.github.TorrentStream:TorrentStream-Android:2.7.0") - - // Downloading + // Downloading & Networking implementation("androidx.work:work-runtime:2.8.1") implementation("androidx.work:work-runtime-ktx:2.8.1") - - // Networking - // implementation("com.squareup.okhttp3:okhttp:4.9.2") - // implementation("com.squareup.okhttp3:okhttp-dnsoverhttps:4.9.1") - implementation("com.github.Blatzar:NiceHttp:0.4.4") // http library - // To fix SSL fuckery on android 9 - implementation("org.conscrypt:conscrypt-android:2.5.2") - // Util to skip the URI file fuckery 🙏 - implementation("com.github.LagradOst:SafeFile:0.0.5") - - // API because cba maintaining it myself - implementation("com.uwetrottmann.tmdb2:tmdb-java:2.10.0") - - implementation("com.github.discord:OverlappingPanels:0.1.5") - // debugImplementation because LeakCanary should only run in debug builds. - // debugImplementation("com.squareup.leakcanary:leakcanary-android:2.12") - - // for shimmer when loading - implementation("com.facebook.shimmer:shimmer:0.5.0") - - implementation("androidx.tvprovider:tvprovider:1.0.0") - - // used for subtitle decoding https://github.com/albfernandez/juniversalchardet - implementation("com.github.albfernandez:juniversalchardet:2.4.0") - - // newpipe yt taken from https://github.com/TeamNewPipe/NewPipeExtractor/commits/dev - // this should be updated frequently to avoid trailer fu*kery - implementation("com.github.teamnewpipe:NewPipeExtractor:917554a") - coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:1.1.6") - - // Library/extensions searching with Levenshtein distance - implementation("me.xdrop:fuzzywuzzy:1.4.0") - - // color palette for images -> colors - implementation("androidx.palette:palette-ktx:1.0.0") - // seekbar https://github.com/rubensousa/PreviewSeekBar - implementation("com.github.rubensousa:previewseekbar-media3:1.1.1.0") + implementation("com.github.Blatzar:NiceHttp:0.4.4") // HTTP Lib } tasks.register("androidSourcesJar", Jar::class) { archiveClassifier.set("sources") - from(android.sourceSets.getByName("main").java.srcDirs) //full sources + from(android.sourceSets.getByName("main").java.srcDirs) // Full Sources } -// this is used by the gradlew plugin +// For GradLew Plugin tasks.register("makeJar", Copy::class) { from("build/intermediates/compile_app_classes_jar/prereleaseDebug") into("build") @@ -295,6 +258,7 @@ tasks.withType().configureEach { // URL showing where the source code can be accessed through the web browser remoteUrl.set(URL("https://github.com/recloudstream/cloudstream/tree/master/app/src/main/java")) + // Suffix which is used to append the line number to the URL. Use #L for GitHub remoteLineSuffix.set("#L") } diff --git a/build.gradle.kts b/build.gradle.kts index 16cfb68f..13c25281 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -25,6 +25,6 @@ plugins { id("com.google.devtools.ksp") version "1.9.20-1.0.14" apply false } -tasks.register("clean", Delete::class) { - delete(rootProject.buildDir) +tasks.register("clean") { + delete(rootProject.layout.buildDirectory) } \ No newline at end of file