kore/app/build.gradle
2025-11-24 08:22:15 +01:00

173 lines
5.7 KiB
Groovy

apply plugin: 'com.android.application'
def getVersionName = { ->
def stdout = new ByteArrayOutputStream()
exec {
commandLine 'git', 'describe', '--tags', '--always'
standardOutput = stdout
}
return stdout.toString().trim()
}
android {
compileSdk 34
defaultConfig {
applicationId "org.xbmc.kore"
minSdkVersion 24
targetSdkVersion 34
versionCode 33
versionName = getVersionName()
testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner'
def supportedLocales = ["en",
"af-za", "ast", "be-by", "bg", "ca", "cs", "da-dk", "de",
"es", "es-MX", "eu", "fi", "fr", "hr", "hu", "it", "iw", "ja",
"ko", "lt", "nl", "pl", "pt", "pt-BR", "ru", "sk", "sl", "zh-CN"]
buildConfigField "String[]", "SUPPORTED_LOCALES", "new String[]{\""+
supportedLocales.join("\",\"")+"\"}"
}
signingConfigs {
release {
if (System.getenv("KODI_ANDROID_STORE_FILE") != null) {
keyAlias System.getenv("KODI_ANDROID_KEY_ALIAS")
keyPassword System.getenv("KODI_ANDROID_KEY_PASSWORD")
storeFile file(System.getenv("KODI_ANDROID_STORE_FILE"))
storePassword System.getenv("KODI_ANDROID_STORE_PASSWORD")
enableV1Signing true
enableV2Signing true
enableV3Signing true
}
}
}
testOptions {
execution 'ANDROIDX_TEST_ORCHESTRATOR'
unitTests {
includeAndroidResources = true
}
}
buildTypes {
release {
if (System.getenv("KODI_ANDROID_STORE_FILE") != null) {
signingConfig signingConfigs.release
zipAlignEnabled true
}
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
buildFeatures {
viewBinding true
}
packagingOptions {
resources {
excludes += ['META-INF/DEPENDENCIES', 'META-INF/NOTICE', 'META-INF/LICENSE', 'META-INF/LICENSE.txt', 'META-INF/NOTICE.txt']
}
}
lint {
// Too much trouble keeping all translations in sync
disable 'MissingTranslation'
}
bundle {
language {
enableSplit = false
}
}
namespace 'org.xbmc.kore'
}
java {
toolchain {
languageVersion = JavaLanguageVersion.of(17)
}
}
ext {
supportLibVersion = '28.0.0'
}
dependencies {
implementation 'com.google.android.material:material:1.10.0'
implementation 'androidx.preference:preference:1.2.1'
implementation 'androidx.appcompat:appcompat:1.6.1'
implementation 'androidx.recyclerview:recyclerview:1.3.2'
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
implementation('androidx.core:core-google-shortcuts:1.1.0') {
exclude group:'com.google.android.gms'
}
implementation 'androidx.media:media:1.6.0'
implementation "androidx.viewpager2:viewpager2:1.1.0-beta02"
implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.1.0"
implementation "androidx.fragment:fragment:1.6.2"
implementation "androidx.fragment:fragment-ktx:1.6.2"
// Dependency resolution
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.2"
implementation "androidx.lifecycle:lifecycle-viewmodel:2.6.2"
// Jackson v2.13 kept. v2.14 and later require minSDK >= 26
// https://github.com/FasterXML/jackson/wiki/Jackson-Releases
implementation 'com.fasterxml.jackson.core:jackson-databind:2.13.5'
implementation 'com.squareup.okhttp3:okhttp:4.12.0'
// Ignore the new version warning as it refers to v2.71... which is older on maven
implementation 'com.squareup.picasso:picasso:2.8'
implementation 'org.greenrobot:eventbus:3.3.1'
implementation 'org.jmdns:jmdns:3.5.8'
implementation 'at.blogc:expandabletextview:1.0.5'
implementation 'com.simplecityapps:recyclerview-fastscroll:2.0.1'
implementation 'org.nanohttpd:nanohttpd:2.3.1'
implementation fileTree(dir: 'libs', include: ['*.jar'])
androidTestImplementation 'androidx.test.ext:junit:1.1.5'
androidTestImplementation 'androidx.test:rules:1.5.0'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1'
androidTestImplementation 'androidx.test.espresso:espresso-contrib:3.5.1'
androidTestImplementation 'androidx.legacy:legacy-support-v13:1.0.0'
androidTestImplementation 'org.hamcrest:hamcrest-library:2.2'
androidTestImplementation 'junit:junit:4.13.2'
androidTestUtil 'androidx.test:orchestrator:1.4.2'
testImplementation 'org.robolectric:robolectric:4.8.1'
testImplementation 'androidx.test:core:1.5.0'
testImplementation 'androidx.test.ext:junit:1.1.5'
debugImplementation 'junit:junit:4.13.2'
}
def adb = android.getAdbExecutable().toString()
afterEvaluate {
tasks.register('grantAnimationPermissionDev', Exec) {
dependsOn installDebug
doFirst {
println("Executing: $adb shell pm grant $android.defaultConfig.applicationId android.permission.SET_ANIMATION_SCALE")
commandLine "$adb shell pm grant $android.defaultConfig.applicationId android.permission.SET_ANIMATION_SCALE".split(' ')
}
}
tasks.each { task ->
if (task.name.startsWith('connectedDebugAndroidTest')) {
task.dependsOn grantAnimationPermissionDev
}
}
}
/**
* Makes sure assets are copied before running the unit tests
*/
tasks.configureEach { task ->
if (task.name.contains("testDebugUnitTest")) {
task.dependsOn assembleDebug
}
}
tasks.withType(JavaCompile).configureEach {
options.compilerArgs << '-Xlint:unchecked' // << '-Xlint:deprecation'
}