FairEmail/app/build.gradle

269 lines
10 KiB
Groovy

apply plugin: 'com.android.application'
apply plugin: 'com.bugsnag.android.gradle'
def keystorePropertiesFile = rootProject.file("keystore.properties")
def keystoreProperties = new Properties()
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
android {
compileSdkVersion 29
defaultConfig {
applicationId "eu.faircode.email"
minSdkVersion 21
targetSdkVersion 29
versionCode 603
versionName "1.603"
archivesBaseName = "FairEmail-v$versionName"
// https://en.wikipedia.org/wiki/List_of_dinosaur_genera
// Upcoming: Echinodon
buildConfigField "String", "RELEASE_NAME", "\"Dinodocus\""
javaCompileOptions {
annotationProcessorOptions {
arguments = ["room.schemaLocation": "$projectDir/schemas".toString()]
}
}
// https://developer.android.com/guide/topics/graphics/vector-drawable-resources
vectorDrawables.useSupportLibrary = true
ndk {
// Bugsnag
abiFilters "armeabi-v7a", "x86", "arm64-v8a", "x86_64"
}
}
signingConfigs {
release {
storeFile file(keystoreProperties['storeFile'])
storePassword keystoreProperties['storePassword']
keyAlias keystoreProperties['keyAlias']
keyPassword keystoreProperties['keyPassword']
}
}
buildTypes {
release {
debuggable = false
minifyEnabled = true
useProguard = true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.release
}
debug {
debuggable = true
minifyEnabled = false
useProguard = false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
flavorDimensions "all"
productFlavors {
full {
dimension "all"
buildConfigField "boolean", "BETA_RELEASE", "true"
buildConfigField "boolean", "PLAY_STORE_RELEASE", "false"
buildConfigField "String", "INVITE_URI", "\"https://email.faircode.eu/\""
buildConfigField "String", "PRO_FEATURES_URI", "\"https://email.faircode.eu/donate/\""
buildConfigField "String", "CHANGELOG", "\"https://github.com/M66B/FairEmail/releases/\""
buildConfigField "String", "GITHUB_LATEST_API", "\"https://api.github.com/repos/M66B/open-source-email/releases/latest\""
}
play_beta {
dimension "all"
buildConfigField "boolean", "BETA_RELEASE", "true"
buildConfigField "boolean", "PLAY_STORE_RELEASE", "true"
buildConfigField "String", "INVITE_URI", "\"https://play.google.com/store/apps/details?id=eu.faircode.email\""
buildConfigField "String", "PRO_FEATURES_URI", "\"https://email.faircode.eu/#pro\""
buildConfigField "String", "CHANGELOG", "\"\""
buildConfigField "String", "GITHUB_LATEST_API", "\"\""
}
play_release {
dimension "all"
buildConfigField "boolean", "BETA_RELEASE", "false"
buildConfigField "boolean", "PLAY_STORE_RELEASE", "true"
buildConfigField "String", "INVITE_URI", "\"https://play.google.com/store/apps/details?id=eu.faircode.email\""
buildConfigField "String", "PRO_FEATURES_URI", "\"https://email.faircode.eu/#pro\""
buildConfigField "String", "CHANGELOG", "\"\""
buildConfigField "String", "GITHUB_LATEST_API", "\"\""
}
}
lintOptions {
disable 'MissingTranslation'
abortOnError false
}
packagingOptions {
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/README.md'
exclude 'META-INF/CHANGES'
}
bugsnag {
// https://docs.bugsnag.com/build-integrations/gradle/
apiKey "9d2d57476a0614974449a3ec33f2604a"
builderName "M66B"
autoUpload false
autoReportBuilds false
sourceControl {
repository "https://github.com/M66B/open-source-email"
}
}
}
task copyMarkdown(type: Copy) {
from "${rootDir}"
into "src/main/assets"
include "SETUP.md"
include "PRIVACY.md"
}
preBuild.dependsOn copyMarkdown
repositories {
google()
jcenter()
maven { url "https://repo1.maven.org/maven2/" }
maven { url "https://jitpack.io" }
}
configurations.all {
exclude group: "androidx.lifecycle", module: "lifecycle-livedata"
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
def appcompat_version = "1.1.0-rc01"
def recyclerview_version = "1.1.0-beta01"
def coordinatorlayout_version = "1.1.0-beta01"
def constraintlayout_version = "2.0.0-beta2"
def material_version = "1.1.0-alpha07"
def browser_version = "1.0.0"
def lifecycle_version = "2.1.0-rc01"
def room_version = "2.1.0"
def paging_version = "2.1.0"
def preference_version = "1.1.0-rc01"
def work_version = "2.2.0-beta02"
def exif_version = "1.1.0-beta01"
def biometric_version = "1.0.0-alpha04"
def billingclient_version = "2.0.2"
def javamail_version = "1.6.3"
def jsoup_version = "1.12.1"
def dnsjava_version = "2.1.9"
def openpgp_version = "12.0"
def requery_version = "3.29.0"
def badge_version = "1.1.22"
def bugsnag_version = "4.17.0"
def biweekly_version = "0.6.3"
def photoview_version = "2.3.0"
def relinker_version = "1.3.1"
def markwon_version = "4.0.2"
// https://developer.android.com/jetpack/androidx/releases/
// https://mvnrepository.com/artifact/androidx.appcompat/appcompat
implementation "androidx.appcompat:appcompat:$appcompat_version"
// https://mvnrepository.com/artifact/androidx.recyclerview/recyclerview
// https://mvnrepository.com/artifact/androidx.recyclerview/recyclerview-selection
implementation "androidx.recyclerview:recyclerview:$recyclerview_version"
//implementation "androidx.recyclerview:recyclerview-selection:1.1.0-alpha06"
// https://mvnrepository.com/artifact/androidx.coordinatorlayout/coordinatorlayout
implementation "androidx.coordinatorlayout:coordinatorlayout:$coordinatorlayout_version"
// https://mvnrepository.com/artifact/androidx.constraintlayout/constraintlayout
implementation "androidx.constraintlayout:constraintlayout:$constraintlayout_version"
// https://mvnrepository.com/artifact/com.google.android.material/material
// https://github.com/material-components/material-components-android/releases
implementation "com.google.android.material:material:$material_version"
// https://mvnrepository.com/artifact/androidx.browser/browser
implementation "androidx.browser:browser:$browser_version"
// https://mvnrepository.com/artifact/androidx.lifecycle/lifecycle-runtime
// https://mvnrepository.com/artifact/androidx.lifecycle/lifecycle-livedata
// https://mvnrepository.com/artifact/androidx.lifecycle/lifecycle-livedata-core
implementation "androidx.lifecycle:lifecycle-extensions:$lifecycle_version"
annotationProcessor "androidx.lifecycle:lifecycle-compiler:$lifecycle_version"
// https://mvnrepository.com/artifact/androidx.room/room-runtime
implementation "androidx.room:room-runtime:$room_version"
annotationProcessor "androidx.room:room-compiler:$room_version"
// https://mvnrepository.com/artifact/androidx.paging/paging-runtime
implementation "androidx.paging:paging-runtime:$paging_version"
// https://mvnrepository.com/artifact/androidx.preference/preference
implementation "androidx.preference:preference:$preference_version"
// https://mvnrepository.com/artifact/android.arch.work/work-runtime
implementation "androidx.work:work-runtime:$work_version"
// https://mvnrepository.com/artifact/androidx.exifinterface/exifinterface
implementation "androidx.exifinterface:exifinterface:$exif_version"
// https://mvnrepository.com/artifact/androidx.biometric/biometric
// https://developer.android.com/jetpack/androidx/releases/biometric
implementation "androidx.biometric:biometric:$biometric_version"
// https://developer.android.com/google/play/billing/billing_library_releases_notes
implementation "com.android.billingclient:billing:$billingclient_version"
// https://javaee.github.io/javamail/
// https://projects.eclipse.org/projects/ee4j.javamail
// https://mvnrepository.com/artifact/com.sun.mail
implementation "com.sun.mail:android-mail:$javamail_version"
implementation "com.sun.mail:android-activation:$javamail_version"
// https://jsoup.org/
implementation "org.jsoup:jsoup:$jsoup_version"
// http://www.dnsjava.org/
// https://mvnrepository.com/artifact/dnsjava/dnsjava
implementation "dnsjava:dnsjava:$dnsjava_version"
// https://github.com/open-keychain/openpgp-api
implementation "org.sufficientlysecure:openpgp-api:$openpgp_version"
// https://www.sqlite.org/changes.html
// https://github.com/requery/sqlite-android/
// https://mvnrepository.com/artifact/io.requery/sqlite-android?repo=jcenter
implementation "io.requery:sqlite-android:$requery_version"
// https://github.com/leolin310148/ShortcutBadger
// https://mvnrepository.com/artifact/me.leolin/ShortcutBadger
implementation "me.leolin:ShortcutBadger:$badge_version"
// https://github.com/bugsnag/bugsnag-android
implementation("com.bugsnag:bugsnag-android:$bugsnag_version") {
exclude group: "com.bugsnag", module: "bugsnag-plugin-android-anr"
exclude group: "com.bugsnag", module: "bugsnag-plugin-android-ndk"
}
// https://github.com/mangstadt/biweekly
implementation("net.sf.biweekly:biweekly:$biweekly_version") {
exclude group: 'com.fasterxml.jackson.core', module: 'jackson-core'
}
// https://github.com/chrisbanes/PhotoView
implementation "com.github.chrisbanes:PhotoView:$photoview_version"
// https://github.com/KeepSafe/ReLinker
implementation "com.getkeepsafe.relinker:relinker:$relinker_version"
// https://square.github.io/leakcanary/getting_started/
//debugImplementation "com.squareup.leakcanary:leakcanary-android:2.0-alpha-3"
// https://github.com/noties/Markwon
implementation "io.noties.markwon:core:$markwon_version"
// git clone https://android.googlesource.com/platform/frameworks/opt/colorpicker
implementation project(path: ':colorpicker')
}