You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
FairEmail/app/build.gradle

892 lines
43 KiB

apply plugin: 'com.android.application'
apply plugin: 'com.bugsnag.android.gradle'
apply plugin: 'kotlin-android'
apply plugin: 'de.undercouch.download'
2 weeks ago
def getVersionCode = { -> return 2208 }
2 weeks ago
def getRevision = { -> return "b" }
def getReleaseName = { -> return "Acantholipan" }
4 years ago
// https://en.wikipedia.org/wiki/List_of_dinosaur_genera
def keystoreProperties = new Properties()
if (rootProject.file("keystore.properties").exists())
keystoreProperties.load(new FileInputStream(rootProject.file("keystore.properties")))
5 years ago
2 years ago
Properties localProperties = new Properties()
if (rootProject.file("local.properties").exists())
localProperties.load(new FileInputStream(rootProject.file("local.properties")))
android {
//compileSdkExtension 4 // https://developer.android.com/guide/sdk-extensions
//compileSdkPreview "VanillaIceCream"
namespace 'eu.faircode.email'
// https://apilevels.com/
defaultConfig {
applicationId "eu.faircode.email"
2 weeks ago
compileSdk 34
minSdkVersion 21
2 weeks ago
targetSdkVersion 34
//targetSdkPreview "VanillaIceCream"
4 years ago
versionCode getVersionCode()
versionName "1." + getVersionCode()
manifestPlaceholders = [namespace: applicationId.replace('.debug', '')]
3 years ago
buildConfigField "String", "REVISION", "\"" + getRevision() + "\""
buildConfigField "String", "RELEASE_NAME", "\"" + getReleaseName() + "\""
javaCompileOptions {
annotationProcessorOptions {
arguments = ["room.schemaLocation": "$projectDir/schemas".toString()]
}
}
// https://developer.android.com/guide/topics/graphics/vector-drawable-resources
vectorDrawables.useSupportLibrary = true
externalNativeBuild {
cmake {
cFlags "-ffile-prefix-map=${rootDir}=."
cppFlags "-ffile-prefix-map=${rootDir}=."
}
}
// https://developer.android.com/ndk/downloads
2 months ago
ndkVersion "26.3.11579264" // r26d
ndk {
// Bugsnag, sqlite
2 years ago
// https://developer.android.com/ndk/guides/abis
abiFilters "armeabi-v7a", "x86", "arm64-v8a", "x86_64"
}
}
base {
archivesName = "FairEmail-v1." + getVersionCode() + getRevision()
}
4 years ago
sourceSets {
github {
java.srcDirs = ['src/main/java', 'src/github/java', 'src/extra/java']
}
large {
java.srcDirs = ['src/main/java', 'src/github/java', 'src/extra/java']
}
4 years ago
fdroid {
2 years ago
java.srcDirs = ['src/main/java', 'src/fdroid/java', 'src/extra/java']
}
4 years ago
play {
2 years ago
java.srcDirs = ['src/main/java', 'src/play/java', 'src/dummy/java']
4 years ago
}
amazon {
2 years ago
java.srcDirs = ['src/main/java', 'src/amazon/java', 'src/extra/java']
}
4 years ago
main.res.srcDirs += 'src/main/resExtra'
}
lint {
// https://developer.android.com/studio/write/lint
// https://developer.android.com/reference/tools/gradle-api/8.0/com/android/build/api/dsl/LintOptions
abortOnError true
checkReleaseBuilds false
//checkDependencies false
disable 'MissingTranslation'
fatal 'StringFormatInvalid', 'StringFormatMatches', 'StringFormatCount'
checkOnly 'StringFormatInvalid', 'StringFormatMatches', 'StringFormatCount'
5 years ago
}
compileOptions {
8 months ago
// https://developer.android.com/studio/write/java8-support#groovy
// sudo update-alternatives --install /usr/bin/java java /usr/local/android-studio/jbr/bin/java 1
8 months ago
coreLibraryDesugaringEnabled true
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = '1.8'
}
externalNativeBuild {
cmake {
2 years ago
version "3.22.1"
path "CMakeLists.txt"
}
}
4 years ago
dependenciesInfo {
includeInApk = false
includeInBundle = false
}
5 years ago
packagingOptions {
3 years ago
jniLibs {
2 months ago
// https://issuetracker.google.com/issues/127691101
// https://developer.android.com/guide/practices/page-sizes#build
useLegacyPackaging = true
3 years ago
excludes += [
'org/apache/**'
]
}
resources {
excludes += [
'LICENSES',
'META-INF/LICENSE.txt',
'META-INF/README.md',
'META-INF/CHANGES',
'META-INF/jersey-module-version',
'META-INF/COPYRIGHT.html',
'META-INF/LICENSE.gpl.txt',
'META-INF/LICENSE.commercial.txt',
'LICENSE-2.0.txt',
'RELEASE.txt',
'DebugProbesKt.bin',
4 months ago
'font_metrics.properties'
3 years ago
]
}
5 years ago
}
// https://developer.android.com/reference/tools/gradle-api/4.2/com/android/build/api/dsl/SigningConfig
signingConfigs {
release {
if (rootProject.file("keystore.properties").exists()) {
storeFile file(keystoreProperties['storeFile'])
storePassword keystoreProperties['storePassword']
keyAlias keystoreProperties['keyAlias']
keyPassword keystoreProperties['keyPassword']
v1SigningEnabled true
v2SigningEnabled true
}
}
}
// https://developer.android.com/reference/tools/gradle-api/8.3/com/android/build/api/dsl/BuildFeatures
4 years ago
buildFeatures {
aidl = true
buildConfig = true
compose = false
prefab = false
renderScript = false
resValues = false
shaders = false
viewBinding = false
dataBinding = false
4 years ago
}
buildTypes {
// https://developer.android.com/studio/build/shrink-code
release {
debuggable = false
minifyEnabled = true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.release
8 months ago
buildConfigField "String", "TX_URI", "\"\""
buildConfigField "String", "GPA_URI", "\"\""
buildConfigField "String", "INFO_URI", "\"\""
buildConfigField "String", "BUGSNAG_URI", "\"\""
buildConfigField "String", "DEV_DOMAIN", "\"\""
}
debug {
applicationIdSuffix '.debug'
debuggable = true
6 years ago
minifyEnabled = false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
8 months ago
buildConfigField "String", "TX_URI", localProperties.getProperty("paypal.uri", "\"\"")
buildConfigField "String", "GPA_URI", localProperties.getProperty("gpa.uri", "\"\"")
buildConfigField "String", "INFO_URI", localProperties.getProperty("info.uri", "\"\"")
buildConfigField "String", "BUGSNAG_URI", localProperties.getProperty("bugsnag.uri", "\"\"")
buildConfigField "String", "DEV_DOMAIN", localProperties.getProperty("dev.domain", "\"\"")
}
}
8 months ago
flavorDimensions += "all"
productFlavors {
github {
dimension "all"
manifestPlaceholders.largeHeap = false
manifestPlaceholders.build_uuid = UUID.nameUUIDFromBytes(("github" + getVersionCode() + getRevision()).getBytes()).toString();
buildConfigField "boolean", "TEST_RELEASE", "false"
buildConfigField "boolean", "BETA_RELEASE", "true"
buildConfigField "boolean", "PLAY_STORE_RELEASE", "false"
buildConfigField "boolean", "FDROID_RELEASE", "false"
buildConfigField "boolean", "AMAZON_RELEASE", "false"
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/FairEmail/releases/latest\""
buildConfigField "String", "GITHUB_LATEST_URI", "\"https://github.com/M66B/FairEmail/releases\""
buildConfigField "String", "BITBUCKET_DOWNLOADS_API", "\"https://api.bitbucket.org/2.0/repositories/M66B/fairemail-test/downloads\""
buildConfigField "String", "BITBUCKET_DOWNLOADS_URI", "\"https://bitbucket.org/M66B/fairemail-test/downloads/\""
buildConfigField "String", "ANNOUNCEMENT_URI", "\"\""
buildConfigField "String", "CLOUD_URI", "\"https://api.fairemail.net/sync\""
buildConfigField "String", "CLOUD_EMAIL", "\"cloud@in.faircode.eu\""
buildConfigField "String", "OPENAI_ENDPOINT", "\"https://api.openai.com/v1/\""
buildConfigField "String", "OPENAI_PRIVACY", "\"https://openai.com/policies/privacy-policy\""
buildConfigField "String", "GEMINI_ENDPOINT", "\"https://generativelanguage.googleapis.com/v1beta/\""
buildConfigField "String", "GEMINI_PRIVACY", "\"https://support.google.com/gemini/answer/13594961\""
2 months ago
buildConfigField "String", "PWNED_ENDPOINT", "\"https://api.pwnedpasswords.com/\""
buildConfigField "String", "PWNED_URI", "\"https://haveibeenpwned.com/\""
buildConfigField "String", "FDROID", "\"https://f-droid.org/packages/%s/\""
}
large {
dimension "all"
manifestPlaceholders.largeHeap = true
manifestPlaceholders.build_uuid = UUID.nameUUIDFromBytes(("large" + getVersionCode() + getRevision()).getBytes()).toString();
2 years ago
buildConfigField "boolean", "TEST_RELEASE", "false"
5 years ago
buildConfigField "boolean", "BETA_RELEASE", "true"
buildConfigField "boolean", "PLAY_STORE_RELEASE", "false"
buildConfigField "boolean", "FDROID_RELEASE", "false"
buildConfigField "boolean", "AMAZON_RELEASE", "false"
5 years ago
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/FairEmail/releases/latest\""
buildConfigField "String", "GITHUB_LATEST_URI", "\"https://github.com/M66B/FairEmail/releases\""
buildConfigField "String", "BITBUCKET_DOWNLOADS_API", "\"https://api.bitbucket.org/2.0/repositories/M66B/fairemail-test/downloads\""
buildConfigField "String", "BITBUCKET_DOWNLOADS_URI", "\"https://bitbucket.org/M66B/fairemail-test/downloads/\""
buildConfigField "String", "ANNOUNCEMENT_URI", "\"\""
buildConfigField "String", "CLOUD_URI", "\"https://api.fairemail.net/sync\""
buildConfigField "String", "CLOUD_EMAIL", "\"cloud@in.faircode.eu\""
buildConfigField "String", "OPENAI_ENDPOINT", "\"https://api.openai.com/v1/\""
buildConfigField "String", "OPENAI_PRIVACY", "\"https://openai.com/policies/privacy-policy\""
buildConfigField "String", "GEMINI_ENDPOINT", "\"https://generativelanguage.googleapis.com/v1beta/\""
buildConfigField "String", "GEMINI_PRIVACY", "\"https://support.google.com/gemini/answer/13594961\""
2 months ago
buildConfigField "String", "PWNED_ENDPOINT", "\"https://api.pwnedpasswords.com/\""
buildConfigField "String", "PWNED_URI", "\"https://haveibeenpwned.com/\""
buildConfigField "String", "FDROID", "\"https://f-droid.org/packages/%s/\""
}
fdroid {
dimension "all"
manifestPlaceholders.largeHeap = false
manifestPlaceholders.build_uuid = UUID.nameUUIDFromBytes(("fdroid" + getVersionCode() + getRevision()).getBytes()).toString();
externalNativeBuild {
cmake {
arguments "-DCMAKE_SHARED_LINKER_FLAGS=-Wl,--build-id=none"
// https://f-droid.org/docs/Reproducible_Builds/
// The build ID is a 160-bit SHA1 string computed over the elf header bits and section contents in the file.
// It is bundled in the elf file as an entry in the notes section.
// readelf -n ./app/build/intermediates/stripped_native_libs/xxxRelease/out/lib/armeabi-v7a/libfairemail.so
}
}
buildConfigField "boolean", "TEST_RELEASE", "false"
5 years ago
buildConfigField "boolean", "BETA_RELEASE", "true"
buildConfigField "boolean", "PLAY_STORE_RELEASE", "false"
buildConfigField "boolean", "FDROID_RELEASE", "true"
buildConfigField "boolean", "AMAZON_RELEASE", "false"
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/FairEmail/releases/latest\""
buildConfigField "String", "GITHUB_LATEST_URI", "\"https://github.com/M66B/FairEmail/releases\""
buildConfigField "String", "BITBUCKET_DOWNLOADS_API", "\"https://api.bitbucket.org/2.0/repositories/M66B/fairemail-test/downloads\""
buildConfigField "String", "BITBUCKET_DOWNLOADS_URI", "\"https://bitbucket.org/M66B/fairemail-test/downloads/\""
buildConfigField "String", "ANNOUNCEMENT_URI", "\"\""
buildConfigField "String", "CLOUD_URI", "\"https://api.fairemail.net/sync\""
buildConfigField "String", "CLOUD_EMAIL", "\"cloud@in.faircode.eu\""
buildConfigField "String", "OPENAI_ENDPOINT", "\"https://api.openai.com/v1/\""
buildConfigField "String", "OPENAI_PRIVACY", "\"https://openai.com/policies/privacy-policy\""
buildConfigField "String", "GEMINI_ENDPOINT", "\"https://generativelanguage.googleapis.com/v1beta/\""
buildConfigField "String", "GEMINI_PRIVACY", "\"https://support.google.com/gemini/answer/13594961\""
2 months ago
buildConfigField "String", "PWNED_ENDPOINT", "\"https://api.pwnedpasswords.com/\""
buildConfigField "String", "PWNED_URI", "\"https://haveibeenpwned.com/\""
buildConfigField "String", "FDROID", "\"https://f-droid.org/packages/%s/\""
}
play {
dimension "all"
//minSdkVersion 23
manifestPlaceholders.largeHeap = false
manifestPlaceholders.build_uuid = UUID.nameUUIDFromBytes(("play" + getVersionCode() + getRevision()).getBytes()).toString();
buildConfigField "boolean", "TEST_RELEASE", "false"
buildConfigField "boolean", "BETA_RELEASE", "true"
buildConfigField "boolean", "PLAY_STORE_RELEASE", "true"
buildConfigField "boolean", "FDROID_RELEASE", "false"
buildConfigField "boolean", "AMAZON_RELEASE", "false"
buildConfigField "String", "PRO_FEATURES_URI", "\"https://email.faircode.eu/#pro\""
buildConfigField "String", "CHANGELOG", "\"\""
buildConfigField "String", "GITHUB_LATEST_API", "\"\""
buildConfigField "String", "GITHUB_LATEST_URI", "\"\""
buildConfigField "String", "BITBUCKET_DOWNLOADS_API", "\"\""
buildConfigField "String", "BITBUCKET_DOWNLOADS_URI", "\"\""
buildConfigField "String", "ANNOUNCEMENT_URI", "\"\""
buildConfigField "String", "CLOUD_URI", "\"\""
buildConfigField "String", "CLOUD_EMAIL", "\"\""
buildConfigField "String", "OPENAI_ENDPOINT", "\"https://api.openai.com/v1/\""
buildConfigField "String", "OPENAI_PRIVACY", "\"https://openai.com/policies/privacy-policy\""
buildConfigField "String", "GEMINI_ENDPOINT", "\"https://generativelanguage.googleapis.com/v1beta/\""
buildConfigField "String", "GEMINI_PRIVACY", "\"https://support.google.com/gemini/answer/13594961\""
buildConfigField "String", "PWNED_ENDPOINT", "\"https://api.pwnedpasswords.com/\""
buildConfigField "String", "PWNED_URI", "\"https://haveibeenpwned.com/\""
buildConfigField "String", "FDROID", "\"\""
getIsDefault().set(true)
}
amazon {
dimension "all"
minSdkVersion 23
manifestPlaceholders.largeHeap = false
manifestPlaceholders.build_uuid = UUID.nameUUIDFromBytes(("amazon" + getVersionCode() + getRevision()).getBytes()).toString();
buildConfigField "boolean", "TEST_RELEASE", "false"
buildConfigField "boolean", "BETA_RELEASE", "true"
buildConfigField "boolean", "PLAY_STORE_RELEASE", "false"
buildConfigField "boolean", "FDROID_RELEASE", "false"
buildConfigField "boolean", "AMAZON_RELEASE", "true"
5 years ago
buildConfigField "String", "PRO_FEATURES_URI", "\"https://email.faircode.eu/#pro\""
buildConfigField "String", "CHANGELOG", "\"\""
buildConfigField "String", "GITHUB_LATEST_API", "\"\""
buildConfigField "String", "GITHUB_LATEST_URI", "\"\""
buildConfigField "String", "BITBUCKET_DOWNLOADS_API", "\"\""
buildConfigField "String", "BITBUCKET_DOWNLOADS_URI", "\"\""
buildConfigField "String", "ANNOUNCEMENT_URI", "\"\""
buildConfigField "String", "CLOUD_URI", "\"\""
buildConfigField "String", "CLOUD_EMAIL", "\"\""
buildConfigField "String", "OPENAI_ENDPOINT", "\"\""
buildConfigField "String", "OPENAI_PRIVACY", "\"\""
buildConfigField "String", "GEMINI_ENDPOINT", "\"\""
buildConfigField "String", "GEMINI_PRIVACY", "\"\""
buildConfigField "String", "PWNED_ENDPOINT", "\"https://api.pwnedpasswords.com/\""
buildConfigField "String", "PWNED_URI", "\"https://haveibeenpwned.com/\""
buildConfigField "String", "FDROID", "\"\""
}
}
variantFilter { variant ->
def flavors = variant.flavors*.name
// Builds: release, debug
// Flavors: github, large, fdroid, play
if (variant.buildType.name == "debug" &&
(flavors.contains("amazon") ||
flavors.contains("fdroid") ||
flavors.contains("large") ||
flavors.contains("play"))) {
setIgnore(true)
}
}
4 years ago
// https://stackoverflow.com/questions/28948538/
6 months ago
applicationVariants.configureEach { variant ->
if (variant.buildType.name == "debug")
variant.buildConfigField "String", "MXTOOLBOX_URI", "\"https://mxtoolbox.com\""
else
variant.buildConfigField "String", "MXTOOLBOX_URI", "\"\""
7 months ago
//if (variant.getBuildType().isMinifyEnabled())
// variant.assembleProvider.get().doLast {
// for (file in variant.getMappingFileProvider().get().files)
// if (file != null && file.exists()) {
// def dir = "${rootDir}/app/schemas/mapping"
// def name = "$archivesBaseName-$variant.baseName-$file.name"
// def target = new File(dir, name)
// if (!target.exists())
// copy {
// from file
// into dir
// rename { String fileName -> name }
// }
// }
// }
4 years ago
}
bugsnag {
// https://docs.bugsnag.com/build-integrations/gradle/
uploadJvmMappings = false // disables upload of ProGuard/DexGuard/R8 mapping files
uploadNdkMappings = false // disables upload of NDK mapping files
reportBuilds = false // disables upload of build metadata
overwrite = true
builderName = "M66B"
}
}
6 months ago
tasks.register('copyMarkdown', Copy) {
from "${rootDir}"
into "src/main/assets"
include "CHANGELOG.md"
include "SETUP.md"
include "ATTRIBUTION.md"
}
preBuild.dependsOn copyMarkdown
6 months ago
tasks.register('copyChangelog', Copy) {
from "${rootDir}"
into "../metadata/en-US/changelogs"
include "CHANGELOG.md"
rename "CHANGELOG.md", getVersionCode() + ".txt"
filter { String line ->
line
.replaceAll(".*Google Translate.*", "--------------------")
.replaceAll("### ", "")
.replaceAll("## ", "")
.replaceAll("<br>", "---")
.replaceAll("<img.*/>", "")
.replaceAll("\\(https.*\\)", "")
.replaceAll("\\[", "")
.replaceAll("\\]", "")
}
}
preBuild.dependsOn copyChangelog
6 months ago
tasks.register('updateFAQ', Exec) {
workingDir "${rootDir}"
1 month ago
commandLine 'sh', '-c', 'pandoc --standalone --metadata=title="FairEmail - support" --variable=title="" --columns=10000 -M document-css=false --metadata-file FAQ.yaml FAQ.md -o index.html'
}
6 months ago
tasks.register('updatePrivacy', Exec) {
workingDir "${rootDir}"
commandLine 'sh', '-c', 'pandoc --standalone --metadata title="FairEmail - privacy" --variable=title="FairEmail" --metadata-file privacy/privacy.yaml PRIVACY.md -o privacy/index.html'
}
6 months ago
tasks.register('updateCrowdin', Exec) {
// https://crowdin.github.io/crowdin-cli/
// https://developer.crowdin.com/configuration-file/
workingDir "${rootDir}"
commandLine 'sh', '-c', 'crowdin download --branch=master'
}
6 months ago
tasks.register('downloadPSL', Download) {
3 years ago
// https://github.com/michel-kraemer/gradle-download-task
src "https://raw.githubusercontent.com/publicsuffix/list/master/public_suffix_list.dat"
dest "src/main/assets"
overwrite true
}
6 months ago
tasks.register('downloadBraveClean', Download) {
src "https://raw.githubusercontent.com/brave/adblock-lists/master/brave-lists/clean-urls.json"
dest "src/main/assets"
overwrite true
}
6 months ago
tasks.register('downloadBraveDebouce', Download) {
src "https://raw.githubusercontent.com/brave/adblock-lists/master/brave-lists/debounce.json"
dest "src/main/assets"
overwrite true
}
tasks.register('downloadAdguard', Download) {
src "https://raw.githubusercontent.com/AdguardTeam/FiltersRegistry/master/filters/filter_17_TrackParam/filter.txt"
dest "src/main/assets/adguard_filter.txt"
overwrite true
}
6 months ago
tasks.register('downloadBrave') {
dependsOn("downloadBraveClean", "downloadBraveDebouce")
}
6 months ago
tasks.register('extractSignature', Exec) {
workingDir "${rootDir}"
// sudo apt install apksigcopier
commandLine 'sh', '-c', 'mkdir -p metadata/eu.faircode.email/signatures/' + getVersionCode() + ' &&' +
'apksigcopier extract --v1-only=auto app/build/outputs/apk/fdroid/release/FairEmail-v1.' + getVersionCode() + getRevision() + '-fdroid-release.apk metadata/eu.faircode.email/signatures/' + getVersionCode()
}
6 months ago
tasks.register('upload') {
1 year ago
// ./gradlew upload -Ptarget=play-preview
doLast {
1 year ago
println "\nhttps://bitbucket.org/M66B/fairemail-test/downloads/FairEmail-v1." + getVersionCode() + getRevision() + "-" + target + "-release.apk\n"
exec {
2 months ago
workingDir "${rootDir}/app/build"
commandLine 'curl',
'-o', '/dev/null',
'-X', 'POST', "https://M66B:" + localProperties.getProperty("bb.pwd", "") + "@api.bitbucket.org/2.0/repositories/M66B/fairemail-test/downloads",
2 months ago
'--form', "files=@${rootDir}/app/build/outputs/apk/" + target.split('-')[0] + "/release/FairEmail-v1." + getVersionCode() + getRevision() + "-" + target.split('-')[0] + "-release.apk;" +
1 year ago
"filename=FairEmail-v1." + getVersionCode() + getRevision() + "-" + target + "-release.apk"
}
}
}
repositories {
6 years ago
google()
mavenCentral()
maven { url "https://jitpack.io" }
//maven { url "https://oss.sonatype.org/content/repositories/snapshots" }
//maven { url "https://jakarta.oss.sonatype.org/content/repositories/snapshots/" }
}
6 months ago
configurations.configureEach {
// Workaround https://issuetracker.google.com/issues/138441698
// Support @69c481c39a17d4e1e44a4eb298bb81c48f226eef
5 years ago
exclude group: "androidx.room", module: "room-runtime"
1 year ago
exclude group: "androidx.sqlite", module: "sqlite-framework"
// Workaround https://issuetracker.google.com/issues/134685570
5 years ago
exclude group: "androidx.lifecycle", module: "lifecycle-livedata"
5 years ago
exclude group: "androidx.lifecycle", module: "lifecycle-livedata-core"
// lifecycle-livedata: ComputableLiveData, MediatorLiveData, Transformations
// lifecycle-livedata-core: LiveData, MutableLiveData, Observer
// paging-runtime: AsyncPagedListDiffer, LivePagedListBuilder, PagedListAdapter, PagedStorageDiffHelper
exclude group: "androidx.emoji2", module: "emoji2"
// Markwon
exclude group: "com.atlassian.commonmark", module: "commonmark"
// https://github.com/MiniDNS/minidns/issues/139
exclude group: "org.minidns", module: "minidns-dnssec"
}
6 months ago
configurations.configureEach {
resolutionStrategy.eachDependency { details ->
if (details.requested.group == "androidx.room") {
//print("Pinning " + details.requested.group + ":" + details.requested.name + "\n")
details.useVersion "2.4.3"
} else if (details.requested.group == "androidx.lifecycle" &&
details.requested.name != "lifecycle-extensions") {
//print("Pinning " + details.requested.group + ":" + details.requested.name + "\n")
Revert "Updated AndroidX" / Lifecycle This reverts commit eebdff9fdabf21a72526cf42913bab9963bfb39d. java.lang.AbstractMethodError: abstract method "androidx.lifecycle.ViewModel androidx.lifecycle.ViewModelProvider$Factory.create(kotlin.reflect.KClass, androidx.lifecycle.viewmodel.CreationExtras)" at androidx.lifecycle.viewmodel.ViewModelProviderImpl.getViewModel$lifecycle_viewmodel_release(ViewModelProviderImpl.kt:69) at androidx.lifecycle.viewmodel.ViewModelProviderImpl.getViewModel$lifecycle_viewmodel_release$default(ViewModelProviderImpl.kt:47) at androidx.lifecycle.ViewModelProvider.get(ViewModelProvider.android.kt:91) at androidx.lifecycle.ViewModelProvider.get(ViewModelProvider.android.kt:109) at leakcanary.internal.ViewModelClearedWatcher$Companion.install(ViewModelClearedWatcher.kt:61) at leakcanary.internal.AndroidXFragmentDestroyWatcher.invoke(AndroidXFragmentDestroyWatcher.kt:66) at leakcanary.internal.AndroidXFragmentDestroyWatcher.invoke(AndroidXFragmentDestroyWatcher.kt:25) at leakcanary.FragmentAndViewModelWatcher$lifecycleCallbacks$1.onActivityCreated(FragmentAndViewModelWatcher.kt:59) at android.app.Application.dispatchActivityCreated(Application.java:189) at android.app.Activity.onCreate(Activity.java:936) at androidx.core.app.ComponentActivity.onCreate(ComponentActivity.kt:73) at androidx.activity.ComponentActivity.onCreate(ComponentActivity.java:359) at androidx.fragment.app.FragmentActivity.onCreate(FragmentActivity.java:216) at eu.faircode.email.ActivityBase.onCreate(ActivityBase.java:421) at eu.faircode.email.ActivityMain.onCreate(ActivityMain.java:200) at android.app.Activity.performCreate(Activity.java:5937) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105)
2 weeks ago
details.useVersion "2.7.0"
} else if (details.requested.group == "org.apache.poi") {
//print("Pinning " + details.requested.group + ":" + details.requested.name + "\n")
details.useVersion "3.17"
} else if (details.requested.group == "org.simplejavamail") {
//print("Pinning " + details.requested.group + ":" + details.requested.name + "\n")
details.useVersion "1.7.13"
} else if (details.requested.group == "com.google.flatbuffers") {
//print("Pinning " + details.requested.group + ":" + details.requested.name + "\n")
details.useVersion "2.0.0"
}
}
}
dependencies {
//implementation fileTree(dir: 'libs', include: ['*.jar'])
6 months ago
def desugar_version = "2.0.4"
def startup_version = "1.2.0-alpha02"
3 months ago
def annotation_version_experimental = "1.4.1"
def core_version = "1.13.1" // 1.15.0-alpha01
2 weeks ago
def appcompat_version = "1.7.0"
7 months ago
def emoji_version = "1.4.0" // 1.5.0-alpha01
def flatbuffers_version = "2.0.0"
def activity_version = " 1.9.0" // 1.10.0-alpha01
def fragment_version = "1.8.1"
def windows_version = "1.2.0" // 1.3.0-rc01
def webkit_version = "1.10.0" // 1.11.0/1.12.0-alpha02
9 months ago
def recyclerview_version = "1.3.2" // 1.4.0-alpha01
9 months ago
def coordinatorlayout_version = "1.2.0" // 1.3.0-alpha02
def constraintlayout_version = "2.1.4" // 2.2.0-alpha13
def material_version = "1.11.0" // 1.12.0 / 1.13.0-alpha03
4 months ago
def browser_version = "1.8.0"
2 years ago
def lbm_version = "1.1.0"
4 years ago
def swiperefresh_version = "1.2.0-alpha01"
3 years ago
def documentfile_version = "1.1.0-alpha01"
def lifecycle_version = "2.7.0" // 2.8.3
def lifecycle_extensions_version = "2.2.0"
def room_version = "2.4.3" // 2.5.2/2.6.1/2.7.0-alpha04
def sqlite_version = "2.4.0" // 2.5.0-alpha04
2 years ago
def requery_version = "3.39.2"
2 months ago
def paging_version = "2.1.2" // 3.3.0-rc01
10 months ago
def preference_version = "1.2.1"
3 months ago
def work_version = "2.9.0" // 2.10.0-alpha02
def exif_version = "1.3.7"
def biometric_version = "1.2.0-alpha05"
3 months ago
def billingclient_version = "6.0.1" // 6.2.0
2 weeks ago
def playservicesbasement_version = "18.4.0";
def transparency_version = "2.5.42"
def javamail_version = "1.6.7"
6 months ago
def jsoup_version = "1.17.2"
def jsonpath_version = "2.9.0"
8 months ago
def css_version = "0.9.30"
def jax_version = "2.3.0-jaxb-1.0.6"
def minidns_version = "1.0.5"
def openpgp_version = "12.0"
def badge_version = "1.1.22"
2 months ago
def bugsnag_version = "6.4.0"
def biweekly_version = "0.6.8"
def vcard_version = "0.12.1"
2 years ago
def relinker_version = "1.4.5"
def markwon_version = "4.6.2"
2 months ago
def commonmark_version = "0.22.0"
def bouncycastle_version = "1.78.1"
def colorpicker_version = "0.0.15"
def overscroll_version = "1.1.1"
2 years ago
def appauth_version = "0.11.1"
4 years ago
def jcharset_version = "2.1"
def apache_poi = "3.17" // Do not update
def outlook_parser_version = "1.7.13" // Do not update
def reactivestreams_version = "1.0.3"
def rxjava2_version = "2.2.21"
def svg_version = "1.4"
2 months ago
def compress_version = "1.26.1"
def ipaddress_version = "5.5.0"
def canary_version = "2.14"
def ws_version = "2.14"
def tinylog_version = "2.6.2"
def zxing_version = "3.5.3"
def evalex_version = "3.2.0"
8 months ago
// https://mvnrepository.com/artifact/com.android.tools/desugar_jdk_libs?repo=google
6 months ago
coreLibraryDesugaring "com.android.tools:desugar_jdk_libs:$desugar_version"
8 months ago
3 years ago
// https://developer.android.com/jetpack/androidx/releases/startup
implementation "androidx.startup:startup-runtime:$startup_version"
// https://developer.android.com/jetpack/androidx/releases/
6 months ago
// https://mvnrepository.com/artifact/com.google.code.findbugs/jsr305
fdroidImplementation "com.google.code.findbugs:jsr305:3.0.2"
3 years ago
implementation "androidx.annotation:annotation-experimental:$annotation_version_experimental"
// https://mvnrepository.com/artifact/androidx.core/core
implementation "androidx.core:core:$core_version"
6 years ago
// https://mvnrepository.com/artifact/androidx.appcompat/appcompat
// https://mvnrepository.com/artifact/androidx.emoji2/emoji2
4 years ago
// https://mvnrepository.com/artifact/androidx.activity/activity
5 years ago
// https://mvnrepository.com/artifact/androidx.fragment/fragment
// https://mvnrepository.com/artifact/androidx.window/window-java
implementation "androidx.appcompat:appcompat:$appcompat_version"
//implementation "androidx.emoji2:emoji2:$emoji_version"
implementation "com.google.flatbuffers:flatbuffers-java:$flatbuffers_version"
4 years ago
implementation "androidx.activity:activity:$activity_version"
implementation "androidx.fragment:fragment:$fragment_version"
implementation "androidx.window:window-java:$windows_version"
6 years ago
// https://developer.android.com/jetpack/androidx/releases/webkit
// https://mvnrepository.com/artifact/androidx.webkit/webkit
implementation "androidx.webkit:webkit:$webkit_version"
// https://mvnrepository.com/artifact/androidx.viewpager2/viewpager2
//implementation "androidx.viewpager2:viewpager2:1.1.0-alpha01"
6 years ago
// https://mvnrepository.com/artifact/androidx.recyclerview/recyclerview
// https://mvnrepository.com/artifact/androidx.recyclerview/recyclerview-selection
implementation "androidx.recyclerview:recyclerview:$recyclerview_version"
3 years ago
//implementation "androidx.recyclerview:recyclerview-selection:1.1.0" // 1.2.0-alpha01
6 years ago
// https://mvnrepository.com/artifact/androidx.coordinatorlayout/coordinatorlayout
implementation "androidx.coordinatorlayout:coordinatorlayout:$coordinatorlayout_version"
6 years ago
// https://mvnrepository.com/artifact/androidx.constraintlayout/constraintlayout
implementation "androidx.constraintlayout:constraintlayout:$constraintlayout_version"
6 years ago
// 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"
6 years ago
// https://mvnrepository.com/artifact/androidx.browser/browser
implementation "androidx.browser:browser:$browser_version"
// 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"
6 years ago
// 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
// https://mvnrepository.com/artifact/androidx.lifecycle/lifecycle-viewmodel-savedstate
// https://mvnrepository.com/artifact/androidx.lifecycle/lifecycle-compiler
implementation "androidx.lifecycle:lifecycle-runtime:$lifecycle_version"
implementation "androidx.lifecycle:lifecycle-livedata:$lifecycle_version"
implementation "androidx.lifecycle:lifecycle-livedata-core:$lifecycle_version"
implementation "androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycle_version"
annotationProcessor "androidx.lifecycle:lifecycle-compiler:$lifecycle_version"
// https://mvnrepository.com/artifact/androidx.lifecycle/lifecycle-extensions
implementation "androidx.lifecycle:lifecycle-extensions:$lifecycle_extensions_version"
6 years ago
// https://mvnrepository.com/artifact/androidx.room/room-runtime
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
//implementation "androidx.sqlite:sqlite-framework:$sqlite_version" // because of exclude
annotationProcessor "androidx.room:room-compiler:$room_version"
3 years ago
// https://www.sqlite.org/changes.html
// https://github.com/requery/sqlite-android/
// https://jitpack.io/#requery/sqlite-android
//implementation "com.github.requery:sqlite-android:$requery_version"
//implementation project(':sqlite-android')
3 years ago
6 years ago
// https://mvnrepository.com/artifact/androidx.paging/paging-runtime
4 years ago
// https://developer.android.com/jetpack/androidx/releases/paging
//implementation "androidx.paging:paging-runtime:$paging_version"
5 years ago
// https://mvnrepository.com/artifact/androidx.preference/preference
2 years ago
implementation("androidx.preference:preference:$preference_version") {
exclude group: "androidx.fragment", module: "fragment-ktx"
}
5 years ago
// https://mvnrepository.com/artifact/androidx.work/work-runtime
implementation "androidx.work:work-runtime:$work_version"
1 year ago
// implementation "com.google.guava:listenablefuture:1.0"
2 months ago
// https://mvnrepository.com/artifact/com.google.guava/guava
implementation "com.google.guava:guava:33.1.0-android" // ListenableFuture
// 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"
6 years ago
// https://developer.android.com/google/play/billing/billing_library_releases_notes
4 years ago
// https://android-developers.googleblog.com/2020/06/meet-google-play-billing-library.html
playImplementation "com.android.billingclient:billing:$billingclient_version"
6 years ago
2 months ago
// https://mvnrepository.com/artifact/com.google.android.gms/play-services-basement
2 months ago
githubImplementation "com.google.android.gms:play-services-basement:$playservicesbasement_version"
largeImplementation "com.google.android.gms:play-services-basement:$playservicesbasement_version"
playImplementation "com.google.android.gms:play-services-basement:$playservicesbasement_version"
7 months ago
// https://github.com/appmattus/certificatetransparency
5 months ago
// https://mvnrepository.com/artifact/com.appmattus.certificatetransparency/certificatetransparency-android
implementation "com.appmattus.certificatetransparency:certificatetransparency-android:$transparency_version"
// https://developer.amazon.com/docs/in-app-purchasing/iap-get-started.html
amazonImplementation files('lib/in-app-purchasing-2.0.76.jar')
6 years ago
// 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"
5 years ago
// https://jsoup.org/news/
4 years ago
// https://mvnrepository.com/artifact/org.jsoup/jsoup
implementation "org.jsoup:jsoup:$jsoup_version"
// https://github.com/json-path/JsonPath
implementation "com.jayway.jsonpath:json-path:$jsonpath_version"
// http://cssparser.sourceforge.net/
// https://mvnrepository.com/artifact/net.sourceforge.cssparser/cssparser
implementation "net.sourceforge.cssparser:cssparser:$css_version"
// https://github.com/eclipse-ee4j/jaxb-ri
// https://mvnrepository.com/artifact/org.w3c/dom
implementation "org.w3c:dom:$jax_version"
// https://github.com/MiniDNS/minidns
// https://mvnrepository.com/artifact/org.minidns/minidns-hla
implementation "org.minidns:minidns-hla:$minidns_version"
// Include
implementation "org.minidns:minidns-client:$minidns_version"
implementation "org.minidns:minidns-core:$minidns_version"
implementation "org.minidns:minidns-iterative-resolver:$minidns_version"
// https://github.com/open-keychain/openpgp-api
5 years ago
// https://mvnrepository.com/artifact/org.sufficientlysecure/openpgp-api
//implementation "org.sufficientlysecure:openpgp-api:$openpgp_version"
implementation project(':openpgp-api')
// https://github.com/leolin310148/ShortcutBadger
5 years ago
// https://mvnrepository.com/artifact/me.leolin/ShortcutBadger
implementation "me.leolin:ShortcutBadger:$badge_version"
// https://github.com/bugsnag/bugsnag-android
// https://mvnrepository.com/artifact/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"
exclude group: "com.bugsnag", module: "bugsnag-android-core"
5 years ago
}
// https://github.com/mangstadt/biweekly
// https://mvnrepository.com/artifact/net.sf.biweekly/biweekly
implementation("net.sf.biweekly:biweekly:$biweekly_version") {
exclude group: 'com.fasterxml.jackson.core', module: 'jackson-core'
exclude group: 'com.fasterxml.jackson.core', module: 'jackson-databind'
}
//api "com.fasterxml.jackson.core:jackson-core:2.16.1"
//api "com.fasterxml.jackson.core:jackson-databind:2.16.1"
// https://github.com/mangstadt/ez-vcard
implementation("com.googlecode.ez-vcard:ez-vcard:$vcard_version") {
exclude group: 'com.fasterxml.jackson.core', module: 'jackson-core'
exclude group: 'com.fasterxml.jackson.core', module: 'jackson-databind'
}
// https://github.com/KeepSafe/ReLinker
// https://mvnrepository.com/artifact/com.getkeepsafe.relinker/relinker
2 years ago
//implementation "com.getkeepsafe.relinker:relinker:$relinker_version"
// https://github.com/noties/Markwon
// https://mvnrepository.com/artifact/io.noties.markwon/core
implementation "io.noties.markwon:core:$markwon_version"
implementation "io.noties.markwon:html:$markwon_version"
implementation "io.noties.markwon:editor:$markwon_version"
// https://github.com/commonmark/commonmark-java
// https://mvnrepository.com/artifact/org.commonmark
implementation "org.commonmark:commonmark:$commonmark_version";
implementation "org.commonmark:commonmark-ext-ins:$commonmark_version";
implementation "org.commonmark:commonmark-ext-task-list-items:$commonmark_version";
implementation "org.commonmark:commonmark-ext-gfm-tables:$commonmark_version";
implementation "org.commonmark:commonmark-ext-gfm-strikethrough:$commonmark_version";
// https://github.com/vsch/flexmark-java
2 months ago
// https://mvnrepository.com/artifact/com.vladsch.flexmark/flexmark
implementation "com.vladsch.flexmark:flexmark-html2md-converter:0.64.8"
5 years ago
// // https://github.com/QuadFlask/colorpicker
//implementation "com.github.QuadFlask:colorpicker:$colorpicker_version"
implementation project(':colorpicker')
// https://github.com/EverythingMe/overscroll-decor
3 years ago
// https://search.maven.org/artifact/io.github.everythingme/overscroll-decor-android
implementation "io.github.everythingme:overscroll-decor-android:$overscroll_version"
// https://www.bouncycastle.org/latest_releases.html
5 months ago
// https://mvnrepository.com/artifact/org.bouncycastle/bcpkix-jdk15to18
// https://mvnrepository.com/artifact/org.bouncycastle/bctls-jdk15to18
5 years ago
implementation "org.bouncycastle:bcpkix-jdk15to18:$bouncycastle_version"
implementation "org.bouncycastle:bctls-jdk15to18:$bouncycastle_version"
// https://github.com/openid/AppAuth-Android
2 years ago
// https://mvnrepository.com/artifact/net.openid/appauth
implementation "net.openid:appauth:$appauth_version"
4 years ago
// http://www.freeutils.net/source/jcharset/
// https://mvnrepository.com/artifact/net.freeutils/jcharset
4 years ago
implementation "net.freeutils:jcharset:$jcharset_version"
// https://poi.apache.org/components/hmef/index.html
// https://mvnrepository.com/artifact/org.apache.poi/poi-scratchpad
implementation "org.apache.poi:poi-scratchpad:$apache_poi"
// https://github.com/bbottema/outlook-message-parser
2 years ago
implementation("org.simplejavamail:outlook-message-parser:$outlook_parser_version") {
exclude group: "com.sun.activation", module: "jakarta.activation"
}
// https://mvnrepository.com/artifact/org.reactivestreams/reactive-streams
// https://mvnrepository.com/artifact/io.reactivex.rxjava2/rxjava
implementation "org.reactivestreams:reactive-streams:$reactivestreams_version"
implementation "io.reactivex.rxjava2:rxjava:$rxjava2_version"
// http://bigbadaboom.github.io/androidsvg/
implementation "com.caverock:androidsvg:$svg_version"
// https://commons.apache.org/proper/commons-compress/
// https://mvnrepository.com/artifact/org.apache.commons/commons-compress
implementation "org.apache.commons:commons-compress:$compress_version"
// https://seancfoley.github.io/IPAddress/
// https://mvnrepository.com/artifact/com.github.seancfoley/ipaddress
implementation "com.github.seancfoley:ipaddress:$ipaddress_version"
2 years ago
// https://mvnrepository.com/artifact/androidx.car.app/app?repo=google
5 months ago
// implementation "androidx.car.app:app:1.4.0-rc02"
2 years ago
// https://github.com/square/leakcanary
// https://square.github.io/leakcanary/getting_started/
// https://square.github.io/leakcanary/changelog/
// https://mvnrepository.com/artifact/com.squareup.leakcanary/leakcanary-android
debugImplementation "com.squareup.leakcanary:leakcanary-android:$canary_version"
// https://github.com/TakahikoKawasaki/nv-websocket-client
implementation "com.neovisionaries:nv-websocket-client:$ws_version"
// https://tinylog.org/v2/download/
// https://mvnrepository.com/artifact/org.tinylog
implementation "org.tinylog:tinylog-api:$tinylog_version"
implementation "org.tinylog:tinylog-impl:$tinylog_version"
// https://github.com/zxing/zxing
// https://mvnrepository.com/artifact/com.google.zxing/core
implementation "com.google.zxing:core:$zxing_version"
// https://github.com/ezylang/EvalEx
implementation "com.ezylang:EvalEx:$evalex_version"
}