kopia lustrzana https://github.com/vitorpamplona/amethyst
323 wiersze
9.0 KiB
Groovy
323 wiersze
9.0 KiB
Groovy
plugins {
|
|
alias(libs.plugins.androidApplication)
|
|
alias(libs.plugins.jetbrainsKotlinAndroid)
|
|
alias(libs.plugins.googleServices)
|
|
}
|
|
|
|
android {
|
|
namespace 'com.vitorpamplona.amethyst'
|
|
compileSdk 34
|
|
|
|
defaultConfig {
|
|
applicationId "com.vitorpamplona.amethyst"
|
|
minSdk 26
|
|
targetSdk 34
|
|
versionCode 381
|
|
versionName "0.88.4"
|
|
buildConfigField "String", "RELEASE_NOTES_ID", "\"2a34cbadd03212c8162e1ff896ba12641821088a2ec8d5e40d54aa80c0510800\""
|
|
|
|
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
|
vectorDrawables {
|
|
useSupportLibrary true
|
|
}
|
|
resourceConfigurations += [
|
|
'ar',
|
|
'bn-rBD',
|
|
'cs',
|
|
'cy-rGB',
|
|
'da-rDK',
|
|
'de',
|
|
'el-rGR',
|
|
'en-rGB',
|
|
'eo',
|
|
'es',
|
|
'es-rES',
|
|
'es-rMX',
|
|
'es-rUS',
|
|
'et-rEE',
|
|
'fa',
|
|
'fi-rFI',
|
|
'fo-rFO',
|
|
'fr',
|
|
'fr-rCA',
|
|
'gu-rIN',
|
|
'hi-rIN',
|
|
'hr-rHR',
|
|
'hu',
|
|
'in',
|
|
'in-rID',
|
|
'it-rIT',
|
|
'iw-rIL',
|
|
'ja',
|
|
'kk-rKZ',
|
|
'ko-rKR',
|
|
'ks-rIN',
|
|
'ku-rTR',
|
|
'lt-rLT',
|
|
'ne-rNP',
|
|
'night',
|
|
'nl',
|
|
'nl-rBE',
|
|
'pcm-rNG',
|
|
'pl-rPL',
|
|
'pt-rBR',
|
|
'pt-rPT',
|
|
'ru',
|
|
'ru-rUA',
|
|
'sa-rIN',
|
|
'sl-rSI',
|
|
'so-rSO',
|
|
'sr-rSP',
|
|
'ss-rZA',
|
|
'sv-rSE',
|
|
'sw-rKE',
|
|
'sw-rTZ',
|
|
'ta',
|
|
'th',
|
|
'tr',
|
|
'uk',
|
|
'ur-rIN',
|
|
'uz-rUZ',
|
|
'vi-rVN',
|
|
'zh',
|
|
'zh-rCN',
|
|
'zh-rHK',
|
|
'zh-rSG',
|
|
'zh-rTW'
|
|
]
|
|
}
|
|
|
|
buildTypes {
|
|
release {
|
|
proguardFiles getDefaultProguardFile("proguard-android-optimize.txt"), 'proguard-rules.pro'
|
|
minifyEnabled true
|
|
resValue "string", "app_name", "@string/app_name_release"
|
|
}
|
|
debug {
|
|
applicationIdSuffix '.debug'
|
|
versionNameSuffix '-DEBUG'
|
|
resValue "string", "app_name", "@string/app_name_debug"
|
|
}
|
|
create("benchmark") {
|
|
initWith(getByName("release"))
|
|
profileable true
|
|
signingConfig signingConfigs.debug
|
|
}
|
|
}
|
|
|
|
flavorDimensions = ["channel"]
|
|
|
|
productFlavors {
|
|
play {
|
|
getIsDefault().set(true)
|
|
dimension "channel"
|
|
}
|
|
|
|
fdroid {
|
|
dimension "channel"
|
|
}
|
|
}
|
|
|
|
splits {
|
|
abi {
|
|
enable true
|
|
reset()
|
|
include "x86", "x86_64", "arm64-v8a", "armeabi-v7a"
|
|
universalApk true
|
|
}
|
|
}
|
|
|
|
compileOptions {
|
|
sourceCompatibility JavaVersion.VERSION_17
|
|
targetCompatibility JavaVersion.VERSION_17
|
|
}
|
|
|
|
kotlinOptions {
|
|
jvmTarget = '17'
|
|
}
|
|
|
|
buildFeatures {
|
|
compose true
|
|
buildConfig true
|
|
}
|
|
|
|
composeOptions {
|
|
// Should match compose version : https://developer.android.com/jetpack/androidx/releases/compose-kotlin
|
|
kotlinCompilerExtensionVersion "1.5.14"
|
|
}
|
|
packagingOptions {
|
|
resources {
|
|
excludes += ['/META-INF/{AL2.0,LGPL2.1}', '**/libscrypt.dylib']
|
|
}
|
|
}
|
|
|
|
lint {
|
|
disable 'MissingTranslation'
|
|
}
|
|
|
|
testOptions {
|
|
unitTests.returnDefaultValues = true
|
|
}
|
|
}
|
|
|
|
dependencies {
|
|
implementation platform(libs.androidx.compose.bom)
|
|
|
|
implementation project(path: ':quartz')
|
|
implementation project(path: ':commons')
|
|
implementation libs.androidx.core.ktx
|
|
implementation libs.androidx.activity.compose
|
|
|
|
implementation libs.androidx.ui
|
|
implementation libs.androidx.ui.graphics
|
|
implementation libs.androidx.ui.tooling.preview
|
|
|
|
// Needs this to open gallery / image upload
|
|
implementation libs.androidx.fragment.ktx
|
|
|
|
// Navigation
|
|
implementation libs.androidx.navigation.compose
|
|
|
|
// Observe Live data as State
|
|
implementation libs.androidx.runtime.livedata
|
|
|
|
// Material 3 Design
|
|
implementation libs.androidx.material3
|
|
implementation libs.androidx.material.icons
|
|
|
|
// Adaptive Layout / Two Pane
|
|
implementation libs.androidx.material3.windowSize
|
|
implementation libs.accompanist.adaptive
|
|
|
|
// Lifecycle
|
|
implementation libs.androidx.lifecycle.runtime.ktx
|
|
implementation libs.androidx.lifecycle.runtime.compose
|
|
implementation libs.androidx.lifecycle.viewmodel.compose
|
|
implementation libs.androidx.lifecycle.livedata.ktx
|
|
|
|
// Zoomable images
|
|
implementation libs.zoomable
|
|
|
|
// Biometrics
|
|
implementation libs.androidx.biometric.ktx
|
|
|
|
// Websockets API
|
|
implementation libs.okhttp
|
|
|
|
// Encrypted Key Storage
|
|
implementation libs.androidx.security.crypto.ktx
|
|
|
|
// view videos
|
|
implementation libs.androidx.media3.exoplayer
|
|
implementation libs.androidx.media3.exoplayer.hls
|
|
implementation libs.androidx.media3.ui
|
|
implementation libs.androidx.media3.session
|
|
|
|
// important for proxy / tor
|
|
implementation libs.androidx.media3.datasource.okhttp
|
|
|
|
// Load images from the web.
|
|
implementation libs.coil.compose
|
|
// view gifs
|
|
implementation libs.coil.gif
|
|
// view svgs
|
|
implementation libs.coil.svg
|
|
|
|
// create blurhash
|
|
implementation libs.trbl.blurhash
|
|
|
|
// Permission to upload pictures:
|
|
implementation libs.accompanist.permissions
|
|
|
|
// For QR generation
|
|
implementation libs.zxing
|
|
implementation libs.zxing.embedded
|
|
|
|
// 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 libs.markdown.ui
|
|
implementation libs.markdown.ui.material3
|
|
implementation libs.markdown.commonmark
|
|
|
|
// Language picker and Theme chooser
|
|
implementation libs.androidx.appcompat
|
|
|
|
// Local model for language identification
|
|
playImplementation libs.google.mlkit.language.id
|
|
|
|
// Google services model the translate text
|
|
playImplementation libs.google.mlkit.translate
|
|
|
|
// PushNotifications
|
|
playImplementation platform(libs.firebase.bom)
|
|
playImplementation libs.firebase.messaging
|
|
|
|
//PushNotifications(FDroid)
|
|
fdroidImplementation libs.unifiedpush
|
|
|
|
// Charts
|
|
implementation libs.vico.charts.core
|
|
implementation libs.vico.charts.compose
|
|
implementation libs.vico.charts.views
|
|
implementation libs.vico.charts.m3
|
|
|
|
// GeoHash
|
|
implementation libs.drfonfon.geohash
|
|
|
|
// Waveform visualizer
|
|
implementation libs.audiowaveform
|
|
|
|
// Video compression lib
|
|
implementation libs.abedElazizShe.image.compressor
|
|
// Image compression lib
|
|
implementation libs.zelory.video.compressor
|
|
|
|
testImplementation libs.junit
|
|
testImplementation libs.mockk
|
|
|
|
androidTestImplementation platform(libs.androidx.compose.bom)
|
|
androidTestImplementation libs.androidx.junit
|
|
androidTestImplementation libs.androidx.junit.ktx
|
|
androidTestImplementation libs.androidx.espresso.core
|
|
|
|
debugImplementation platform(libs.androidx.compose.bom)
|
|
debugImplementation libs.androidx.ui.tooling
|
|
debugImplementation libs.androidx.ui.test.manifest
|
|
}
|
|
|
|
// 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, "")
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|