apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: "androidx.navigation.safeargs" apply plugin: 'kotlin-kapt' def getGitHash = { -> def stdout = new ByteArrayOutputStream() exec { commandLine 'git', 'rev-parse', '--short', 'HEAD' standardOutput = stdout } return stdout.toString().trim() } android { compileSdkVersion 32 defaultConfig { applicationId 'awais.instagrabber' minSdkVersion 21 targetSdkVersion 31 versionCode 66 versionName '19.2.5' multiDexEnabled true vectorDrawables.useSupportLibrary = true vectorDrawables.generatedDensities = [] javaCompileOptions { annotationProcessorOptions { arguments = ["room.schemaLocation": "$projectDir/schemas".toString()] } } testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } sourceSets { androidTest.assets.srcDirs += files("$projectDir/schemas".toString()) } compileOptions { // Flag to enable support for the new language APIs coreLibraryDesugaringEnabled true targetCompatibility JavaVersion.VERSION_1_8 sourceCompatibility JavaVersion.VERSION_1_8 } buildFeatures { viewBinding true } aaptOptions { additionalParameters '--no-version-vectors' } buildTypes { debug { minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' signingConfig signingConfigs.debug } release { minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } flavorDimensions "repo" signingConfigs { debug { storeFile file('dev_keystore.jks') keyAlias 'alias' storePassword 'xrj45yWGLbsO7W0v' keyPassword 'xrj45yWGLbsO7W0v' } } productFlavors { github { dimension "repo" // versionNameSuffix "-github" // appended in assemble task buildConfigField("boolean", "isPre", "false") } fdroid { dimension "repo" versionNameSuffix "-fdroid" buildConfigField("boolean", "isPre", "false") } } splits { // Configures multiple APKs based on ABI. abi { // Enables building multiple APKs per ABI. enable project.hasProperty("split") && !gradle.startParameter.taskNames.isEmpty() && gradle.startParameter.taskNames.get(0).contains('Release') // By default all ABIs are included, so use reset() and include to specify that we only // want APKs for x86 and x86_64. // Resets the list of ABIs that Gradle should create APKs for to none. reset() // Specifies a list of ABIs that Gradle should create APKs for. include "x86", "x86_64", "arm64-v8a", "armeabi-v7a" // Specifies that we want to also generate a universal APK that includes all ABIs. universalApk true } } android.applicationVariants.all { variant -> if (variant.flavorName != "github") return variant.outputs.all { output -> def builtType = variant.buildType.name def versionName = variant.versionName // def versionCode = variant.versionCode def flavor = variant.flavorName def abi = output.getFilter(com.android.build.OutputFile.ABI) outputFileName = new File("Instabar_" + (abi ? abi : "universal") + ".apk") } } packagingOptions { // Exclude file to avoid // Error: Duplicate files during packaging of APK exclude 'META-INF/LICENSE.md' exclude 'META-INF/LICENSE-notice.md' exclude 'META-INF/atomicfu.kotlin_module' exclude 'META-INF/AL2.0' exclude 'META-INF/LGPL2.1' } testOptions.unitTests { includeAndroidResources = true } } configurations.all { resolutionStrategy.cacheChangingModulesFor 0, 'seconds' } dependencies { coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.1.5' def exoplayer_version = '2.17.1' implementation 'com.google.android.material:material:1.6.1' implementation "com.google.android.exoplayer:exoplayer-core:$exoplayer_version" implementation "com.google.android.exoplayer:exoplayer-dash:$exoplayer_version" implementation "com.google.android.exoplayer:exoplayer-ui:$exoplayer_version" implementation "androidx.recyclerview:recyclerview:1.2.1" implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0' implementation "androidx.viewpager2:viewpager2:1.0.0" implementation "androidx.constraintlayout:constraintlayout:2.1.4" implementation "androidx.preference:preference:1.2.0" implementation 'androidx.palette:palette:1.0.0' implementation 'androidx.documentfile:documentfile:1.0.1' implementation 'com.google.guava:guava:31.1-android' def core_version = "1.8.0" implementation "androidx.core:core:$core_version" // Fragment implementation "androidx.fragment:fragment-ktx:1.4.1" // Lifecycle implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.4.1" implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.4.1" // Navigation implementation "androidx.navigation:navigation-fragment-ktx:$rootProject.nav_version" implementation "androidx.navigation:navigation-ui-ktx:$rootProject.nav_version" // Room def room_version = "2.4.2" implementation "androidx.room:room-runtime:$room_version" implementation "androidx.room:room-guava:$room_version" implementation "androidx.room:room-ktx:$room_version" kapt "androidx.room:room-compiler:$room_version" annotationProcessor "androidx.room:room-compiler:$room_version" // CameraX def camerax_version = "1.2.0-alpha02" implementation "androidx.camera:camera-camera2:$camerax_version" implementation "androidx.camera:camera-lifecycle:$camerax_version" implementation "androidx.camera:camera-view:1.2.0-alpha02" // EmojiCompat def emoji_compat_version = "1.1.0" implementation "androidx.emoji:emoji:$emoji_compat_version" implementation "androidx.emoji:emoji-appcompat:$emoji_compat_version" // Work def work_version = '2.7.1' implementation "androidx.work:work-runtime:$work_version" implementation "androidx.work:work-runtime-ktx:$work_version" implementation "ru.gildor.coroutines:kotlin-coroutines-okhttp:1.0" implementation 'com.facebook.fresco:fresco:2.6.0' implementation 'com.facebook.fresco:animated-webp:2.6.0' implementation 'com.facebook.fresco:webpsupport:2.6.0' implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.retrofit2:converter-scalars:2.9.0' implementation 'com.squareup.retrofit2:converter-gson:2.9.0' implementation 'org.apache.commons:commons-imaging:1.0-alpha3' implementation 'com.github.skydoves:balloon:1.4.5' implementation 'com.github.ammargitham:AutoLinkTextViewV2:3.2.0' implementation 'com.github.ammargitham:uCrop:2.3-non-native' implementation 'com.github.ammargitham:android-gpuimage:2.1.1-beta4' testImplementation 'org.junit.jupiter:junit-jupiter:5.8.2' testImplementation "androidx.test.ext:junit-ktx:1.1.3" testImplementation "androidx.test:core-ktx:1.4.0" testImplementation "androidx.arch.core:core-testing:2.1.0" testImplementation "org.robolectric:robolectric:4.8.1" testImplementation 'org.jetbrains.kotlinx:kotlinx-coroutines-test:1.6.4' androidTestImplementation 'org.junit.jupiter:junit-jupiter:5.7.2' androidTestImplementation 'androidx.test:core:1.4.0' androidTestImplementation 'com.android.support:support-annotations:28.0.0' androidTestImplementation 'com.android.support.test:runner:1.0.2' androidTestImplementation "androidx.room:room-testing:2.4.2" androidTestImplementation "androidx.arch.core:core-testing:2.1.0" androidTestImplementation 'org.jetbrains.kotlinx:kotlinx-coroutines-test:1.6.2' }