amethyst/app/build.gradle

247 wiersze
8.7 KiB
Groovy
Czysty Zwykły widok Historia

2023-01-11 18:31:20 +00:00
plugins {
id 'com.android.application'
id 'org.jetbrains.kotlin.android'
2023-03-07 17:58:13 +00:00
id 'org.jlleitschuh.gradle.ktlint' version "11.3.1"
id 'com.google.gms.google-services'
2023-01-11 18:31:20 +00:00
}
android {
namespace 'com.vitorpamplona.amethyst'
compileSdk 33
defaultConfig {
applicationId "com.vitorpamplona.amethyst"
minSdk 26
targetSdk 33
2023-07-12 14:21:02 +00:00
versionCode 245
versionName "0.66.7"
2023-01-11 18:31:20 +00:00
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
vectorDrawables {
useSupportLibrary true
}
resConfigs("ar", "cs", "eo", "es", "fa", "fr", "hu", "night", "nl", "pt-rBR", "ru", "sv-rSE", "ta", "tr", "uk", "zh", "sh-rHK", "zh-rTW" )
2023-01-11 18:31:20 +00:00
}
buildTypes {
release {
2023-05-26 16:19:38 +00:00
// TODO: Make sure all of JSON parsers work when activating these.
//minifyEnabled true
//proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
2023-02-06 14:15:18 +00:00
resValue "string", "app_name", "@string/app_name_release"
}
debug {
applicationIdSuffix '.debug'
versionNameSuffix '-DEBUG'
resValue "string", "app_name", "@string/app_name_debug"
2023-01-11 18:31:20 +00:00
}
}
flavorDimensions "channel"
productFlavors {
play {
2023-03-17 20:54:57 +00:00
getIsDefault().set(true)
dimension "channel"
}
fdroid {
dimension "channel"
}
}
splits {
abi {
enable true
reset()
include "x86", "x86_64"
universalApk true
}
}
2023-01-11 18:31:20 +00:00
compileOptions {
sourceCompatibility JavaVersion.VERSION_17
targetCompatibility JavaVersion.VERSION_17
2023-01-11 18:31:20 +00:00
}
2023-01-11 18:31:20 +00:00
kotlinOptions {
jvmTarget = '17'
2023-01-11 18:31:20 +00:00
}
2023-01-11 18:31:20 +00:00
buildFeatures {
compose true
}
2023-01-11 18:31:20 +00:00
composeOptions {
2023-05-26 16:19:38 +00:00
kotlinCompilerExtensionVersion "1.4.7"
2023-01-11 18:31:20 +00:00
}
2023-01-11 18:31:20 +00:00
packagingOptions {
resources {
excludes += '/META-INF/{AL2.0,LGPL2.1}'
}
}
2023-04-20 21:18:20 +00:00
lint {
disable 'MissingTranslation'
}
2023-01-11 18:31:20 +00:00
}
dependencies {
2023-05-10 23:36:07 +00:00
implementation 'androidx.core:core-ktx:1.10.1'
implementation 'androidx.activity:activity-compose:1.7.2'
2023-01-11 18:31:20 +00:00
implementation "androidx.compose.ui:ui:$compose_ui_version"
implementation "androidx.compose.ui:ui-tooling-preview:$compose_ui_version"
2023-03-05 01:55:52 +00:00
// Needs this to open gallery / image upload
implementation "androidx.fragment:fragment-ktx:$fragment_version"
2023-01-11 18:31:20 +00:00
// Navigation
implementation("androidx.navigation:navigation-compose:$nav_version")
// Observe Live data as State
2023-03-13 21:36:47 +00:00
implementation "androidx.compose.runtime:runtime-livedata:$compose_ui_version"
2023-01-11 18:31:20 +00:00
2023-03-13 21:36:47 +00:00
implementation "androidx.compose.material:material:$compose_ui_version"
implementation "androidx.compose.material:material-icons-extended:$compose_ui_version"
// Lifecycle
2023-02-25 21:18:31 +00:00
implementation "androidx.lifecycle:lifecycle-runtime-compose:$lifecycle_version"
implementation "androidx.lifecycle:lifecycle-viewmodel-compose:$lifecycle_version"
implementation "androidx.lifecycle:lifecycle-runtime-ktx:$lifecycle_version"
implementation "androidx.lifecycle:lifecycle-livedata:$lifecycle_version"
2023-01-11 18:31:20 +00:00
2023-04-25 01:03:01 +00:00
implementation 'net.engawapg.lib:zoomable:1.4.2'
// Biometrics
implementation "androidx.biometric:biometric-ktx:1.2.0-alpha05"
2023-01-11 18:31:20 +00:00
// Bitcoin secp256k1 bindings to Android
2023-07-05 13:04:42 +00:00
implementation 'fr.acinq.secp256k1:secp256k1-kmp-jni-android:0.10.1'
2023-01-11 18:31:20 +00:00
// Nostr Base Protocol
implementation('com.github.vitorpamplona.NostrPostr:nostrpostrlib:master-SNAPSHOT') {
exclude group:'fr.acinq.secp256k1'
exclude module: 'guava'
exclude module: 'guava-testlib'
}
// Websockets API
2023-01-18 14:18:34 +00:00
implementation 'com.squareup.okhttp3:okhttp:5.0.0-alpha.11'
2023-01-11 18:31:20 +00:00
// Json Serialization TODO: We might need to converge between gson and Jackson (we are usin both)
2023-06-01 20:07:08 +00:00
implementation 'com.fasterxml.jackson.module:jackson-module-kotlin:2.15.2'
implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
2023-01-11 18:31:20 +00:00
// link preview
implementation 'org.jsoup:jsoup:1.16.1'
2023-02-25 21:18:31 +00:00
// Encrypted Key Storage
2023-04-27 20:23:30 +00:00
implementation 'androidx.security:security-crypto-ktx:1.1.0-alpha06'
2023-01-13 03:40:39 +00:00
// view videos
2023-07-10 18:28:42 +00:00
implementation "com.google.android.exoplayer:exoplayer:${exoplayer_version}"
// important for proxy / tor
2023-07-10 18:28:42 +00:00
implementation "com.google.android.exoplayer:extension-okhttp:${exoplayer_version}"
2023-01-13 03:40:39 +00:00
// Load images from the web.
2023-03-30 20:53:13 +00:00
implementation "io.coil-kt:coil-compose:$coil_version"
2023-01-16 17:57:23 +00:00
// view gifs
2023-03-30 20:53:13 +00:00
implementation "io.coil-kt:coil-gif:$coil_version"
2023-01-16 17:57:23 +00:00
// view svgs
2023-03-30 20:53:13 +00:00
implementation "io.coil-kt:coil-svg:$coil_version"
2023-01-16 17:57:23 +00:00
2023-04-21 21:01:42 +00:00
// create blurhash
implementation group: 'io.trbl', name: 'blurhash', version: '1.0.0'
// Permission to upload pictures:
implementation "com.google.accompanist:accompanist-permissions:$accompanist_version"
// Parses URLs from Text:
implementation "io.github.url-detector:url-detector:0.1.23"
// For QR generation
implementation 'com.google.zxing:core:3.5.1'
2023-03-10 14:06:15 +00:00
implementation 'com.journeyapps:zxing-android-embedded:4.3.0'
// Markdown
//implementation "com.halilibo.compose-richtext:richtext-ui:0.16.0"
//implementation "com.halilibo.compose-richtext:richtext-ui-material:0.16.0"
//implementation "com.halilibo.compose-richtext:richtext-commonmark:0.16.0"
// Markdown (With fix for full-image bleeds)
implementation('com.github.vitorpamplona.compose-richtext:richtext-ui:a0954aba63')
implementation('com.github.vitorpamplona.compose-richtext:richtext-ui-material:a0954aba63')
implementation('com.github.vitorpamplona.compose-richtext:richtext-commonmark:a0954aba63')
// Local model for language identification
playImplementation 'com.google.mlkit:language-id:17.0.4'
// Google services model the translate text
playImplementation 'com.google.mlkit:translate:17.0.1'
// PushNotifications
2023-06-28 15:06:56 +00:00
playImplementation platform('com.google.firebase:firebase-bom:32.1.1')
playImplementation 'com.google.firebase:firebase-messaging-ktx'
2023-05-17 02:41:47 +00:00
// Charts
implementation "com.patrykandpatrick.vico:core:${vico_version}"
implementation "com.patrykandpatrick.vico:compose:${vico_version}"
implementation "com.patrykandpatrick.vico:views:${vico_version}"
implementation "com.patrykandpatrick.vico:compose-m2:${vico_version}"
// immutable collections to avoid recomposition
implementation("org.jetbrains.kotlinx:kotlinx-collections-immutable:0.3.5")
2023-06-08 16:14:26 +00:00
// Video compression lib
implementation 'com.github.AbedElazizShe:LightCompressor:1.2.3'
// Image compression lib
implementation 'id.zelory:compressor:3.0.1'
// Automatic memory leak detection
2023-07-05 13:04:42 +00:00
debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.12'
2023-01-11 18:31:20 +00:00
testImplementation 'junit:junit:4.13.2'
2023-04-25 01:03:01 +00:00
testImplementation 'io.mockk:mockk:1.13.5'
2023-04-27 20:23:30 +00:00
androidTestImplementation 'androidx.test.ext:junit:1.2.0-alpha01'
2023-01-11 18:31:20 +00:00
androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1'
androidTestImplementation "androidx.compose.ui:ui-test-junit4:$compose_ui_version"
debugImplementation "androidx.compose.ui:ui-tooling:$compose_ui_version"
debugImplementation "androidx.compose.ui:ui-test-manifest:$compose_ui_version"
2023-03-05 21:42:19 +00:00
}
2023-03-07 18:09:26 +00:00
ktlint {
disabledRules.set(["no-wildcard-imports"])
}
2023-03-15 01:37:57 +00:00
// https://gitlab.com/fdroid/wiki/-/wikis/HOWTO:-diff-&-fix-APKs-for-Reproducible-Builds#differing-assetsdexoptbaselineprofm-easy-to-fix
// NB: Android Studio can't find the imports; this does not affect the
// actual build since Gradle can find them just fine.
import com.android.tools.profgen.ArtProfileKt
import com.android.tools.profgen.ArtProfileSerializer
import com.android.tools.profgen.DexFile
project.afterEvaluate {
tasks.each { task ->
if (task.name.startsWith("compile") && task.name.endsWith("ReleaseArtProfile")) {
task.doLast {
outputs.files.each { file ->
if (file.name.endsWith(".profm")) {
println("Sorting ${file} ...")
def version = ArtProfileSerializer.valueOf("METADATA_0_0_2")
def profile = ArtProfileKt.ArtProfile(file)
def keys = new ArrayList(profile.profileData.keySet())
def sortedData = new LinkedHashMap()
Collections.sort keys, new DexFile.Companion()
keys.each { key -> sortedData[key] = profile.profileData[key] }
new FileOutputStream(file).with {
write(version.magicBytes$profgen)
write(version.versionBytes$profgen)
version.write$profgen(it, sortedData, "")
}
}
}
}
}
}
}