|
|
apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: "androidx.navigation.safeargs" apply plugin: 'kotlin-kapt' apply from: 'sentry.gradle'
def getGitHash = { -> def stdout = new ByteArrayOutputStream() exec { commandLine 'git', 'rev-parse', '--short', 'HEAD' standardOutput = stdout } return stdout.toString().trim() }
android { compileSdkVersion 30
defaultConfig { applicationId 'me.austinhuang.instagrabber'
minSdkVersion 21 targetSdkVersion 30
versionCode 65 versionName '19.2.4'
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' }
release { minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } }
flavorDimensions "repo"
productFlavors { github { dimension "repo" // versionNameSuffix "-github" // appended in assemble task
buildConfigField("String", "dsn", SENTRY_DSN) 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 flavorBuiltType = "${flavor}_${builtType}" def suffix // For x86 and x86_64, the versionNames are already overridden
if (versionName.contains(flavorBuiltType)) { suffix = "${versionName}" } else { suffix = "${versionName}-${flavorBuiltType}" // eg. 19.1.0-github_debug or release
} if (builtType.toString() == 'release' && project.hasProperty("pre")) { buildConfigField("boolean", "isPre", "true")
flavorBuiltType = "${getGitHash()}-${flavor}"
// For x86 and x86_64, the versionNames are already overridden
if (versionName.contains(flavorBuiltType)) { suffix = "${versionName}" } else { // append latest commit short hash for pre-release
suffix = "${versionName}.${flavorBuiltType}" // eg. 19.1.0.b123456-github
} }
output.versionNameOverride = suffix def abi = output.getFilter(com.android.build.OutputFile.ABI) // println(abi + ", " + versionName + ", " + flavor + ", " + builtType + ", " + suffix)
outputFileName = abi == null ? "barinsta_${suffix}.apk" : "barinsta_${suffix}_${abi}.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.14.1'
implementation 'com.google.android.material:material:1.4.0'
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.0.4" implementation "androidx.preference:preference:1.1.1" implementation 'androidx.palette:palette:1.0.0' implementation 'androidx.documentfile:documentfile:1.0.1'
implementation 'com.google.guava:guava:27.0.1-android'
def core_version = "1.6.0" implementation "androidx.core:core:$core_version"
// Fragment
implementation "androidx.fragment:fragment-ktx:1.3.5"
// Lifecycle
implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.3.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.3.0" 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.1.0-alpha06" implementation "androidx.camera:camera-camera2:$camerax_version" implementation "androidx.camera:camera-lifecycle:$camerax_version" implementation "androidx.camera:camera-view:1.0.0-alpha26"
// 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.5.0' 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.5.0' implementation 'com.facebook.fresco:animated-webp:2.5.0' implementation 'com.facebook.fresco:webpsupport:2.5.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-alpha2'
implementation 'com.github.skydoves:balloon:1.3.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'
debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.7'
githubImplementation 'io.sentry:sentry-android:5.0.1'
testImplementation 'org.junit.jupiter:junit-jupiter:5.7.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.5.1" testImplementation 'org.jetbrains.kotlinx:kotlinx-coroutines-test:1.5.0'
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.3.0" androidTestImplementation "androidx.arch.core:core-testing:2.1.0" androidTestImplementation 'org.jetbrains.kotlinx:kotlinx-coroutines-test:1.5.0'
}
|