plugins { id('com.android.application') id 'kotlin-android' id 'kotlin-kapt' id('com.github.triplet.play') version '3.8.3' apply false } apply from: "../common.gradle" apply from: "../playFlavor.gradle" android { namespace "ac.mdiq.podcini" lint { disable 'ObsoleteLintCustomCheck', 'CheckResult', 'UnusedAttribute', 'BatteryLife', 'InflateParams', 'RestrictedApi', 'TrustAllX509TrustManager', 'ExportedReceiver', 'AllowBackup', 'VectorDrawableCompat', 'StaticFieldLeak', 'UseCompoundDrawables', 'NestedWeights', 'Overdraw', 'UselessParent', 'TextFields', 'AlwaysShowAction', 'Autofill', 'ClickableViewAccessibility', 'ContentDescription', 'KeyboardInaccessibleWidget', 'LabelFor', 'SetTextI18n', 'HardcodedText', 'RelativeOverlap', 'RtlCompat', 'RtlHardcoded', 'MissingMediaBrowserServiceIntentFilter', 'VectorPath', 'InvalidPeriodicWorkRequestInterval', 'NotifyDataSetChanged', 'RtlEnabled' } defaultConfig { // Version code schema: // "1.2.3-beta4" -> 1020304 // "1.2.3" -> 1020395 versionCode 3020102 versionName "4.1.0" def commit = "" try { def hashStdOut = new ByteArrayOutputStream() exec { commandLine "git", "rev-parse", "--short", "HEAD" standardOutput = hashStdOut } commit = hashStdOut.toString().trim() } catch (Exception ignore) { } buildConfigField "String", "COMMIT_HASH", ('"' + (commit.isEmpty() ? "Unknown commit" : commit) + '"') // javaCompileOptions { // annotationProcessorOptions { // arguments = [eventBusIndex: 'ac.mdiq.podcini.ApEventBusIndex'] // } // } if (project.hasProperty("podcastindexApiKey")) { buildConfigField "String", "PODCASTINDEX_API_KEY", '"' + podcastindexApiKey + '"' buildConfigField "String", "PODCASTINDEX_API_SECRET", '"' + podcastindexApiSecret + '"' } else { buildConfigField "String", "PODCASTINDEX_API_KEY", '"XTMMQGA2YZ4WJUBYY4HK"' buildConfigField "String", "PODCASTINDEX_API_SECRET", '"XAaAhk4^2YBsTE33vdbwbZNj82ZRLABDDqFdKe7x"' } } signingConfigs { releaseConfig { enableV1Signing true enableV2Signing true storeFile file(project.getProperties().getOrDefault("releaseStoreFile", "keystore")) storePassword project.getProperties().getOrDefault("releaseStorePassword", "password") keyAlias project.getProperties().getOrDefault("releaseKeyAlias", "alias") keyPassword project.getProperties().getOrDefault("releaseKeyPassword", "password") } } buildTypes { debug { applicationIdSuffix ".debug" resValue "string", "provider_authority", "ac.mdiq.podcini.debug.provider" } release { resValue "string", "provider_authority", "ac.mdiq.podcini.provider" minifyEnabled true shrinkResources true signingConfig signingConfigs.releaseConfig } } applicationVariants.all { variant -> variant.outputs.all { output -> def applicationName = "Podcini" outputFileName = "${applicationName}_${variant.buildType.name}_${defaultConfig.versionName}.apk" } } androidResources { additionalParameters "--no-version-vectors" } } dependencies { implementation "androidx.core:core-ktx:$coreVersion" implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" constraints { implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version") { because("kotlin-stdlib-jdk7 is now a part of kotlin-stdlib") } implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version") { because("kotlin-stdlib-jdk8 is now a part of kotlin-stdlib") } } kapt "androidx.annotation:annotation:$annotationVersion" implementation "androidx.appcompat:appcompat:$appcompatVersion" implementation 'androidx.coordinatorlayout:coordinatorlayout:1.2.0' implementation "androidx.fragment:fragment-ktx:$fragmentVersion" implementation 'androidx.gridlayout:gridlayout:1.0.0' implementation "androidx.media:media:$mediaVersion" implementation "androidx.media3:media3-exoplayer:$media3Version" implementation "androidx.media3:media3-ui:$media3Version" implementation "androidx.media3:media3-datasource-okhttp:$media3Version" implementation "androidx.media3:media3-common:$media3Version" implementation "androidx.palette:palette-ktx:$paletteVersion" implementation "androidx.preference:preference-ktx:$preferenceVersion" implementation "androidx.recyclerview:recyclerview:$recyclerViewVersion" implementation "androidx.viewpager2:viewpager2:$viewPager2Version" implementation "androidx.work:work-runtime:$workManagerVersion" implementation "androidx.core:core-splashscreen:1.0.1" implementation 'androidx.documentfile:documentfile:1.0.1' implementation "com.google.android.material:material:$googleMaterialVersion" implementation "org.apache.commons:commons-lang3:$commonslangVersion" implementation "commons-io:commons-io:$commonsioVersion" implementation "org.jsoup:jsoup:$jsoupVersion" implementation "com.github.bumptech.glide:glide:$glideVersion" implementation "com.github.bumptech.glide:okhttp3-integration:$glideVersion@aar" annotationProcessor "com.github.bumptech.glide:compiler:$glideVersion" implementation "com.squareup.okhttp3:okhttp:$okhttpVersion" implementation "com.squareup.okhttp3:okhttp-urlconnection:$okhttpVersion" implementation "com.squareup.okio:okio:$okioVersion" implementation "org.greenrobot:eventbus:$eventbusVersion" annotationProcessor "org.greenrobot:eventbus-annotation-processor:$eventbusVersion" kapt "org.greenrobot:eventbus-annotation-processor:$eventbusVersion" implementation "io.reactivex.rxjava2:rxandroid:$rxAndroidVersion" implementation "io.reactivex.rxjava2:rxjava:$rxJavaVersion" implementation "com.joanzapata.iconify:android-iconify-fontawesome:$iconifyVersion" implementation "com.joanzapata.iconify:android-iconify-material:$iconifyVersion" implementation 'com.leinardi.android:speed-dial:3.2.0' implementation 'com.github.ByteHamster:SearchPreference:v2.5.0' implementation 'com.github.skydoves:balloon:1.5.3' implementation 'com.github.xabaras:RecyclerViewSwipeDecorator:1.3' implementation "com.annimon:stream:$annimonStreamVersion" // Non-free dependencies: playImplementation 'com.google.android.play:core-ktx:1.8.0' compileOnly "com.google.android.wearable:wearable:$wearableSupportVersion" androidTestImplementation 'com.nanohttpd:nanohttpd:2.1.1' androidTestImplementation "androidx.test.espresso:espresso-core:$espressoVersion" androidTestImplementation "androidx.test.espresso:espresso-contrib:$espressoVersion" androidTestImplementation "androidx.test.espresso:espresso-intents:$espressoVersion" androidTestImplementation "androidx.test:runner:$runnerVersion" androidTestImplementation "androidx.test:rules:$rulesVersion" androidTestImplementation 'androidx.test.ext:junit:1.1.5' androidTestImplementation "org.awaitility:awaitility:$awaitilityVersion" implementation "com.annimon:stream:$annimonStreamVersion" implementation 'com.github.mfietz:fyydlin:v0.5.0' // Non-free dependencies: testImplementation "androidx.test:core:$testCoreVersion" testImplementation "org.awaitility:awaitility:$awaitilityVersion" testImplementation "junit:junit:$junitVersion" testImplementation 'org.mockito:mockito-inline:5.2.0' testImplementation "org.robolectric:robolectric:$robolectricVersion" testImplementation 'javax.inject:javax.inject:1' playImplementation 'com.google.android.gms:play-services-base:17.5.0' freeImplementation 'org.conscrypt:conscrypt-android:2.5.2' playApi 'androidx.mediarouter:mediarouter:1.6.0' playApi "com.google.android.support:wearable:$wearableSupportVersion" playApi 'com.google.android.gms:play-services-cast-framework:21.2.0' } kapt { arguments { arg('eventBusIndex', 'ac.mdiq.podcini.ApEventBusIndex') } } if (project.hasProperty("podciniPlayPublisherCredentials")) { apply plugin: 'com.github.triplet.play' play { track.set('alpha') serviceAccountCredentials.set(file(podciniPlayPublisherCredentials)) } } tasks.register('copyLicense', Copy) { from "../LICENSE" into "src/main/assets/" rename { String fileName -> fileName + ".txt" } } preBuild.dependsOn copyLicense