173 lines
5.7 KiB
Groovy
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'
|
|
}
|