1
0
Fork 0
mirror of https://github.com/anyproto/anytype-kotlin.git synced 2025-06-07 21:37:02 +09:00
anytype-kotlin/app/build.gradle

257 lines
No EOL
8.9 KiB
Groovy

plugins {
id "com.android.application"
id "kotlin-android"
id "kotlin-kapt"
id "com.google.firebase.appdistribution"
}
if (rootProject.ext.onCi) {
apply plugin: "com.github.hierynomus.license-report"
downloadLicenses {
dependencyConfiguration = 'all'
includeProjectDependencies = true
}
}
apply from: "$rootDir/versioning.gradle"
def apikeyPropertiesFile = rootProject.file("apikeys.properties")
def apikeyProperties = new Properties()
apikeyProperties.load(new FileInputStream(apikeyPropertiesFile))
def useReleaseKeystore = rootProject.file("scripts/release/app-release.jks").exists()
def localProperties = new Properties()
localProperties.with {
def lp = "local.properties"
if (new File(lp).exists()) it.load(new FileInputStream(lp))
}
android {
def config = rootProject.ext
compileSdkVersion config.compile_sdk
androidResources {
generateLocaleConfig true
}
defaultConfig {
applicationId config.application_id
minSdkVersion config.min_sdk
targetSdkVersion config.target_sdk
versionCode getBuildVersionCode()
versionName getBuildVersionName()
testInstrumentationRunner config.test_runner
buildConfigField "boolean", "USE_NEW_WINDOW_INSET_API", "true"
buildConfigField "boolean", "LOG_FROM_MW_LIBRARY", localProperties.getProperty("LOG_FROM_MW_LIBRARY", "false")
buildConfigField "boolean", "LOG_MW_INTERACTION", localProperties.getProperty("LOG_MW_INTERACTION", "false")
buildConfigField "boolean", "LOG_DASHBOARD_REDUCER", localProperties.getProperty("LOG_DASHBOARD_REDUCER", "false")
buildConfigField "boolean", "LOG_EDITOR_VIEWMODEL_EVENTS", localProperties.getProperty("LOG_EDITOR_VIEWMODEL_EVENTS", "false")
buildConfigField "boolean", "LOG_EDITOR_CONTROL_PANEL", localProperties.getProperty("LOG_EDITOR_CONTROL_PANEL", "false")
buildConfigField "boolean", "ENABLE_STRICT_MODE", "false"
resValue "string", "SENTRY_DSN", config.sentryApiKey
}
packagingOptions {
resources {
excludes += ['LICENSE.txt', 'META-INF/DEPENDENCIES', 'META-INF/ASL2.0', 'META-INF/NOTICE', 'META-INF/LICENSE']
}
}
signingConfigs {
release {
if (useReleaseKeystore) {
def keystorePropertiesFile = rootProject.file("signing.properties")
def keystoreProperties = new Properties()
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
storeFile rootProject.file("scripts/release/app-release.jks")
keyAlias keystoreProperties['RELEASE_KEY_ALIAS']
keyPassword keystoreProperties['RELEASE_KEY_PASSWORD']
storePassword keystoreProperties['RELEASE_STORE_PASSWORD']
v1SigningEnabled true
v2SigningEnabled true
}
}
}
buildTypes {
release {
minifyEnabled true
shrinkResources true
debuggable false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
buildConfigField("String", "AMPLITUDE_KEY", apikeyProperties['amplitude.release'])
if (useReleaseKeystore) {
signingConfig signingConfigs.release
} else {
signingConfig signingConfigs.debug
}
}
debug {
applicationIdSuffix ".debug"
debuggable true
buildConfigField("String", "AMPLITUDE_KEY", apikeyProperties['amplitude.debug'])
//signingConfig signingConfigs.debug
firebaseAppDistribution {
artifactType = "AAB"
groups = "anytype-q&a, product-review, nightly"
serviceCredentialsFile = "$rootDir/scripts/distribution/anytype-debug-service-account-key.json"
}
}
applicationVariants.all {
variant ->
if (variant.name == 'release') {
variant.outputs.each {
output ->
project.ext { appName = 'anytype' }
def newName = output.outputFile.name
newName = newName.replace("app-", "$project.ext.appName-$variant.versionName-")
newName = newName.replace("-release", "")
newName = newName.replace("-universal", "")
output.outputFileName = newName
}
}
}
}
composeOptions {
kotlinCompilerExtensionVersion libs.versions.composeKotlinCompilerVersion.get()
}
buildFeatures {
viewBinding true
compose true
}
splits {
// Configures multiple APKs based on ABI.
abi {
// Enables building multiple APKs per ABI.
enable false
reset()
include "armeabi-v7a", "arm64-v8a"
universalApk false
}
}
ndkVersion "23.2.8568313"
namespace 'com.anytypeio.anytype'
}
dependencies {
implementation project(':domain')
implementation project(':core-models')
implementation project(':localization')
implementation project(':data')
implementation project(':device')
implementation project(':persistence')
implementation project(':middleware')
implementation project(':presentation')
implementation project(':clipboard')
implementation project(':core-utils')
implementation project(':core-ui')
implementation project(':library-page-icon-picker-widget')
implementation project(':library-emojifier')
implementation project(':library-syntax-highlighter')
implementation project(':analytics')
implementation project(':ui-settings')
implementation project(':crash-reporting')
implementation project(':payments')
implementation project(':gallery-experience')
//Compile time dependencies
kapt libs.daggerCompiler
kapt libs.glideCompiler
compileOnly libs.javaxAnnotation
compileOnly libs.javaxInject
//Application dependencies
implementation libs.kotlin
implementation libs.coroutinesAndroid
implementation libs.fragment
implementation libs.navigation
implementation libs.navigationUi
implementation libs.appcompat
implementation libs.design
implementation libs.recyclerView
implementation libs.constraintLayout
implementation libs.glide
implementation libs.coilCompose
implementation libs.dagger
implementation libs.timber
implementation libs.gson
implementation libs.pickT
implementation libs.emojiCompat
implementation libs.navigationCompose
implementation libs.lifecycleViewModel
implementation libs.lifecycleRuntime
implementation libs.lifecycleLiveData
implementation libs.lifecycleCompose
implementation libs.compose
implementation libs.composeFoundation
implementation libs.composeMaterial
implementation libs.composeMaterial3
implementation libs.composeToolingPreview
implementation libs.composeAccompanistPager
implementation libs.composeAccompanistThemeAdapter
implementation libs.composeAccompanistPagerIndicators
implementation libs.composeAccompanistPermissions
implementation libs.composeAccompanistNavigation
implementation libs.preference
implementation libs.activityCompose
implementation libs.composeReorderable
implementation libs.room
implementation libs.appUpdater
implementation libs.exoPlayerCore
implementation libs.exoPlayerUi
implementation libs.amplitude
implementation libs.shimmerLayout
implementation libs.photoView
implementation libs.zxing
implementation libs.androidxSecurityCrypto
implementation libs.middleware
implementation libs.wireRuntime
//Unit/Integration tests dependencies
testImplementation libs.androidXTestCore
testImplementation libs.junit
testImplementation libs.robolectric
testImplementation libs.kotlinTest
testImplementation libs.mockitoKotlin
testImplementation project(':test:utils')
//Acceptance tests dependencies
androidTestImplementation project(':test:android-utils')
androidTestImplementation libs.mockitoAndroid
androidTestImplementation libs.mockitoKotlin
androidTestImplementation libs.espressoContrib
androidTestImplementation libs.androidJUnit
androidTestImplementation libs.kotlinTest
androidTestImplementation libs.testRules
androidTestImplementation libs.disableAnimation
androidTestImplementation libs.navigationTesting
androidTestImplementation project(":test:utils")
androidTestImplementation project(":test:core-models-stub")
androidTestImplementation(libs.coroutineTesting) {
exclude group: "org.jetbrains.kotlinx", module: "kotlinx-coroutines-debug"
}
debugImplementation libs.fragmentTesting
debugImplementation libs.composeTooling
}
apply plugin: 'com.google.gms.google-services'