FairEmail/app/build.gradle

387 lines
16 KiB
Groovy
Raw Normal View History

2018-08-02 13:33:06 +00:00
apply plugin: 'com.android.application'
2019-05-10 06:53:45 +00:00
apply plugin: 'com.bugsnag.android.gradle'
2018-08-02 13:33:06 +00:00
def keystorePropertiesFile = rootProject.file("keystore.properties")
def keystoreProperties = new Properties()
2019-03-26 13:51:35 +00:00
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
2018-08-02 13:33:06 +00:00
android {
2019-06-06 08:53:47 +00:00
compileSdkVersion 29
2019-06-15 08:02:41 +00:00
2018-08-02 13:33:06 +00:00
defaultConfig {
applicationId "eu.faircode.email"
2018-12-09 17:49:52 +00:00
minSdkVersion 21
2019-06-06 08:53:47 +00:00
targetSdkVersion 29
2020-03-10 14:08:36 +00:00
versionCode 1027
versionName "1.1027"
2018-08-14 05:53:24 +00:00
archivesBaseName = "FairEmail-v$versionName"
2018-08-03 12:07:51 +00:00
2019-07-13 18:14:19 +00:00
// https://en.wikipedia.org/wiki/List_of_dinosaur_genera
2020-03-08 13:28:57 +00:00
buildConfigField "String", "RELEASE_NAME", "\"Viavenator\""
2019-07-13 18:14:19 +00:00
2018-08-03 12:07:51 +00:00
javaCompileOptions {
annotationProcessorOptions {
arguments = ["room.schemaLocation": "$projectDir/schemas".toString()]
}
}
2019-06-14 18:29:40 +00:00
// https://developer.android.com/guide/topics/graphics/vector-drawable-resources
vectorDrawables.useSupportLibrary = true
2019-06-15 08:02:41 +00:00
2020-03-02 15:30:33 +00:00
//ndkVersion "20.0.5594570"
ndkVersion "21.0.6113669"
2019-06-15 08:02:41 +00:00
ndk {
// Bugsnag
abiFilters "armeabi-v7a", "x86", "arm64-v8a", "x86_64"
}
2018-08-02 13:33:06 +00:00
}
2019-06-15 08:02:41 +00:00
2019-07-23 18:27:05 +00:00
lintOptions {
disable 'MissingTranslation'
abortOnError false
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
2019-07-23 18:27:05 +00:00
packagingOptions {
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/README.md'
exclude 'META-INF/CHANGES'
2019-10-20 16:25:21 +00:00
exclude 'META-INF/jersey-module-version'
2019-07-23 18:27:05 +00:00
}
signingConfigs {
play {
storeFile file(keystoreProperties['storeFile'])
storePassword keystoreProperties['storePassword']
keyAlias keystoreProperties['keyAlias']
keyPassword keystoreProperties['keyPassword']
}
github {
storeFile file(keystoreProperties['storeFile'])
storePassword keystoreProperties['storePassword']
keyAlias keystoreProperties['keyAlias']
keyPassword keystoreProperties['keyPassword']
v1SigningEnabled true
v2SigningEnabled false
v2SigningEnabled false
}
}
2018-08-02 13:33:06 +00:00
buildTypes {
play {
2018-09-03 08:04:51 +00:00
debuggable = false
2018-08-02 13:33:06 +00:00
minifyEnabled = true
useProguard = true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.play
}
github {
debuggable = false
minifyEnabled = true
useProguard = true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.github
2018-12-21 09:18:58 +00:00
}
2018-08-02 13:33:06 +00:00
debug {
2019-12-03 07:45:26 +00:00
applicationIdSuffix '.debug'
2018-09-04 18:06:22 +00:00
debuggable = true
2018-11-22 08:00:02 +00:00
minifyEnabled = false
useProguard = false
2018-08-02 13:33:06 +00:00
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
2019-01-07 10:45:17 +00:00
}
}
flavorDimensions "all"
productFlavors {
full {
dimension "all"
2019-02-07 19:49:14 +00:00
buildConfigField "boolean", "BETA_RELEASE", "true"
buildConfigField "boolean", "PLAY_STORE_RELEASE", "false"
2019-02-07 19:49:14 +00:00
buildConfigField "String", "INVITE_URI", "\"https://email.faircode.eu/\""
buildConfigField "String", "PRO_FEATURES_URI", "\"https://email.faircode.eu/donate/\""
2019-07-12 14:57:56 +00:00
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\""
2019-11-06 09:29:25 +00:00
buildConfigField "String", "OPENKEYCHAIN_URI", "\"https://f-droid.org/en/packages/org.sufficientlysecure.keychain/\""
2020-01-29 08:33:07 +00:00
buildConfigField "String", "CAMERA_URI", "\"https://f-droid.org/en/packages/net.sourceforge.opencamera/\""
buildConfigField "String", "RECORDER_URI", "\"https://f-droid.org/packages/com.github.axet.audiorecorder/\""
2019-11-06 09:29:25 +00:00
buildConfigField "String", "APPS_URI", "\"https://github.com/M66B?tab=repositories/\""
2019-01-09 18:15:47 +00:00
}
play_beta {
dimension "all"
2020-02-14 13:08:13 +00:00
minSdkVersion 23
2019-02-07 19:49:14 +00:00
buildConfigField "boolean", "BETA_RELEASE", "true"
2019-01-09 18:15:47 +00:00
buildConfigField "boolean", "PLAY_STORE_RELEASE", "true"
2019-06-22 06:45:09 +00:00
buildConfigField "String", "INVITE_URI", "\"https://play.google.com/store/apps/details?id=eu.faircode.email\""
2019-02-07 19:49:14 +00:00
buildConfigField "String", "PRO_FEATURES_URI", "\"https://email.faircode.eu/#pro\""
2019-04-19 13:16:40 +00:00
buildConfigField "String", "CHANGELOG", "\"\""
2019-01-09 18:15:47 +00:00
buildConfigField "String", "GITHUB_LATEST_API", "\"\""
2019-11-06 09:29:25 +00:00
buildConfigField "String", "OPENKEYCHAIN_URI", "\"https://play.google.com/store/apps/details?id=org.sufficientlysecure.keychain\""
2020-01-29 08:33:07 +00:00
buildConfigField "String", "CAMERA_URI", "\"https://play.google.com/store/apps/details?id=net.sourceforge.opencamera\""
buildConfigField "String", "RECORDER_URI", "\"https://play.google.com/store/apps/details?id=com.github.axet.audiorecorder\""
2019-11-06 09:29:25 +00:00
buildConfigField "String", "APPS_URI", "\"https://play.google.com/store/apps/dev?id=8420080860664580239\""
2018-08-02 13:33:06 +00:00
}
2019-01-09 18:15:47 +00:00
play_release {
2019-01-07 10:45:17 +00:00
dimension "all"
2020-02-14 13:08:13 +00:00
minSdkVersion 23
2019-02-07 19:49:14 +00:00
buildConfigField "boolean", "BETA_RELEASE", "false"
2019-01-07 10:45:17 +00:00
buildConfigField "boolean", "PLAY_STORE_RELEASE", "true"
2019-02-07 19:49:14 +00:00
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\""
2019-04-19 13:16:40 +00:00
buildConfigField "String", "CHANGELOG", "\"\""
2019-01-07 10:45:17 +00:00
buildConfigField "String", "GITHUB_LATEST_API", "\"\""
2019-11-06 09:29:25 +00:00
buildConfigField "String", "OPENKEYCHAIN_URI", "\"https://play.google.com/store/apps/details?id=org.sufficientlysecure.keychain\""
2020-01-29 08:33:07 +00:00
buildConfigField "String", "CAMERA_URI", "\"https://play.google.com/store/apps/details?id=net.sourceforge.opencamera\""
buildConfigField "String", "RECORDER_URI", "\"https://play.google.com/store/apps/details?id=com.github.axet.audiorecorder\""
2019-11-06 09:29:25 +00:00
buildConfigField "String", "APPS_URI", "\"https://play.google.com/store/apps/dev?id=8420080860664580239\""
2019-01-07 10:45:17 +00:00
}
2018-08-02 13:33:06 +00:00
}
variantFilter { variant ->
def flavors = variant.flavors*.name
// Builds: play, github, debug
// Flavors: full, play_beta, play_release
if (variant.buildType.name == "play" && flavors.contains("full")) {
setIgnore(true)
}
if (variant.buildType.name == "github" && flavors.contains("play_beta")) {
setIgnore(true)
}
if (flavors.contains("play_release")) {
setIgnore(true)
}
}
2019-05-10 06:53:45 +00:00
bugsnag {
// https://docs.bugsnag.com/build-integrations/gradle/
apiKey "9d2d57476a0614974449a3ec33f2604a"
2019-05-10 14:55:55 +00:00
builderName "M66B"
autoUpload false
autoReportBuilds false
sourceControl {
repository "https://github.com/M66B/open-source-email"
}
2019-05-10 06:53:45 +00:00
}
2018-08-02 13:33:06 +00:00
}
task copyMarkdown(type: Copy) {
from "${rootDir}"
into "src/main/assets"
include "SETUP.md"
include "PRIVACY.md"
2019-07-23 14:59:12 +00:00
include "ATTRIBUTION.md"
}
preBuild.dependsOn copyMarkdown
task copySetup(type: Copy) {
from "src/main/res"
include '**/SETUP.md'
into "src/main/assets"
eachFile { file ->
file.relativePath = new RelativePath(true, "SETUP-${file.file.parentFile.name}.md")
}
includeEmptyDirs = false
}
preBuild.dependsOn copySetup
task cleanCrowdin(type: Delete) {
delete fileTree("src/main/res").matching {
include "**/SETUP.md"
2019-08-21 12:43:02 +00:00
include "**/PLAYSTORE.txt"
}
}
preBuild.dependsOn cleanCrowdin
cleanCrowdin.shouldRunAfter copySetup
2018-08-02 13:33:06 +00:00
repositories {
2018-10-12 08:33:23 +00:00
google()
2018-08-02 13:33:06 +00:00
jcenter()
2019-04-19 06:31:00 +00:00
maven { url "https://repo1.maven.org/maven2/" }
maven { url "https://jitpack.io" }
2020-02-27 10:55:20 +00:00
//maven { url "https://oss.sonatype.org/content/repositories/snapshots" }
2020-02-27 09:19:35 +00:00
//maven { url "https://jakarta.oss.sonatype.org/content/repositories/snapshots/" }
2018-08-02 13:33:06 +00:00
}
2019-06-29 19:18:24 +00:00
configurations.all {
// Workaround https://issuetracker.google.com/issues/138441698
// Support @69c481c39a17d4e1e44a4eb298bb81c48f226eef
2019-09-06 09:01:08 +00:00
exclude group: "androidx.room", module: "room-runtime"
2019-07-27 09:42:19 +00:00
// Workaround https://issuetracker.google.com/issues/134685570
2019-09-06 09:01:08 +00:00
exclude group: "androidx.lifecycle", module: "lifecycle-livedata"
2019-10-11 12:12:34 +00:00
exclude group: "androidx.lifecycle", module: "lifecycle-livedata-core"
// lifecycle-livedata: ComputableLiveData, MediatorLiveData, Transformations
// lifecycle-livedata-core: LiveData, MutableLiveData, Observer
2019-06-29 19:18:24 +00:00
}
2018-08-02 13:33:06 +00:00
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
2020-03-05 18:46:37 +00:00
def core_version = "1.3.0-alpha02"
def appcompat_version = "1.2.0-alpha03"
def fragment_version = "1.3.0-alpha01"
2019-12-21 19:25:34 +00:00
def recyclerview_version = "1.2.0-alpha01"
2019-12-08 18:33:02 +00:00
def coordinatorlayout_version = "1.1.0"
2019-12-23 16:17:06 +00:00
def constraintlayout_version = "2.0.0-beta3"
def material_version = "1.2.0-alpha05"
2020-01-08 19:58:09 +00:00
def browser_version = "1.3.0-alpha01"
2019-09-14 11:30:34 +00:00
def lbm_version = "1.0.0"
2020-03-05 18:46:37 +00:00
def swiperefresh_version = "1.1.0-beta01"
2019-09-14 11:30:34 +00:00
def documentfile_version = "1.0.1"
2020-01-23 08:39:54 +00:00
def lifecycle_version = "2.2.0"
def sqlite_version = "2.1.0"
2020-02-20 08:00:13 +00:00
def room_version = "2.2.4"
2019-12-21 19:25:34 +00:00
def paging_version = "2.1.1"
2019-09-06 06:49:16 +00:00
def preference_version = "1.1.0"
2020-03-05 18:46:37 +00:00
def work_version = "2.3.3"
2020-02-26 16:57:52 +00:00
def exif_version = "1.3.0-alpha01"
2019-12-21 19:25:34 +00:00
def biometric_version = "1.0.1"
2019-12-21 19:58:16 +00:00
def billingclient_version = "2.1.0"
def javamail_version = "1.6.5-SNAPSHOT"
2020-02-16 09:39:42 +00:00
def jsoup_version = "1.12.1"
2019-06-08 11:39:16 +00:00
def dnsjava_version = "2.1.9"
2018-10-28 12:49:13 +00:00
def openpgp_version = "12.0"
2020-02-03 07:54:57 +00:00
def requery_version = "3.31.0"
2019-03-27 09:48:20 +00:00
def badge_version = "1.1.22"
def bugsnag_version = "4.17.2"
2019-05-18 09:19:39 +00:00
def biweekly_version = "0.6.3"
2019-07-06 10:52:00 +00:00
def photoview_version = "2.3.0"
2019-07-17 10:21:17 +00:00
def relinker_version = "1.3.1"
2020-02-26 16:57:52 +00:00
def markwon_version = "4.2.2"
2019-12-03 16:26:05 +00:00
def bouncycastle_version = "1.64"
2019-12-08 19:15:33 +00:00
def colorpicker_version = "0.0.15"
2019-12-20 11:20:50 +00:00
def appauth_version = "0.7.1"
2018-08-07 05:30:15 +00:00
2019-03-27 13:50:47 +00:00
// https://developer.android.com/jetpack/androidx/releases/
2019-09-14 15:39:08 +00:00
// https://mvnrepository.com/artifact/androidx.core/core
implementation "androidx.core:core:$core_version"
2018-11-10 09:09:56 +00:00
// https://mvnrepository.com/artifact/androidx.appcompat/appcompat
2019-08-21 17:12:19 +00:00
// https://mvnrepository.com/artifact/androidx.fragment/fragment
2018-11-13 15:03:20 +00:00
implementation "androidx.appcompat:appcompat:$appcompat_version"
2019-08-11 19:08:26 +00:00
implementation "androidx.fragment:fragment:$fragment_version"
2018-11-10 09:09:56 +00:00
// https://mvnrepository.com/artifact/androidx.recyclerview/recyclerview
// https://mvnrepository.com/artifact/androidx.recyclerview/recyclerview-selection
2018-11-13 14:33:41 +00:00
implementation "androidx.recyclerview:recyclerview:$recyclerview_version"
2020-02-05 19:15:12 +00:00
//implementation "androidx.recyclerview:recyclerview-selection:1.1.0-rc01"
2018-11-10 09:09:56 +00:00
// https://mvnrepository.com/artifact/androidx.coordinatorlayout/coordinatorlayout
2018-11-13 14:33:41 +00:00
implementation "androidx.coordinatorlayout:coordinatorlayout:$coordinatorlayout_version"
2018-11-10 09:09:56 +00:00
// https://mvnrepository.com/artifact/androidx.constraintlayout/constraintlayout
2018-09-12 16:54:48 +00:00
implementation "androidx.constraintlayout:constraintlayout:$constraintlayout_version"
2018-11-10 09:09:56 +00:00
// https://mvnrepository.com/artifact/com.google.android.material/material
// https://github.com/material-components/material-components-android/releases
2018-11-13 14:33:41 +00:00
implementation "com.google.android.material:material:$material_version"
2018-11-10 09:09:56 +00:00
// https://mvnrepository.com/artifact/androidx.browser/browser
2018-11-13 14:33:41 +00:00
implementation "androidx.browser:browser:$browser_version"
2018-08-02 13:33:06 +00:00
2019-09-14 11:30:34 +00:00
// https://mvnrepository.com/artifact/androidx.localbroadcastmanager/localbroadcastmanager
implementation "androidx.localbroadcastmanager:localbroadcastmanager:$lbm_version"
// https://mvnrepository.com/artifact/androidx.swiperefreshlayout/swiperefreshlayout
implementation "androidx.swiperefreshlayout:swiperefreshlayout:$swiperefresh_version"
// https://mvnrepository.com/artifact/androidx.documentfile/documentfile
implementation "androidx.documentfile:documentfile:$documentfile_version"
2018-11-10 09:09:56 +00:00
// https://mvnrepository.com/artifact/androidx.lifecycle/lifecycle-runtime
2019-07-06 08:46:15 +00:00
// https://mvnrepository.com/artifact/androidx.lifecycle/lifecycle-livedata
// https://mvnrepository.com/artifact/androidx.lifecycle/lifecycle-livedata-core
2018-08-23 09:48:27 +00:00
implementation "androidx.lifecycle:lifecycle-extensions:$lifecycle_version"
annotationProcessor "androidx.lifecycle:lifecycle-compiler:$lifecycle_version"
2018-11-10 09:09:56 +00:00
// https://mvnrepository.com/artifact/androidx.room/room-runtime
2018-08-23 09:48:27 +00:00
implementation "androidx.room:room-runtime:$room_version"
implementation "androidx.room:room-common:$room_version" // because of exclude
// https://mvnrepository.com/artifact/androidx.sqlite/sqlite-framework
2019-12-08 18:33:02 +00:00
implementation "androidx.sqlite:sqlite-framework:$sqlite_version" // because of exclude
2018-08-23 09:48:27 +00:00
annotationProcessor "androidx.room:room-compiler:$room_version"
2018-11-10 09:09:56 +00:00
// https://mvnrepository.com/artifact/androidx.paging/paging-runtime
2018-08-23 09:48:27 +00:00
implementation "androidx.paging:paging-runtime:$paging_version"
2019-09-14 11:44:19 +00:00
2019-03-15 13:54:25 +00:00
// https://mvnrepository.com/artifact/androidx.preference/preference
implementation "androidx.preference:preference:$preference_version"
2019-09-14 11:44:19 +00:00
// https://mvnrepository.com/artifact/androidx.work/work-runtime
2019-03-27 13:50:47 +00:00
implementation "androidx.work:work-runtime:$work_version"
2019-03-03 09:09:11 +00:00
2019-03-27 11:14:09 +00:00
// https://mvnrepository.com/artifact/androidx.exifinterface/exifinterface
implementation "androidx.exifinterface:exifinterface:$exif_version"
2019-07-10 15:58:26 +00:00
// https://mvnrepository.com/artifact/androidx.biometric/biometric
// https://developer.android.com/jetpack/androidx/releases/biometric
implementation "androidx.biometric:biometric:$biometric_version"
2018-11-10 09:09:56 +00:00
// https://developer.android.com/google/play/billing/billing_library_releases_notes
2018-08-25 13:32:52 +00:00
implementation "com.android.billingclient:billing:$billingclient_version"
2018-11-10 09:09:56 +00:00
// https://javaee.github.io/javamail/
// https://projects.eclipse.org/projects/ee4j.javamail
2019-03-17 09:18:40 +00:00
// https://mvnrepository.com/artifact/com.sun.mail
2020-02-27 08:17:59 +00:00
//implementation "com.sun.mail:android-mail:$javamail_version"
2020-02-27 10:55:20 +00:00
//implementation "com.sun.mail:android-activation:$javamail_version"
2018-08-02 13:33:06 +00:00
2019-10-13 12:40:41 +00:00
// https://jsoup.org/news/
2018-08-07 05:30:15 +00:00
implementation "org.jsoup:jsoup:$jsoup_version"
2018-08-08 05:02:25 +00:00
2019-02-20 11:34:35 +00:00
// http://www.dnsjava.org/
// https://mvnrepository.com/artifact/dnsjava/dnsjava
2018-09-18 14:22:10 +00:00
implementation "dnsjava:dnsjava:$dnsjava_version"
2018-10-28 12:49:13 +00:00
// https://github.com/open-keychain/openpgp-api
2019-11-15 16:55:35 +00:00
// https://mvnrepository.com/artifact/org.sufficientlysecure/openpgp-api
2019-12-24 18:20:16 +00:00
//implementation "org.sufficientlysecure:openpgp-api:$openpgp_version"
implementation project(':openpgp-api')
2018-10-28 12:49:13 +00:00
2019-03-30 07:26:23 +00:00
// https://www.sqlite.org/changes.html
2018-11-09 07:38:07 +00:00
// https://github.com/requery/sqlite-android/
2019-04-24 17:23:53 +00:00
// https://mvnrepository.com/artifact/io.requery/sqlite-android?repo=jcenter
2018-11-09 07:38:07 +00:00
implementation "io.requery:sqlite-android:$requery_version"
2019-03-27 09:48:20 +00:00
// https://github.com/leolin310148/ShortcutBadger
2019-04-04 17:37:29 +00:00
// https://mvnrepository.com/artifact/me.leolin/ShortcutBadger
2019-03-27 09:48:20 +00:00
implementation "me.leolin:ShortcutBadger:$badge_version"
2019-05-10 06:53:45 +00:00
// https://github.com/bugsnag/bugsnag-android
implementation("com.bugsnag:bugsnag-android:$bugsnag_version") {
2019-09-14 11:04:48 +00:00
exclude group: "com.bugsnag", module: "bugsnag-plugin-android-anr"
exclude group: "com.bugsnag", module: "bugsnag-plugin-android-ndk"
2019-07-22 17:06:09 +00:00
}
2019-05-10 06:53:45 +00:00
2019-05-18 09:19:39 +00:00
// https://github.com/mangstadt/biweekly
implementation("net.sf.biweekly:biweekly:$biweekly_version") {
exclude group: 'com.fasterxml.jackson.core', module: 'jackson-core'
}
2019-07-06 10:52:00 +00:00
// https://github.com/chrisbanes/PhotoView
implementation "com.github.chrisbanes:PhotoView:$photoview_version"
2019-07-17 10:21:17 +00:00
// https://github.com/KeepSafe/ReLinker
2020-01-05 11:58:08 +00:00
// https://mvnrepository.com/artifact/com.getkeepsafe.relinker/relinker?repo=jcenter
2019-07-17 10:21:17 +00:00
implementation "com.getkeepsafe.relinker:relinker:$relinker_version"
// https://github.com/noties/Markwon
implementation "io.noties.markwon:core:$markwon_version"
2019-10-06 18:09:19 +00:00
// // https://github.com/QuadFlask/colorpicker
2019-12-08 19:15:33 +00:00
implementation "com.github.QuadFlask:colorpicker:$colorpicker_version"
2019-10-20 16:25:21 +00:00
2019-12-02 09:03:46 +00:00
// https://mvnrepository.com/artifact/org.bouncycastle/bcpkix-jdk15on
2019-12-03 16:26:05 +00:00
implementation "org.bouncycastle:bcpkix-jdk15to18:$bouncycastle_version"
2019-12-20 11:20:50 +00:00
// https://github.com/openid/AppAuth-Android
// https://mvnrepository.com/artifact/net.openid/appauth?repo=bt-openid
implementation "net.openid:appauth:$appauth_version"
2018-08-02 13:33:06 +00:00
}