mirror of
https://github.com/commons-app/apps-android-commons.git
synced 2025-10-26 04:13:53 +01:00
Migrated from Groovy to Kotlin DSL and upgrade AGP version (#6322)
Some checks are pending
Android CI / Run tests and generate APK (push) Waiting to run
Some checks are pending
Android CI / Run tests and generate APK (push) Waiting to run
* chore: migrate groovy build files to Kotlin DSL and upgrade AGP chore: use version catalog to manage dependencies chore: move plugins to version catalog remove deprecated way of enabling build-config and redundant code chore: setup triplet-play plugin configuration refactor: move dependency block and tasks to the end of build file refactor: move dependency block and mark redundant dependencies * cleanup: remove redundant dependencies from build file * cleanup: remove git utils file as the functions moved to build file --------- Co-authored-by: Nicolas Raoul <nicolas.raoul@gmail.com>
This commit is contained in:
parent
c49c85e68b
commit
ed1485ca22
10 changed files with 685 additions and 502 deletions
431
app/build.gradle
431
app/build.gradle
|
|
@ -1,431 +0,0 @@
|
||||||
plugins {
|
|
||||||
id 'com.github.triplet.play' version '2.7.2' apply false
|
|
||||||
}
|
|
||||||
apply from: '../gitutils.gradle'
|
|
||||||
apply plugin: 'com.android.application'
|
|
||||||
apply plugin: 'kotlin-android'
|
|
||||||
apply plugin: 'kotlin-kapt'
|
|
||||||
apply plugin: 'kotlin-parcelize'
|
|
||||||
apply from: "$rootDir/jacoco.gradle"
|
|
||||||
|
|
||||||
def isRunningOnTravisAndIsNotPRBuild = System.getenv("CI") == "true" && file('../play.p12').exists()
|
|
||||||
|
|
||||||
if (isRunningOnTravisAndIsNotPRBuild) {
|
|
||||||
apply plugin: 'com.github.triplet.play'
|
|
||||||
}
|
|
||||||
|
|
||||||
dependencies {
|
|
||||||
|
|
||||||
// Utils
|
|
||||||
implementation 'in.yuvi:http.fluent:1.3'
|
|
||||||
implementation 'com.google.code.gson:gson:2.8.5'
|
|
||||||
implementation ("com.squareup.okhttp3:okhttp:$OKHTTP_VERSION!!"){
|
|
||||||
// Forcing dependency versions using force = true on a first-level dependency has been deprecated.
|
|
||||||
// Ref: https://docs.gradle.org/7.5/userguide/upgrading_version_5.html#forced_dependencies
|
|
||||||
//force = true //API 19 support
|
|
||||||
}
|
|
||||||
implementation 'com.squareup.retrofit2:retrofit:2.8.1'
|
|
||||||
implementation "com.squareup.retrofit2:converter-gson:2.8.1"
|
|
||||||
implementation "com.squareup.retrofit2:adapter-rxjava2:2.8.1"
|
|
||||||
implementation 'com.squareup.okio:okio:2.2.2'
|
|
||||||
implementation 'io.reactivex.rxjava2:rxandroid:2.1.0'
|
|
||||||
implementation 'io.reactivex.rxjava2:rxjava:2.2.3'
|
|
||||||
implementation 'com.jakewharton.rxbinding2:rxbinding:2.1.1'
|
|
||||||
implementation 'com.jakewharton.rxbinding3:rxbinding-appcompat:3.0.0'
|
|
||||||
implementation 'com.jakewharton.rxbinding2:rxbinding-support-v4:2.1.1'
|
|
||||||
implementation 'com.jakewharton.rxbinding2:rxbinding-appcompat-v7:2.1.1'
|
|
||||||
implementation 'com.jakewharton.rxbinding2:rxbinding-design:2.1.1'
|
|
||||||
implementation 'com.facebook.fresco:fresco:1.13.0'
|
|
||||||
implementation 'org.apache.commons:commons-lang3:3.8.1'
|
|
||||||
|
|
||||||
// UI
|
|
||||||
implementation 'fr.avianey.com.viewpagerindicator:library:2.4.1.1@aar'
|
|
||||||
implementation 'com.github.chrisbanes:PhotoView:2.0.0'
|
|
||||||
implementation 'com.github.pedrovgs:renderers:3.3.3'
|
|
||||||
implementation "org.maplibre.gl:android-sdk:$MAPLIBRE_VERSION"
|
|
||||||
implementation 'org.maplibre.gl:android-plugin-scalebar-v9:1.0.0'
|
|
||||||
|
|
||||||
implementation 'com.jakewharton.timber:timber:4.7.1'
|
|
||||||
implementation 'com.github.deano2390:MaterialShowcaseView:1.2.0'
|
|
||||||
implementation "com.google.android.material:material:1.12.0"
|
|
||||||
implementation 'com.karumi:dexter:5.0.0'
|
|
||||||
implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
|
|
||||||
implementation 'androidx.compose.ui:ui-tooling-preview'
|
|
||||||
androidTestImplementation 'androidx.compose.ui:ui-test-junit4'
|
|
||||||
|
|
||||||
// Jetpack Compose
|
|
||||||
def composeBom = platform('androidx.compose:compose-bom:2024.11.00')
|
|
||||||
|
|
||||||
implementation "androidx.activity:activity-compose:1.9.3"
|
|
||||||
implementation "androidx.lifecycle:lifecycle-runtime-ktx:2.8.4"
|
|
||||||
implementation (composeBom)
|
|
||||||
implementation "androidx.compose.runtime:runtime"
|
|
||||||
implementation "androidx.compose.ui:ui"
|
|
||||||
implementation "androidx.compose.ui:ui-viewbinding"
|
|
||||||
implementation "androidx.compose.ui:ui-graphics"
|
|
||||||
implementation "androidx.compose.ui:ui-tooling"
|
|
||||||
implementation "androidx.compose.foundation:foundation"
|
|
||||||
implementation "androidx.compose.foundation:foundation-layout"
|
|
||||||
implementation "androidx.compose.material3:material3"
|
|
||||||
androidTestImplementation(composeBom)
|
|
||||||
|
|
||||||
implementation "com.hannesdorfmann:adapterdelegates4-kotlin-dsl-viewbinding:$ADAPTER_DELEGATES_VERSION"
|
|
||||||
implementation "com.hannesdorfmann:adapterdelegates4-pagination:$ADAPTER_DELEGATES_VERSION"
|
|
||||||
implementation "androidx.paging:paging-runtime-ktx:$PAGING_VERSION"
|
|
||||||
testImplementation "androidx.paging:paging-common-ktx:$PAGING_VERSION"
|
|
||||||
implementation "androidx.paging:paging-rxjava2-ktx:$PAGING_VERSION"
|
|
||||||
implementation "androidx.recyclerview:recyclerview:1.2.0-alpha02"
|
|
||||||
implementation "com.squareup.okhttp3:okhttp-ws:$OKHTTP_VERSION"
|
|
||||||
|
|
||||||
// Logging
|
|
||||||
implementation 'ch.acra:acra-dialog:5.8.4'
|
|
||||||
implementation 'ch.acra:acra-mail:5.8.4'
|
|
||||||
implementation 'org.slf4j:slf4j-api:1.7.25'
|
|
||||||
api('com.github.tony19:logback-android-classic:1.1.1-6') {
|
|
||||||
exclude group: 'com.google.android', module: 'android'
|
|
||||||
}
|
|
||||||
implementation "com.squareup.okhttp3:logging-interceptor:$OKHTTP_VERSION"
|
|
||||||
|
|
||||||
// Dependency injector
|
|
||||||
implementation "com.google.dagger:dagger-android:$DAGGER_VERSION"
|
|
||||||
implementation "com.google.dagger:dagger-android-support:$DAGGER_VERSION"
|
|
||||||
debugImplementation 'androidx.compose.ui:ui-tooling'
|
|
||||||
debugImplementation 'androidx.compose.ui:ui-test-manifest'
|
|
||||||
kapt "com.google.dagger:dagger-android-processor:$DAGGER_VERSION"
|
|
||||||
kapt "com.google.dagger:dagger-compiler:$DAGGER_VERSION"
|
|
||||||
annotationProcessor "com.google.dagger:dagger-android-processor:$DAGGER_VERSION"
|
|
||||||
|
|
||||||
implementation "org.jetbrains.kotlin:kotlin-reflect:$KOTLIN_VERSION"
|
|
||||||
|
|
||||||
//Mocking
|
|
||||||
testImplementation 'com.nhaarman.mockitokotlin2:mockito-kotlin:2.2.0'
|
|
||||||
testImplementation 'org.mockito:mockito-inline:5.2.0'
|
|
||||||
testImplementation 'org.mockito:mockito-core:5.6.0'
|
|
||||||
testImplementation "org.powermock:powermock-module-junit4:2.0.9"
|
|
||||||
testImplementation "org.powermock:powermock-api-mockito2:2.0.9"
|
|
||||||
testImplementation("io.mockk:mockk:1.13.5")
|
|
||||||
|
|
||||||
// Unit testing
|
|
||||||
testImplementation 'junit:junit:4.13.2'
|
|
||||||
testImplementation 'org.robolectric:robolectric:4.11.1'
|
|
||||||
testImplementation 'androidx.test:core:1.5.0'
|
|
||||||
testImplementation "androidx.test:runner:1.5.2"
|
|
||||||
testImplementation 'androidx.test.ext:junit:1.1.5'
|
|
||||||
testImplementation "androidx.test:rules:1.5.0"
|
|
||||||
testImplementation "com.squareup.okhttp3:mockwebserver:$OKHTTP_VERSION"
|
|
||||||
testImplementation "com.jraska.livedata:testing-ktx:1.2.0"
|
|
||||||
testImplementation "androidx.arch.core:core-testing:2.2.0"
|
|
||||||
testImplementation "org.junit.jupiter:junit-jupiter-api:5.10.0"
|
|
||||||
testRuntimeOnly "org.junit.jupiter:junit-jupiter-engine:5.10.0"
|
|
||||||
testImplementation 'com.facebook.soloader:soloader:0.10.5'
|
|
||||||
testImplementation "org.jetbrains.kotlinx:kotlinx-coroutines-test:1.7.3"
|
|
||||||
debugImplementation("androidx.fragment:fragment-testing-manifest:1.6.2")
|
|
||||||
androidTestImplementation("androidx.fragment:fragment-testing:1.6.2")
|
|
||||||
testImplementation "commons-io:commons-io:2.6"
|
|
||||||
|
|
||||||
// Android testing
|
|
||||||
androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.0-alpha04'
|
|
||||||
androidTestImplementation 'androidx.test.espresso:espresso-intents:3.4.0'
|
|
||||||
androidTestImplementation 'androidx.test.espresso:espresso-contrib:3.5.0-alpha04'
|
|
||||||
androidTestImplementation 'androidx.test:runner:1.4.0'
|
|
||||||
androidTestImplementation 'androidx.test:rules:1.4.1-alpha04'
|
|
||||||
androidTestImplementation 'androidx.test:core:1.4.0'
|
|
||||||
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
|
|
||||||
androidTestImplementation 'androidx.annotation:annotation:1.3.0'
|
|
||||||
androidTestImplementation 'com.squareup.okhttp3:mockwebserver:4.8.0'
|
|
||||||
androidTestImplementation "androidx.test.uiautomator:uiautomator:2.2.0"
|
|
||||||
androidTestUtil 'androidx.test:orchestrator:1.4.1'
|
|
||||||
|
|
||||||
// Debugging
|
|
||||||
debugImplementation "com.squareup.leakcanary:leakcanary-android:$LEAK_CANARY_VERSION"
|
|
||||||
|
|
||||||
// Support libraries
|
|
||||||
implementation "com.google.android.material:material:1.1.0-alpha04"
|
|
||||||
implementation "androidx.browser:browser:1.3.0"
|
|
||||||
implementation "androidx.cardview:cardview:1.0.0"
|
|
||||||
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
|
|
||||||
implementation 'androidx.exifinterface:exifinterface:1.3.7'
|
|
||||||
implementation "androidx.core:core-ktx:$CORE_KTX_VERSION"
|
|
||||||
implementation 'com.simplecityapps:recyclerview-fastscroll:2.0.1'
|
|
||||||
|
|
||||||
//swipe_layout
|
|
||||||
implementation 'com.daimajia.swipelayout:library:1.2.0@aar'
|
|
||||||
|
|
||||||
//Room
|
|
||||||
implementation "androidx.room:room-runtime:$ROOM_VERSION"
|
|
||||||
implementation "androidx.room:room-ktx:$ROOM_VERSION"
|
|
||||||
implementation "androidx.room:room-rxjava2:$ROOM_VERSION"
|
|
||||||
kapt "androidx.room:room-compiler:$ROOM_VERSION"
|
|
||||||
// For Kotlin use kapt instead of annotationProcessor
|
|
||||||
testImplementation "androidx.arch.core:core-testing:2.1.0"
|
|
||||||
|
|
||||||
// Pref
|
|
||||||
// Java language implementation
|
|
||||||
implementation "androidx.preference:preference:$PREFERENCE_VERSION"
|
|
||||||
// Kotlin
|
|
||||||
implementation "androidx.preference:preference-ktx:$PREFERENCE_VERSION"
|
|
||||||
//Android Media
|
|
||||||
implementation 'com.github.juanitobananas:AndroidMediaUtil:v1.0-1'
|
|
||||||
|
|
||||||
implementation "androidx.multidex:multidex:$MULTIDEX_VERSION"
|
|
||||||
|
|
||||||
def work_version = "2.8.1"
|
|
||||||
// Kotlin + coroutines
|
|
||||||
implementation "androidx.work:work-runtime-ktx:$work_version"
|
|
||||||
implementation("androidx.work:work-runtime:$work_version")
|
|
||||||
testImplementation "androidx.work:work-testing:$work_version"
|
|
||||||
|
|
||||||
//Glide
|
|
||||||
implementation 'com.github.bumptech.glide:glide:4.16.0'
|
|
||||||
annotationProcessor 'com.github.bumptech.glide:compiler:4.16.0'
|
|
||||||
kaptTest "androidx.databinding:databinding-compiler:8.0.2"
|
|
||||||
kaptAndroidTest "androidx.databinding:databinding-compiler:8.0.2"
|
|
||||||
|
|
||||||
implementation("io.github.coordinates2country:coordinates2country-android:1.8") { exclude group: 'com.google.android', module: 'android' }
|
|
||||||
|
|
||||||
//OSMDroid
|
|
||||||
implementation ("org.osmdroid:osmdroid-android:$OSMDROID_VERSION")
|
|
||||||
constraints {
|
|
||||||
implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.8.0") {
|
|
||||||
because("kotlin-stdlib-jdk7 is now a part of kotlin-stdlib")
|
|
||||||
}
|
|
||||||
implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.0") {
|
|
||||||
because("kotlin-stdlib-jdk8 is now a part of kotlin-stdlib")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
task disableAnimations(type: Exec) {
|
|
||||||
def adb = "$System.env.ANDROID_HOME/platform-tools/adb"
|
|
||||||
commandLine "$adb", 'shell', 'settings', 'put', 'global', 'window_animation_scale', '0'
|
|
||||||
commandLine "$adb", 'shell', 'settings', 'put', 'global', 'transition_animation_scale', '0'
|
|
||||||
commandLine "$adb", 'shell', 'settings', 'put', 'global', 'animator_duration_scale', '0'
|
|
||||||
}
|
|
||||||
|
|
||||||
project.gradle.taskGraph.whenReady {
|
|
||||||
connectedBetaDebugAndroidTest.dependsOn disableAnimations
|
|
||||||
connectedProdDebugAndroidTest.dependsOn disableAnimations
|
|
||||||
}
|
|
||||||
|
|
||||||
android {
|
|
||||||
compileSdkVersion 34
|
|
||||||
|
|
||||||
defaultConfig {
|
|
||||||
//applicationId 'fr.free.nrw.commons'
|
|
||||||
|
|
||||||
versionCode 1051
|
|
||||||
versionName '5.4.0'
|
|
||||||
setProperty("archivesBaseName", "app-commons-v$versionName-" + getBranchName())
|
|
||||||
|
|
||||||
minSdkVersion 21
|
|
||||||
targetSdkVersion 34
|
|
||||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
|
||||||
testInstrumentationRunnerArguments clearPackageData: 'true'
|
|
||||||
|
|
||||||
multiDexEnabled true
|
|
||||||
|
|
||||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
|
||||||
|
|
||||||
vectorDrawables.useSupportLibrary = true
|
|
||||||
}
|
|
||||||
packagingOptions {
|
|
||||||
jniLibs {
|
|
||||||
excludes += ['META-INF/androidx.*']
|
|
||||||
}
|
|
||||||
resources {
|
|
||||||
excludes += ['META-INF/androidx.*', 'META-INF/proguard/androidx-annotations.pro', '/META-INF/LICENSE.md', '/META-INF/LICENSE-notice.md']
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
testOptions {
|
|
||||||
animationsDisabled true
|
|
||||||
|
|
||||||
unitTests {
|
|
||||||
returnDefaultValues = true
|
|
||||||
includeAndroidResources = true
|
|
||||||
}
|
|
||||||
|
|
||||||
unitTests.all {
|
|
||||||
jvmArgs '-noverify'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
sourceSets {
|
|
||||||
// use kotlin only in tests (for now)
|
|
||||||
test.java.srcDirs += 'src/test/kotlin'
|
|
||||||
|
|
||||||
// use main assets and resources in test
|
|
||||||
test.assets.srcDirs += 'src/main/assets'
|
|
||||||
test.resources.srcDirs += 'src/main/resoures'
|
|
||||||
}
|
|
||||||
|
|
||||||
signingConfigs {
|
|
||||||
release
|
|
||||||
}
|
|
||||||
|
|
||||||
buildTypes {
|
|
||||||
release {
|
|
||||||
minifyEnabled true
|
|
||||||
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
|
|
||||||
testProguardFile 'test-proguard-rules.txt'
|
|
||||||
signingConfig signingConfigs.debug
|
|
||||||
if (isRunningOnTravisAndIsNotPRBuild) {
|
|
||||||
signingConfig signingConfigs.release
|
|
||||||
}
|
|
||||||
}
|
|
||||||
debug {
|
|
||||||
minifyEnabled false
|
|
||||||
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
|
|
||||||
testProguardFile 'test-proguard-rules.txt'
|
|
||||||
versionNameSuffix "-debug-" + getBranchName()
|
|
||||||
enableUnitTestCoverage true
|
|
||||||
enableAndroidTestCoverage true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isRunningOnTravisAndIsNotPRBuild) {
|
|
||||||
// configure keystore based on env vars in Travis for automated alpha builds
|
|
||||||
signingConfigs.release.storeFile = file("../nr-commons.keystore")
|
|
||||||
signingConfigs.release.storePassword = System.getenv("keystore_password")
|
|
||||||
signingConfigs.release.keyAlias = System.getenv("key_alias")
|
|
||||||
signingConfigs.release.keyPassword = System.getenv("key_password")
|
|
||||||
}
|
|
||||||
|
|
||||||
configurations.all {
|
|
||||||
resolutionStrategy.force 'androidx.annotation:annotation:1.1.0'
|
|
||||||
resolutionStrategy.force 'com.jakewharton.timber:timber:4.7.1'
|
|
||||||
resolutionStrategy.force 'androidx.fragment:fragment:1.3.6'
|
|
||||||
exclude module: 'okhttp-ws'
|
|
||||||
}
|
|
||||||
flavorDimensions 'tier'
|
|
||||||
productFlavors {
|
|
||||||
prod {
|
|
||||||
|
|
||||||
applicationId 'fr.free.nrw.commons'
|
|
||||||
|
|
||||||
buildConfigField "String", "WIKIMEDIA_API_POTD", "\"https://commons.wikimedia.org/w/api.php?action=featuredfeed&feed=potd&feedformat=rss&language=en\""
|
|
||||||
buildConfigField "String", "WIKIMEDIA_API_HOST", "\"https://commons.wikimedia.org/w/api.php\""
|
|
||||||
buildConfigField "String", "WIKIDATA_API_HOST", "\"https://www.wikidata.org/w/api.php\""
|
|
||||||
buildConfigField "String", "WIKIDATA_URL", "\"https://www.wikidata.org\""
|
|
||||||
buildConfigField "String", "WIKIMEDIA_FORGE_API_HOST", "\"https://tools.wmflabs.org/\""
|
|
||||||
buildConfigField "String", "WIKIMEDIA_CAMPAIGNS_URL", "\"https://raw.githubusercontent.com/commons-app/campaigns/master/campaigns.json\""
|
|
||||||
buildConfigField "String", "IMAGE_URL_BASE", "\"https://upload.wikimedia.org/wikipedia/commons\""
|
|
||||||
buildConfigField "String", "HOME_URL", "\"https://commons.wikimedia.org/wiki/\""
|
|
||||||
buildConfigField "String", "COMMONS_URL", "\"https://commons.wikimedia.org\""
|
|
||||||
buildConfigField "String", "WIKIDATA_URL", "\"https://www.wikidata.org\""
|
|
||||||
buildConfigField "String", "MOBILE_HOME_URL", "\"https://commons.m.wikimedia.org/wiki/\""
|
|
||||||
buildConfigField "String", "MOBILE_META_URL", "\"https://meta.m.wikimedia.org/wiki/\""
|
|
||||||
buildConfigField "String", "SIGNUP_LANDING_URL", "\"https://commons.m.wikimedia.org/w/index.php?title=Special:CreateAccount&returnto=Main+Page&returntoquery=welcome%3Dyes\""
|
|
||||||
buildConfigField "String", "SIGNUP_SUCCESS_REDIRECTION_URL", "\"https://commons.m.wikimedia.org/w/index.php?title=Main_Page&welcome=yes\""
|
|
||||||
buildConfigField "String", "FORGOT_PASSWORD_URL", "\"https://commons.wikimedia.org/wiki/Special:PasswordReset\""
|
|
||||||
buildConfigField "String", "PRIVACY_POLICY_URL", "\"https://commons-app.github.io/privacy-policy\""
|
|
||||||
buildConfigField "String", "FILE_USAGES_BASE_URL", "\"https://commons.wikimedia.org/w/api.php?action=query&format=json&formatversion=2\""
|
|
||||||
buildConfigField "String", "ACCOUNT_TYPE", "\"fr.free.nrw.commons\""
|
|
||||||
buildConfigField "String", "CONTRIBUTION_AUTHORITY", "\"fr.free.nrw.commons.contributions.contentprovider\""
|
|
||||||
buildConfigField "String", "MODIFICATION_AUTHORITY", "\"fr.free.nrw.commons.modifications.contentprovider\""
|
|
||||||
buildConfigField "String", "CATEGORY_AUTHORITY", "\"fr.free.nrw.commons.categories.contentprovider\""
|
|
||||||
buildConfigField "String", "RECENT_SEARCH_AUTHORITY", "\"fr.free.nrw.commons.explore.recentsearches.contentprovider\""
|
|
||||||
buildConfigField "String", "RECENT_LANGUAGE_AUTHORITY", "\"fr.free.nrw.commons.recentlanguages.contentprovider\""
|
|
||||||
buildConfigField "String", "BOOKMARK_AUTHORITY", "\"fr.free.nrw.commons.bookmarks.contentprovider\""
|
|
||||||
buildConfigField "String", "BOOKMARK_LOCATIONS_AUTHORITY", "\"fr.free.nrw.commons.bookmarks.locations.contentprovider\""
|
|
||||||
buildConfigField "String", "BOOKMARK_ITEMS_AUTHORITY", "\"fr.free.nrw.commons.bookmarks.items.contentprovider\""
|
|
||||||
buildConfigField "String", "COMMIT_SHA", "\"" + getBuildVersion().toString() + "\""
|
|
||||||
buildConfigField "String", "TEST_USERNAME", "\"" + getTestUserName() + "\""
|
|
||||||
buildConfigField "String", "TEST_PASSWORD", "\"" + getTestPassword() + "\""
|
|
||||||
buildConfigField "String", "DEPICTS_PROPERTY", "\"P180\""
|
|
||||||
buildConfigField "String", "CREATOR_PROPERTY", "\"P170\""
|
|
||||||
dimension 'tier'
|
|
||||||
}
|
|
||||||
|
|
||||||
beta {
|
|
||||||
applicationId 'fr.free.nrw.commons.beta'
|
|
||||||
|
|
||||||
// What values do we need to hit the BETA versions of the site / api ?
|
|
||||||
buildConfigField "String", "WIKIMEDIA_API_POTD", "\"https://commons.wikimedia.org/w/api.php?action=featuredfeed&feed=potd&feedformat=rss&language=en\""
|
|
||||||
buildConfigField "String", "WIKIMEDIA_API_HOST", "\"https://commons.wikimedia.beta.wmflabs.org/w/api.php\""
|
|
||||||
buildConfigField "String", "WIKIDATA_API_HOST", "\"https://www.wikidata.org/w/api.php\""
|
|
||||||
buildConfigField "String", "WIKIDATA_URL", "\"https://www.wikidata.org\""
|
|
||||||
buildConfigField "String", "WIKIMEDIA_FORGE_API_HOST", "\"https://tools.wmflabs.org/\""
|
|
||||||
buildConfigField "String", "WIKIMEDIA_CAMPAIGNS_URL", "\"https://raw.githubusercontent.com/commons-app/campaigns/master/campaigns_beta_active.json\""
|
|
||||||
buildConfigField "String", "IMAGE_URL_BASE", "\"https://upload.beta.wmflabs.org/wikipedia/commons\""
|
|
||||||
buildConfigField "String", "HOME_URL", "\"https://commons.wikimedia.beta.wmflabs.org/wiki/\""
|
|
||||||
buildConfigField "String", "COMMONS_URL", "\"https://commons.wikimedia.beta.wmflabs.org\""
|
|
||||||
buildConfigField "String", "WIKIDATA_URL", "\"https://www.wikidata.org\""
|
|
||||||
buildConfigField "String", "MOBILE_HOME_URL", "\"https://commons.m.wikimedia.beta.wmflabs.org/wiki/\""
|
|
||||||
buildConfigField "String", "MOBILE_META_URL", "\"https://meta.m.wikimedia.beta.wmflabs.org/wiki/\""
|
|
||||||
buildConfigField "String", "SIGNUP_LANDING_URL", "\"https://commons.m.wikimedia.beta.wmflabs.org/w/index.php?title=Special:CreateAccount&returnto=Main+Page&returntoquery=welcome%3Dyes\""
|
|
||||||
buildConfigField "String", "SIGNUP_SUCCESS_REDIRECTION_URL", "\"https://commons.m.wikimedia.beta.wmflabs.org/w/index.php?title=Main_Page&welcome=yes\""
|
|
||||||
buildConfigField "String", "FORGOT_PASSWORD_URL", "\"https://commons.wikimedia.beta.wmflabs.org/wiki/Special:PasswordReset\""
|
|
||||||
buildConfigField "String", "PRIVACY_POLICY_URL", "\"https://commons-app.github.io/privacy-policy\""
|
|
||||||
buildConfigField "String", "FILE_USAGES_BASE_URL", "\"https://commons.wikimedia.org/w/api.php?action=query&format=json&formatversion=2\""
|
|
||||||
buildConfigField "String", "ACCOUNT_TYPE", "\"fr.free.nrw.commons.beta\""
|
|
||||||
buildConfigField "String", "CONTRIBUTION_AUTHORITY", "\"fr.free.nrw.commons.beta.contributions.contentprovider\""
|
|
||||||
buildConfigField "String", "MODIFICATION_AUTHORITY", "\"fr.free.nrw.commons.beta.modifications.contentprovider\""
|
|
||||||
buildConfigField "String", "CATEGORY_AUTHORITY", "\"fr.free.nrw.commons.beta.categories.contentprovider\""
|
|
||||||
buildConfigField "String", "RECENT_SEARCH_AUTHORITY", "\"fr.free.nrw.commons.beta.explore.recentsearches.contentprovider\""
|
|
||||||
buildConfigField "String", "RECENT_LANGUAGE_AUTHORITY", "\"fr.free.nrw.commons.beta.recentlanguages.contentprovider\""
|
|
||||||
buildConfigField "String", "BOOKMARK_AUTHORITY", "\"fr.free.nrw.commons.beta.bookmarks.contentprovider\""
|
|
||||||
buildConfigField "String", "BOOKMARK_LOCATIONS_AUTHORITY", "\"fr.free.nrw.commons.beta.bookmarks.locations.contentprovider\""
|
|
||||||
buildConfigField "String", "BOOKMARK_ITEMS_AUTHORITY", "\"fr.free.nrw.commons.beta.bookmarks.items.contentprovider\""
|
|
||||||
buildConfigField "String", "COMMIT_SHA", "\"" + getBuildVersion().toString() + "\""
|
|
||||||
buildConfigField "String", "TEST_USERNAME", "\"" + getTestUserName() + "\""
|
|
||||||
buildConfigField "String", "TEST_PASSWORD", "\"" + getTestPassword() + "\""
|
|
||||||
buildConfigField "String", "DEPICTS_PROPERTY", "\"P245962\""
|
|
||||||
buildConfigField "String", "CREATOR_PROPERTY", "\"P253075\""
|
|
||||||
dimension 'tier'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
compileOptions {
|
|
||||||
sourceCompatibility JavaVersion.VERSION_17
|
|
||||||
targetCompatibility JavaVersion.VERSION_17
|
|
||||||
}
|
|
||||||
kotlinOptions {
|
|
||||||
jvmTarget = "17"
|
|
||||||
}
|
|
||||||
|
|
||||||
buildToolsVersion buildToolsVersion
|
|
||||||
|
|
||||||
buildFeatures {
|
|
||||||
viewBinding true
|
|
||||||
compose true
|
|
||||||
}
|
|
||||||
composeOptions {
|
|
||||||
kotlinCompilerExtensionVersion '1.5.8'
|
|
||||||
}
|
|
||||||
namespace 'fr.free.nrw.commons'
|
|
||||||
lint {
|
|
||||||
abortOnError false
|
|
||||||
disable 'MissingTranslation', 'ExtraTranslation'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
String getTestUserName() {
|
|
||||||
def propFile = rootProject.file("./local.properties")
|
|
||||||
def properties = new Properties()
|
|
||||||
properties.load(new FileInputStream(propFile))
|
|
||||||
return properties['TEST_USER_NAME']
|
|
||||||
}
|
|
||||||
|
|
||||||
String getTestPassword() {
|
|
||||||
def propFile = rootProject.file("./local.properties")
|
|
||||||
def properties = new Properties()
|
|
||||||
properties.load(new FileInputStream(propFile))
|
|
||||||
return properties['TEST_USER_PASSWORD']
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isRunningOnTravisAndIsNotPRBuild) {
|
|
||||||
play {
|
|
||||||
track = "alpha"
|
|
||||||
userFraction = 1
|
|
||||||
serviceAccountEmail = System.getenv("SERVICE_ACCOUNT_NAME")
|
|
||||||
serviceAccountCredentials = file("../play.p12")
|
|
||||||
|
|
||||||
resolutionStrategy = "auto"
|
|
||||||
outputProcessor { // this: ApkVariantOutput
|
|
||||||
versionNameOverride = "$versionNameOverride.$versionCode"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
445
app/build.gradle.kts
Normal file
445
app/build.gradle.kts
Normal file
|
|
@ -0,0 +1,445 @@
|
||||||
|
import java.util.Properties
|
||||||
|
import java.io.ByteArrayOutputStream
|
||||||
|
|
||||||
|
plugins {
|
||||||
|
alias(libs.plugins.android.application)
|
||||||
|
alias(libs.plugins.jetbrains.kotlin.android)
|
||||||
|
alias(libs.plugins.kotlin.kapt)
|
||||||
|
alias(libs.plugins.kotlin.parcelize)
|
||||||
|
}
|
||||||
|
|
||||||
|
apply(from = "$rootDir/jacoco.gradle")
|
||||||
|
|
||||||
|
val isRunningOnTravisAndIsNotPRBuild = System.getenv("CI") == "true" && file("../play.p12").exists()
|
||||||
|
|
||||||
|
if (isRunningOnTravisAndIsNotPRBuild) {
|
||||||
|
apply(plugin = "com.github.triplet.play")
|
||||||
|
}
|
||||||
|
|
||||||
|
android {
|
||||||
|
namespace = "fr.free.nrw.commons"
|
||||||
|
compileSdk = 34
|
||||||
|
|
||||||
|
defaultConfig {
|
||||||
|
applicationId = "fr.free.nrw.commons"
|
||||||
|
minSdk = 21
|
||||||
|
targetSdk = 34
|
||||||
|
versionCode = 1043
|
||||||
|
versionName = "5.1.2"
|
||||||
|
|
||||||
|
setProperty("archivesBaseName", "app-commons-v$versionName-" + getBranchName())
|
||||||
|
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
||||||
|
testInstrumentationRunnerArguments["clearPackageData"] = "true"
|
||||||
|
|
||||||
|
multiDexEnabled = true
|
||||||
|
|
||||||
|
vectorDrawables {
|
||||||
|
useSupportLibrary = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sourceSets {
|
||||||
|
getByName("test") {
|
||||||
|
// Use kotlin only in tests (for now)
|
||||||
|
java.srcDirs("src/test/kotlin")
|
||||||
|
|
||||||
|
// Use main assets and resources in test
|
||||||
|
assets.srcDirs("src/main/assets")
|
||||||
|
resources.srcDirs("src/main/resources")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
signingConfigs {
|
||||||
|
create("release") {
|
||||||
|
// Configure keystore based on env vars in Travis for automated alpha builds
|
||||||
|
if(isRunningOnTravisAndIsNotPRBuild) {
|
||||||
|
storeFile = file("../nr-commons.keystore")
|
||||||
|
storePassword = System.getenv("keystore_password")
|
||||||
|
keyAlias = System.getenv("key_alias")
|
||||||
|
keyPassword = System.getenv("key_password")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
buildTypes {
|
||||||
|
release {
|
||||||
|
isMinifyEnabled = true
|
||||||
|
proguardFiles(getDefaultProguardFile("proguard-android.txt"), "proguard-rules.txt")
|
||||||
|
testProguardFile("test-proguard-rules.txt")
|
||||||
|
|
||||||
|
signingConfig = signingConfigs.getByName("debug")
|
||||||
|
if (isRunningOnTravisAndIsNotPRBuild) {
|
||||||
|
signingConfig = signingConfigs.getByName("release")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
debug {
|
||||||
|
isMinifyEnabled = false
|
||||||
|
proguardFiles(getDefaultProguardFile("proguard-android.txt"), "proguard-rules.txt")
|
||||||
|
testProguardFile("test-proguard-rules.txt")
|
||||||
|
|
||||||
|
versionNameSuffix = "-debug-" + getBranchName()
|
||||||
|
enableUnitTestCoverage = true
|
||||||
|
enableAndroidTestCoverage = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
configurations.all {
|
||||||
|
resolutionStrategy {
|
||||||
|
force("androidx.annotation:annotation:1.1.0")
|
||||||
|
force("com.jakewharton.timber:timber:4.7.1")
|
||||||
|
force("androidx.fragment:fragment:1.3.6")
|
||||||
|
}
|
||||||
|
exclude(module = "okhttp-ws")
|
||||||
|
}
|
||||||
|
|
||||||
|
flavorDimensions += "tier"
|
||||||
|
productFlavors {
|
||||||
|
create("prod") {
|
||||||
|
dimension = "tier"
|
||||||
|
applicationId = "fr.free.nrw.commons"
|
||||||
|
|
||||||
|
buildConfigField("String", "WIKIMEDIA_API_POTD", "\"https://commons.wikimedia.org/w/api.php?action=featuredfeed&feed=potd&feedformat=rss&language=en\"")
|
||||||
|
buildConfigField("String", "WIKIMEDIA_API_HOST", "\"https://commons.wikimedia.org/w/api.php\"")
|
||||||
|
buildConfigField("String", "WIKIDATA_API_HOST", "\"https://www.wikidata.org/w/api.php\"")
|
||||||
|
buildConfigField("String", "WIKIDATA_URL", "\"https://www.wikidata.org\"")
|
||||||
|
buildConfigField("String", "WIKIMEDIA_FORGE_API_HOST", "\"https://tools.wmflabs.org/\"")
|
||||||
|
buildConfigField("String", "WIKIMEDIA_CAMPAIGNS_URL", "\"https://raw.githubusercontent.com/commons-app/campaigns/master/campaigns.json\"")
|
||||||
|
buildConfigField("String", "IMAGE_URL_BASE", "\"https://upload.wikimedia.org/wikipedia/commons\"")
|
||||||
|
buildConfigField("String", "HOME_URL", "\"https://commons.wikimedia.org/wiki/\"")
|
||||||
|
buildConfigField("String", "COMMONS_URL", "\"https://commons.wikimedia.org\"")
|
||||||
|
buildConfigField("String", "WIKIDATA_URL", "\"https://www.wikidata.org\"")
|
||||||
|
buildConfigField("String", "MOBILE_HOME_URL", "\"https://commons.m.wikimedia.org/wiki/\"")
|
||||||
|
buildConfigField("String", "MOBILE_META_URL", "\"https://meta.m.wikimedia.org/wiki/\"")
|
||||||
|
buildConfigField("String", "SIGNUP_LANDING_URL", "\"https://commons.m.wikimedia.org/w/index.php?title=Special:CreateAccount&returnto=Main+Page&returntoquery=welcome%3Dyes\"")
|
||||||
|
buildConfigField("String", "SIGNUP_SUCCESS_REDIRECTION_URL", "\"https://commons.m.wikimedia.org/w/index.php?title=Main_Page&welcome=yes\"")
|
||||||
|
buildConfigField("String", "FORGOT_PASSWORD_URL", "\"https://commons.wikimedia.org/wiki/Special:PasswordReset\"")
|
||||||
|
buildConfigField("String", "PRIVACY_POLICY_URL", "\"https://github.com/commons-app/commons-app-documentation/blob/master/android/Privacy-policy.md\"")
|
||||||
|
buildConfigField("String", "FILE_USAGES_BASE_URL", "\"https://commons.wikimedia.org/w/api.php?action=query&format=json&formatversion=2\"")
|
||||||
|
buildConfigField("String", "ACCOUNT_TYPE", "\"fr.free.nrw.commons\"")
|
||||||
|
buildConfigField("String", "CONTRIBUTION_AUTHORITY", "\"fr.free.nrw.commons.contributions.contentprovider\"")
|
||||||
|
buildConfigField("String", "MODIFICATION_AUTHORITY", "\"fr.free.nrw.commons.modifications.contentprovider\"")
|
||||||
|
buildConfigField("String", "CATEGORY_AUTHORITY", "\"fr.free.nrw.commons.categories.contentprovider\"")
|
||||||
|
buildConfigField("String", "RECENT_SEARCH_AUTHORITY", "\"fr.free.nrw.commons.explore.recentsearches.contentprovider\"")
|
||||||
|
buildConfigField("String", "RECENT_LANGUAGE_AUTHORITY", "\"fr.free.nrw.commons.recentlanguages.contentprovider\"")
|
||||||
|
buildConfigField("String", "BOOKMARK_AUTHORITY", "\"fr.free.nrw.commons.bookmarks.contentprovider\"")
|
||||||
|
buildConfigField("String", "BOOKMARK_LOCATIONS_AUTHORITY", "\"fr.free.nrw.commons.bookmarks.locations.contentprovider\"")
|
||||||
|
buildConfigField("String", "BOOKMARK_ITEMS_AUTHORITY", "\"fr.free.nrw.commons.bookmarks.items.contentprovider\"")
|
||||||
|
buildConfigField("String", "COMMIT_SHA", "\"" + getBuildVersion().toString() + "\"")
|
||||||
|
buildConfigField("String", "TEST_USERNAME", "\"" + getTestUserName() + "\"")
|
||||||
|
buildConfigField("String", "TEST_PASSWORD", "\"" + getTestPassword() + "\"")
|
||||||
|
buildConfigField("String", "DEPICTS_PROPERTY", "\"P180\"")
|
||||||
|
buildConfigField("String", "CREATOR_PROPERTY", "\"P170\"")
|
||||||
|
}
|
||||||
|
|
||||||
|
create("beta") {
|
||||||
|
dimension = "tier"
|
||||||
|
applicationId = "fr.free.nrw.commons.beta"
|
||||||
|
|
||||||
|
// What values do we need to hit the BETA versions of the site / api ?
|
||||||
|
buildConfigField("String", "WIKIMEDIA_API_POTD", "\"https://commons.wikimedia.org/w/api.php?action=featuredfeed&feed=potd&feedformat=rss&language=en\"")
|
||||||
|
buildConfigField("String", "WIKIMEDIA_API_HOST", "\"https://commons.wikimedia.beta.wmflabs.org/w/api.php\"")
|
||||||
|
buildConfigField("String", "WIKIDATA_API_HOST", "\"https://www.wikidata.org/w/api.php\"")
|
||||||
|
buildConfigField("String", "WIKIDATA_URL", "\"https://www.wikidata.org\"")
|
||||||
|
buildConfigField("String", "WIKIMEDIA_FORGE_API_HOST", "\"https://tools.wmflabs.org/\"")
|
||||||
|
buildConfigField("String", "WIKIMEDIA_CAMPAIGNS_URL", "\"https://raw.githubusercontent.com/commons-app/campaigns/master/campaigns_beta_active.json\"")
|
||||||
|
buildConfigField("String", "IMAGE_URL_BASE", "\"https://upload.beta.wmflabs.org/wikipedia/commons\"")
|
||||||
|
buildConfigField("String", "HOME_URL", "\"https://commons.wikimedia.beta.wmflabs.org/wiki/\"")
|
||||||
|
buildConfigField("String", "COMMONS_URL", "\"https://commons.wikimedia.beta.wmflabs.org\"")
|
||||||
|
buildConfigField("String", "WIKIDATA_URL", "\"https://www.wikidata.org\"")
|
||||||
|
buildConfigField("String", "MOBILE_HOME_URL", "\"https://commons.m.wikimedia.beta.wmflabs.org/wiki/\"")
|
||||||
|
buildConfigField("String", "MOBILE_META_URL", "\"https://meta.m.wikimedia.beta.wmflabs.org/wiki/\"")
|
||||||
|
buildConfigField("String", "SIGNUP_LANDING_URL", "\"https://commons.m.wikimedia.beta.wmflabs.org/w/index.php?title=Special:CreateAccount&returnto=Main+Page&returntoquery=welcome%3Dyes\"")
|
||||||
|
buildConfigField("String", "SIGNUP_SUCCESS_REDIRECTION_URL", "\"https://commons.m.wikimedia.beta.wmflabs.org/w/index.php?title=Main_Page&welcome=yes\"")
|
||||||
|
buildConfigField("String", "FORGOT_PASSWORD_URL", "\"https://commons.wikimedia.beta.wmflabs.org/wiki/Special:PasswordReset\"")
|
||||||
|
buildConfigField("String", "PRIVACY_POLICY_URL", "\"https://github.com/commons-app/commons-app-documentation/blob/master/android/Privacy-policy.md\"")
|
||||||
|
buildConfigField("String", "FILE_USAGES_BASE_URL", "\"https://commons.wikimedia.org/w/api.php?action=query&format=json&formatversion=2\"")
|
||||||
|
buildConfigField("String", "ACCOUNT_TYPE", "\"fr.free.nrw.commons.beta\"")
|
||||||
|
buildConfigField("String", "CONTRIBUTION_AUTHORITY", "\"fr.free.nrw.commons.beta.contributions.contentprovider\"")
|
||||||
|
buildConfigField("String", "MODIFICATION_AUTHORITY", "\"fr.free.nrw.commons.beta.modifications.contentprovider\"")
|
||||||
|
buildConfigField("String", "CATEGORY_AUTHORITY", "\"fr.free.nrw.commons.beta.categories.contentprovider\"")
|
||||||
|
buildConfigField("String", "RECENT_SEARCH_AUTHORITY", "\"fr.free.nrw.commons.beta.explore.recentsearches.contentprovider\"")
|
||||||
|
buildConfigField("String", "RECENT_LANGUAGE_AUTHORITY", "\"fr.free.nrw.commons.beta.recentlanguages.contentprovider\"")
|
||||||
|
buildConfigField("String", "BOOKMARK_AUTHORITY", "\"fr.free.nrw.commons.beta.bookmarks.contentprovider\"")
|
||||||
|
buildConfigField("String", "BOOKMARK_LOCATIONS_AUTHORITY", "\"fr.free.nrw.commons.beta.bookmarks.locations.contentprovider\"")
|
||||||
|
buildConfigField("String", "BOOKMARK_ITEMS_AUTHORITY", "\"fr.free.nrw.commons.beta.bookmarks.items.contentprovider\"")
|
||||||
|
buildConfigField("String", "COMMIT_SHA", "\"" + getBuildVersion().toString() + "\"")
|
||||||
|
buildConfigField("String", "TEST_USERNAME", "\"" + getTestUserName() + "\"")
|
||||||
|
buildConfigField("String", "TEST_PASSWORD", "\"" + getTestPassword() + "\"")
|
||||||
|
buildConfigField("String", "DEPICTS_PROPERTY", "\"P245962\"")
|
||||||
|
buildConfigField("String", "CREATOR_PROPERTY", "\"P253075\"")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
compileOptions {
|
||||||
|
sourceCompatibility = JavaVersion.VERSION_17
|
||||||
|
targetCompatibility = JavaVersion.VERSION_17
|
||||||
|
}
|
||||||
|
kotlinOptions {
|
||||||
|
jvmTarget = "17"
|
||||||
|
}
|
||||||
|
buildFeatures {
|
||||||
|
buildConfig = true
|
||||||
|
viewBinding = true
|
||||||
|
compose = true
|
||||||
|
}
|
||||||
|
buildToolsVersion = buildToolsVersion
|
||||||
|
composeOptions {
|
||||||
|
kotlinCompilerExtensionVersion = "1.5.8"
|
||||||
|
}
|
||||||
|
packaging {
|
||||||
|
jniLibs {
|
||||||
|
excludes += listOf("META-INF/androidx.*")
|
||||||
|
}
|
||||||
|
resources {
|
||||||
|
excludes += listOf(
|
||||||
|
"META-INF/androidx.*",
|
||||||
|
"META-INF/proguard/androidx-annotations.pro",
|
||||||
|
"/META-INF/LICENSE.md",
|
||||||
|
"/META-INF/LICENSE-notice.md"
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
testOptions {
|
||||||
|
animationsDisabled = true
|
||||||
|
unitTests {
|
||||||
|
isReturnDefaultValues = true
|
||||||
|
isIncludeAndroidResources = true
|
||||||
|
}
|
||||||
|
unitTests.all {
|
||||||
|
it.jvmArgs("-noverify")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
lint {
|
||||||
|
abortOnError = false
|
||||||
|
disable += listOf("MissingTranslation", "ExtraTranslation")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
// Utils
|
||||||
|
implementation(libs.gson)
|
||||||
|
implementation(libs.okhttp)
|
||||||
|
implementation(libs.retrofit)
|
||||||
|
implementation(libs.retrofit.converter.gson)
|
||||||
|
implementation(libs.retrofit.adapter.rxjava)
|
||||||
|
implementation(libs.rxandroid)
|
||||||
|
implementation(libs.rxjava)
|
||||||
|
implementation(libs.rxbinding)
|
||||||
|
implementation(libs.rxbinding.appcompat)
|
||||||
|
implementation(libs.facebook.fresco)
|
||||||
|
implementation(libs.apache.commons.lang3)
|
||||||
|
|
||||||
|
// UI
|
||||||
|
implementation("${libs.viewpagerindicator.library.get()}@aar")
|
||||||
|
implementation(libs.photoview)
|
||||||
|
implementation(libs.android.sdk)
|
||||||
|
implementation(libs.android.plugin.scalebar)
|
||||||
|
|
||||||
|
implementation(libs.timber)
|
||||||
|
implementation(libs.android.material)
|
||||||
|
implementation(libs.dexter)
|
||||||
|
|
||||||
|
// Jetpack Compose
|
||||||
|
implementation(libs.androidx.core.ktx)
|
||||||
|
implementation(libs.androidx.lifecycle.runtime.ktx)
|
||||||
|
implementation(libs.androidx.activity.compose)
|
||||||
|
implementation(platform(libs.androidx.compose.bom))
|
||||||
|
implementation(libs.androidx.compose.runtime)
|
||||||
|
implementation(libs.androidx.ui)
|
||||||
|
implementation(libs.androidx.ui.graphics)
|
||||||
|
implementation(libs.androidx.ui.tooling.preview)
|
||||||
|
implementation(libs.androidx.ui.viewbinding)
|
||||||
|
implementation(libs.androidx.material3)
|
||||||
|
implementation(libs.androidx.foundation)
|
||||||
|
implementation(libs.androidx.foundation.layout)
|
||||||
|
androidTestImplementation(platform(libs.androidx.compose.bom))
|
||||||
|
androidTestImplementation(libs.androidx.ui.test.junit4)
|
||||||
|
debugImplementation(libs.androidx.ui.tooling)
|
||||||
|
debugImplementation(libs.androidx.ui.test.manifest)
|
||||||
|
|
||||||
|
implementation(libs.adapterdelegates4.kotlin.dsl.viewbinding)
|
||||||
|
implementation(libs.adapterdelegates4.pagination)
|
||||||
|
implementation(libs.androidx.paging.runtime.ktx)
|
||||||
|
testImplementation(libs.androidx.paging.common.ktx)
|
||||||
|
implementation(libs.androidx.paging.rxjava2.ktx)
|
||||||
|
implementation(libs.androidx.recyclerview)
|
||||||
|
|
||||||
|
// Logging
|
||||||
|
implementation(libs.acra.dialog)
|
||||||
|
implementation(libs.acra.mail)
|
||||||
|
implementation(libs.slf4j.api)
|
||||||
|
implementation(libs.logback.android.classic) {
|
||||||
|
exclude(group = "com.google.android", module = "android")
|
||||||
|
}
|
||||||
|
implementation(libs.logging.interceptor)
|
||||||
|
|
||||||
|
// Dependency injector
|
||||||
|
implementation(libs.dagger.android)
|
||||||
|
implementation(libs.dagger.android.support)
|
||||||
|
kapt(libs.dagger.android.processor)
|
||||||
|
kapt(libs.dagger.compiler)
|
||||||
|
annotationProcessor(libs.dagger.android.processor)
|
||||||
|
|
||||||
|
implementation(libs.kotlin.reflect)
|
||||||
|
|
||||||
|
//Mocking
|
||||||
|
testImplementation(libs.mockito.kotlin)
|
||||||
|
testImplementation(libs.mockito.core)
|
||||||
|
testImplementation(libs.powermock.module.junit)
|
||||||
|
testImplementation(libs.powermock.api.mockito)
|
||||||
|
testImplementation(libs.mockk)
|
||||||
|
|
||||||
|
// Unit testing
|
||||||
|
testImplementation(libs.junit)
|
||||||
|
testImplementation(libs.robolectric)
|
||||||
|
testImplementation(libs.androidx.test.core)
|
||||||
|
testImplementation(libs.androidx.runner)
|
||||||
|
testImplementation(libs.androidx.test.ext.junit)
|
||||||
|
testImplementation(libs.androidx.test.rules)
|
||||||
|
testImplementation(libs.mockwebserver)
|
||||||
|
testImplementation(libs.livedata.testing.ktx)
|
||||||
|
testImplementation(libs.androidx.core.testing)
|
||||||
|
testImplementation(libs.junit.jupiter.api)
|
||||||
|
testRuntimeOnly(libs.junit.jupiter.engine)
|
||||||
|
testImplementation(libs.soloader)
|
||||||
|
testImplementation(libs.kotlinx.coroutines.test)
|
||||||
|
debugImplementation(libs.androidx.fragment.testing)
|
||||||
|
testImplementation(libs.commons.io)
|
||||||
|
|
||||||
|
// Android testing
|
||||||
|
androidTestImplementation(libs.androidx.espresso.core)
|
||||||
|
androidTestImplementation(libs.androidx.espresso.intents)
|
||||||
|
androidTestImplementation(libs.androidx.espresso.contrib)
|
||||||
|
androidTestImplementation(libs.androidx.runner)
|
||||||
|
androidTestImplementation(libs.androidx.test.rules)
|
||||||
|
androidTestImplementation(libs.androidx.test.core)
|
||||||
|
androidTestImplementation(libs.androidx.test.ext.junit)
|
||||||
|
androidTestImplementation(libs.androidx.annotation)
|
||||||
|
androidTestImplementation(libs.mockwebserver)
|
||||||
|
androidTestImplementation(libs.androidx.uiautomator)
|
||||||
|
|
||||||
|
// Debugging
|
||||||
|
debugImplementation(libs.leakcanary.android)
|
||||||
|
|
||||||
|
// Support libraries
|
||||||
|
implementation(libs.androidx.browser)
|
||||||
|
implementation(libs.androidx.cardview)
|
||||||
|
implementation(libs.androidx.constraintlayout)
|
||||||
|
implementation(libs.androidx.exifinterface)
|
||||||
|
implementation(libs.recyclerview.fastscroll)
|
||||||
|
|
||||||
|
//swipe_layout
|
||||||
|
implementation(libs.swipelayout.library)
|
||||||
|
|
||||||
|
//Room
|
||||||
|
implementation(libs.androidx.room.runtime)
|
||||||
|
implementation(libs.androidx.room.ktx)
|
||||||
|
implementation(libs.androidx.room.rxjava)
|
||||||
|
kapt(libs.androidx.room.compiler)
|
||||||
|
|
||||||
|
// Preferences
|
||||||
|
implementation(libs.androidx.preference)
|
||||||
|
implementation(libs.androidx.preference.ktx)
|
||||||
|
|
||||||
|
//Android Media
|
||||||
|
implementation(libs.juanitobananas.androidDmediaUtil)
|
||||||
|
implementation(libs.androidx.multidex)
|
||||||
|
|
||||||
|
// Kotlin + coroutines
|
||||||
|
implementation(libs.androidx.work.runtime.ktx)
|
||||||
|
implementation(libs.androidx.work.runtime)
|
||||||
|
testImplementation(libs.androidx.work.testing)
|
||||||
|
|
||||||
|
//Glide
|
||||||
|
implementation(libs.glide)
|
||||||
|
annotationProcessor(libs.glide.compiler)
|
||||||
|
kaptTest(libs.androidx.databinding.compiler)
|
||||||
|
kaptAndroidTest(libs.androidx.databinding.compiler)
|
||||||
|
|
||||||
|
implementation(libs.coordinates2country.android) {
|
||||||
|
exclude(group = "com.google.android", module = "android")
|
||||||
|
}
|
||||||
|
|
||||||
|
//OSMDroid
|
||||||
|
implementation(libs.osmdroid.android)
|
||||||
|
constraints {
|
||||||
|
implementation(libs.kotlin.stdlib.jdk7) {
|
||||||
|
because("kotlin-stdlib-jdk7 is now a part of kotlin-stdlib")
|
||||||
|
}
|
||||||
|
implementation(libs.kotlin.stdlib.jdk8) {
|
||||||
|
because("kotlin-stdlib-jdk8 is now a part of kotlin-stdlib")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
tasks.register<Exec>("disableAnimations") {
|
||||||
|
val adb = "${System.getenv("ANDROID_HOME")}/platform-tools/adb"
|
||||||
|
commandLine(adb, "shell", "settings", "put", "global", "window_animation_scale", "0")
|
||||||
|
commandLine(adb, "shell", "settings", "put", "global", "transition_animation_scale", "0")
|
||||||
|
commandLine(adb, "shell", "settings", "put", "global", "animator_duration_scale", "0")
|
||||||
|
}
|
||||||
|
|
||||||
|
project.gradle.taskGraph.whenReady {
|
||||||
|
val connectedBetaDebugAndroidTest = tasks.named("connectedBetaDebugAndroidTest")
|
||||||
|
val connectedProdDebugAndroidTest = tasks.named("connectedProdDebugAndroidTest")
|
||||||
|
|
||||||
|
connectedBetaDebugAndroidTest.configure {
|
||||||
|
dependsOn("disableAnimations")
|
||||||
|
}
|
||||||
|
connectedProdDebugAndroidTest.configure {
|
||||||
|
dependsOn("disableAnimations")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun getTestUserName(): String? {
|
||||||
|
val propFile = rootProject.file("./local.properties")
|
||||||
|
val properties = Properties()
|
||||||
|
propFile.inputStream().use { properties.load(it) }
|
||||||
|
return properties.getProperty("TEST_USER_NAME")
|
||||||
|
}
|
||||||
|
|
||||||
|
fun getTestPassword(): String? {
|
||||||
|
val propFile = rootProject.file("./local.properties")
|
||||||
|
val properties = Properties()
|
||||||
|
propFile.inputStream().use { properties.load(it) }
|
||||||
|
return properties.getProperty("TEST_USER_PASSWORD")
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isRunningOnTravisAndIsNotPRBuild) {
|
||||||
|
configure<com.github.triplet.gradle.play.PlayPublisherExtension> {
|
||||||
|
track = "alpha"
|
||||||
|
userFraction = 1.0
|
||||||
|
serviceAccountEmail = System.getenv("SERVICE_ACCOUNT_NAME")
|
||||||
|
serviceAccountCredentials = file("../play.p12")
|
||||||
|
|
||||||
|
resolutionStrategy = "auto"
|
||||||
|
outputProcessor { // this: ApkVariantOutput
|
||||||
|
versionNameOverride = "$versionNameOverride.$versionCode"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun getBuildVersion(): String? {
|
||||||
|
return try {
|
||||||
|
val stdout = ByteArrayOutputStream()
|
||||||
|
exec {
|
||||||
|
commandLine("git", "rev-parse", "--short", "HEAD")
|
||||||
|
standardOutput = stdout
|
||||||
|
}
|
||||||
|
stdout.toString().trim()
|
||||||
|
} catch (e: Exception) {
|
||||||
|
null
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun getBranchName(): String? {
|
||||||
|
return try {
|
||||||
|
val stdout = ByteArrayOutputStream()
|
||||||
|
exec {
|
||||||
|
commandLine("git", "rev-parse", "--abbrev-ref", "HEAD")
|
||||||
|
standardOutput = stdout
|
||||||
|
}
|
||||||
|
stdout.toString().trim()
|
||||||
|
} catch (e: Exception) {
|
||||||
|
null
|
||||||
|
}
|
||||||
|
}
|
||||||
29
build.gradle
29
build.gradle
|
|
@ -1,29 +0,0 @@
|
||||||
// Top-level build file where you can add configuration options common to all sub-projects/modules.
|
|
||||||
buildscript {
|
|
||||||
repositories {
|
|
||||||
google()
|
|
||||||
mavenCentral()
|
|
||||||
maven { url "https://plugins.gradle.org/m2/" }
|
|
||||||
}
|
|
||||||
dependencies {
|
|
||||||
classpath 'com.android.tools.build:gradle:8.7.0'
|
|
||||||
classpath 'com.getkeepsafe.dexcount:dexcount-gradle-plugin:0.8.2'
|
|
||||||
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$KOTLIN_VERSION"
|
|
||||||
classpath 'org.codehaus.groovy:groovy-all:2.4.15'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
allprojects {
|
|
||||||
repositories {
|
|
||||||
google()
|
|
||||||
mavenCentral()
|
|
||||||
gradlePluginPortal() // potential jcenter() replacement
|
|
||||||
maven { url "https://jitpack.io" }
|
|
||||||
maven { url "https://maven.google.com" }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
subprojects{
|
|
||||||
tasks.withType(Test).configureEach{
|
|
||||||
jvmArgs = jvmArgs + ['--add-opens=java.base/java.lang=ALL-UNNAMED']
|
|
||||||
}
|
|
||||||
}
|
|
||||||
13
build.gradle.kts
Normal file
13
build.gradle.kts
Normal file
|
|
@ -0,0 +1,13 @@
|
||||||
|
// Top-level build file where you can add configuration options common to all sub-projects/modules.
|
||||||
|
plugins {
|
||||||
|
alias(libs.plugins.android.application) apply false
|
||||||
|
alias(libs.plugins.jetbrains.kotlin.android) apply false
|
||||||
|
alias(libs.plugins.github.triplet.play) apply false
|
||||||
|
alias(libs.plugins.getkeepsafe.dexcount)
|
||||||
|
}
|
||||||
|
|
||||||
|
subprojects{
|
||||||
|
tasks.withType<Test>().configureEach {
|
||||||
|
jvmArgs = (jvmArgs ?: emptyList()) + listOf("--add-opens=java.base/java.lang=ALL-UNNAMED")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,26 +0,0 @@
|
||||||
ext.getBuildVersion = { ->
|
|
||||||
// Short-term fix for #1157. Should ideally look into why method is failing.
|
|
||||||
try {
|
|
||||||
def stdout = new ByteArrayOutputStream()
|
|
||||||
exec {
|
|
||||||
commandLine 'git' , 'rev-parse' , '--short' , 'HEAD'
|
|
||||||
standardOutput = stdout
|
|
||||||
}
|
|
||||||
return stdout.toString().trim()
|
|
||||||
} catch (ignored) {
|
|
||||||
return null
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
ext.getBranchName = { ->
|
|
||||||
try {
|
|
||||||
def stdOut = new ByteArrayOutputStream()
|
|
||||||
exec {
|
|
||||||
commandLine 'git', 'rev-parse', '--abbrev-ref', 'HEAD'
|
|
||||||
standardOutput = stdOut
|
|
||||||
}
|
|
||||||
return stdOut.toString().trim()
|
|
||||||
} catch (ignored) {
|
|
||||||
return null
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -17,24 +17,10 @@ org.gradle.jvmargs=-Xmx1536M
|
||||||
org.gradle.caching=true
|
org.gradle.caching=true
|
||||||
android.enableR8.fullMode=false
|
android.enableR8.fullMode=false
|
||||||
|
|
||||||
KOTLIN_VERSION=1.9.22
|
|
||||||
LEAK_CANARY_VERSION=2.10
|
|
||||||
DAGGER_VERSION=2.23
|
|
||||||
ROOM_VERSION=2.6.1
|
|
||||||
PREFERENCE_VERSION=1.2.1
|
|
||||||
CORE_KTX_VERSION=1.9.0
|
|
||||||
ADAPTER_DELEGATES_VERSION=4.3.0
|
|
||||||
PAGING_VERSION=2.1.2
|
|
||||||
MULTIDEX_VERSION=2.0.1
|
|
||||||
OKHTTP_VERSION=4.10.0
|
|
||||||
MAPLIBRE_VERSION=10.0.1
|
|
||||||
OSMDROID_VERSION=6.1.17
|
|
||||||
|
|
||||||
#systemProp.http.proxyPort=0
|
#systemProp.http.proxyPort=0
|
||||||
#systemProp.http.proxyHost=
|
#systemProp.http.proxyHost=
|
||||||
android.useAndroidX=true
|
android.useAndroidX=true
|
||||||
android.enableJetifier=true
|
android.enableJetifier=true
|
||||||
android.jetifier.ignorelist=bcprov-jdk15on
|
android.jetifier.ignorelist=bcprov-jdk15on
|
||||||
android.defaults.buildfeatures.buildconfig=true
|
|
||||||
android.nonTransitiveRClass=false
|
android.nonTransitiveRClass=false
|
||||||
android.nonFinalResIds=false
|
android.nonFinalResIds=false
|
||||||
|
|
|
||||||
209
gradle/libs.versions.toml
Normal file
209
gradle/libs.versions.toml
Normal file
|
|
@ -0,0 +1,209 @@
|
||||||
|
[versions]
|
||||||
|
agp = "8.9.1"
|
||||||
|
acra = "5.8.4"
|
||||||
|
activityCompose = "1.9.3"
|
||||||
|
adapterdelegates = "4.3.0"
|
||||||
|
androidmediautil = "v1.0-1"
|
||||||
|
androidSdkVersion = "10.0.1"
|
||||||
|
androidPluginScalebar = "1.0.0"
|
||||||
|
androidxJunitVersion = "1.1.5"
|
||||||
|
annotation = "1.3.0"
|
||||||
|
browser = "1.3.0"
|
||||||
|
cardview = "1.0.0"
|
||||||
|
commonsIo = "2.6"
|
||||||
|
composeBom = "2024.11.00"
|
||||||
|
constraintlayout = "1.1.3"
|
||||||
|
coordinates2country = "1.8"
|
||||||
|
dexcount = "4.0.0"
|
||||||
|
githubTripletPlay = "2.7.2"
|
||||||
|
osmdroidAndroid = "6.1.17"
|
||||||
|
testCore = "1.4.0"
|
||||||
|
coreKtx = "1.9.0"
|
||||||
|
coreTesting = "2.2.0"
|
||||||
|
dagger = "2.23"
|
||||||
|
databindingCompiler = "8.0.2"
|
||||||
|
dexterVersion = "5.0.0"
|
||||||
|
espresso = "3.6.1"
|
||||||
|
exifinterface = "1.3.7"
|
||||||
|
fragmentTesting = "1.6.2"
|
||||||
|
frescoVersion = "1.13.0"
|
||||||
|
commonsLang3Version = "3.8.1"
|
||||||
|
glide = "4.12.0"
|
||||||
|
gson = "2.8.5"
|
||||||
|
junit = "4.13.2"
|
||||||
|
junitJupiter = "5.10.0"
|
||||||
|
kotlin = "1.9.22"
|
||||||
|
kotlinStdlib = "1.8.0"
|
||||||
|
coroutines = "1.7.3"
|
||||||
|
leakcanary = "2.10"
|
||||||
|
livedataTesting = "1.2.0"
|
||||||
|
swipelayout = "1.2.0"
|
||||||
|
viewpagerIndicator = "2.4.1.1"
|
||||||
|
lifecycleRuntimeKtx = "2.8.4"
|
||||||
|
loggingInterceptor = "4.10.0"
|
||||||
|
logbackAndroidClassic = "1.1.1-6"
|
||||||
|
material = "1.12.0"
|
||||||
|
mockitoCore = "5.6.0"
|
||||||
|
mockitoKotlin = "2.2.0"
|
||||||
|
mockk = "1.13.5"
|
||||||
|
mockwebserver = "4.10.0"
|
||||||
|
multidex = "2.0.1"
|
||||||
|
okHttp = "4.10.0"
|
||||||
|
paging = "2.1.2"
|
||||||
|
photoviewVersion = "2.0.0"
|
||||||
|
powermock = "2.0.9"
|
||||||
|
preference = "1.2.1"
|
||||||
|
recyclerview = "1.2.0-alpha02"
|
||||||
|
recyclerviewFastscroll = "2.0.1"
|
||||||
|
retrofit = "2.8.1"
|
||||||
|
robolectric = "4.11.1"
|
||||||
|
room = "2.6.1"
|
||||||
|
rules = "1.5.0"
|
||||||
|
runner = "1.5.2"
|
||||||
|
rxandroid = "2.1.0"
|
||||||
|
rxjava = "2.2.3"
|
||||||
|
rxbinding = "2.1.1"
|
||||||
|
rxbindingAppcompat = "3.0.0"
|
||||||
|
slf4jApi = "1.7.25"
|
||||||
|
soloader = "0.10.5"
|
||||||
|
timber = "4.7.1"
|
||||||
|
uiautomator = "2.2.0"
|
||||||
|
workManager = "2.8.1"
|
||||||
|
|
||||||
|
[libraries]
|
||||||
|
# AndroidX Core Dependencies
|
||||||
|
androidx-activity-compose = { group = "androidx.activity", name = "activity-compose", version.ref = "activityCompose" }
|
||||||
|
androidx-annotation = { module = "androidx.annotation:annotation", version.ref = "annotation" }
|
||||||
|
androidx-compose-bom = { group = "androidx.compose", name = "compose-bom", version.ref = "composeBom" }
|
||||||
|
androidx-compose-runtime = { group = "androidx.compose.runtime", name = "runtime" }
|
||||||
|
androidx-constraintlayout = { module = "androidx.constraintlayout:constraintlayout", version.ref = "constraintlayout" }
|
||||||
|
androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "coreKtx" }
|
||||||
|
androidx-test-core = { module = "androidx.test:core", version.ref = "testCore" }
|
||||||
|
androidx-databinding-compiler = { module = "androidx.databinding:databinding-compiler", version.ref = "databindingCompiler" }
|
||||||
|
androidx-exifinterface = { module = "androidx.exifinterface:exifinterface", version.ref = "exifinterface" }
|
||||||
|
androidx-foundation = { module = "androidx.compose.foundation:foundation" }
|
||||||
|
androidx-foundation-layout = { module = "androidx.compose.foundation:foundation-layout" }
|
||||||
|
androidx-lifecycle-runtime-ktx = { group = "androidx.lifecycle", name = "lifecycle-runtime-ktx", version.ref = "lifecycleRuntimeKtx" }
|
||||||
|
androidx-material3 = { group = "androidx.compose.material3", name = "material3" }
|
||||||
|
androidx-runner = { module = "androidx.test:runner", version.ref = "runner" }
|
||||||
|
androidx-test-ext-junit = { module = "androidx.test.ext:junit", version.ref = "androidxJunitVersion" }
|
||||||
|
androidx-test-rules = { module = "androidx.test:rules", version.ref = "rules" }
|
||||||
|
androidx-ui = { group = "androidx.compose.ui", name = "ui" }
|
||||||
|
androidx-ui-graphics = { group = "androidx.compose.ui", name = "ui-graphics" }
|
||||||
|
androidx-ui-tooling = { group = "androidx.compose.ui", name = "ui-tooling" }
|
||||||
|
androidx-ui-tooling-preview = { group = "androidx.compose.ui", name = "ui-tooling-preview" }
|
||||||
|
androidx-ui-test-manifest = { group = "androidx.compose.ui", name = "ui-test-manifest" }
|
||||||
|
androidx-ui-test-junit4 = { group = "androidx.compose.ui", name = "ui-test-junit4" }
|
||||||
|
androidx-ui-viewbinding = { group = "androidx.compose.ui", name = "ui-viewbinding" }
|
||||||
|
|
||||||
|
# AndroidX Room
|
||||||
|
androidx-room-compiler = { module = "androidx.room:room-compiler", version.ref = "room" }
|
||||||
|
androidx-room-rxjava = { module = "androidx.room:room-rxjava2", version.ref = "room" }
|
||||||
|
androidx-room-ktx = { module = "androidx.room:room-ktx", version.ref = "room" }
|
||||||
|
androidx-room-runtime = { module = "androidx.room:room-runtime", version.ref = "room" }
|
||||||
|
|
||||||
|
# AndroidX Preferences
|
||||||
|
androidx-preference = { module = "androidx.preference:preference", version.ref = "preference" }
|
||||||
|
androidx-preference-ktx = { module = "androidx.preference:preference-ktx", version.ref = "preference" }
|
||||||
|
|
||||||
|
# AndroidX Paging
|
||||||
|
androidx-recyclerview = { module = "androidx.recyclerview:recyclerview", version.ref = "recyclerview" }
|
||||||
|
androidx-paging-common-ktx = { module = "androidx.paging:paging-common-ktx", version.ref = "paging" }
|
||||||
|
androidx-paging-runtime-ktx = { module = "androidx.paging:paging-runtime-ktx", version.ref = "paging" }
|
||||||
|
androidx-paging-rxjava2-ktx = { module = "androidx.paging:paging-rxjava2-ktx", version.ref = "paging" }
|
||||||
|
|
||||||
|
# AndroidX Work Manager
|
||||||
|
androidx-work-testing = { module = "androidx.work:work-testing", version.ref = "workManager" }
|
||||||
|
androidx-work-runtime = { module = "androidx.work:work-runtime", version.ref = "workManager" }
|
||||||
|
androidx-work-runtime-ktx = { module = "androidx.work:work-runtime-ktx", version.ref = "workManager" }
|
||||||
|
|
||||||
|
# Dependency injection (DI)
|
||||||
|
dagger-android-processor = { module = "com.google.dagger:dagger-android-processor", version.ref = "dagger" }
|
||||||
|
dagger-android-support = { module = "com.google.dagger:dagger-android-support", version.ref = "dagger" }
|
||||||
|
dagger-android = { module = "com.google.dagger:dagger-android", version.ref = "dagger" }
|
||||||
|
dagger-compiler = { module = "com.google.dagger:dagger-compiler", version.ref = "dagger" }
|
||||||
|
|
||||||
|
# Image loading
|
||||||
|
facebook-fresco = { module = "com.facebook.fresco:fresco", version.ref = "frescoVersion" }
|
||||||
|
glide-compiler = { module = "com.github.bumptech.glide:compiler", version.ref = "glide" }
|
||||||
|
glide = { module = "com.github.bumptech.glide:glide", version.ref = "glide" }
|
||||||
|
photoview = { module = "com.github.chrisbanes:PhotoView", version.ref = "photoviewVersion" }
|
||||||
|
|
||||||
|
# RxJava and Reactive Programming
|
||||||
|
rxandroid = { module = "io.reactivex.rxjava2:rxandroid", version.ref = "rxandroid" }
|
||||||
|
rxjava = { module = "io.reactivex.rxjava2:rxjava", version.ref = "rxjava" }
|
||||||
|
rxbinding = { module = "com.jakewharton.rxbinding2:rxbinding", version.ref = "rxbinding" }
|
||||||
|
rxbinding-appcompat = { module = "com.jakewharton.rxbinding3:rxbinding-appcompat", version.ref = "rxbindingAppcompat" }
|
||||||
|
|
||||||
|
# Testing
|
||||||
|
androidx-core-testing = { module = "androidx.arch.core:core-testing", version.ref = "coreTesting" }
|
||||||
|
androidx-espresso-contrib = { module = "androidx.test.espresso:espresso-contrib", version.ref = "espresso" }
|
||||||
|
androidx-espresso-intents = { module = "androidx.test.espresso:espresso-intents", version.ref = "espresso" }
|
||||||
|
androidx-espresso-core = { module = "androidx.test.espresso:espresso-core", version.ref = "espresso" }
|
||||||
|
androidx-fragment-testing = { module = "androidx.fragment:fragment-testing", version.ref = "fragmentTesting" }
|
||||||
|
androidx-uiautomator = { module = "androidx.test.uiautomator:uiautomator", version.ref = "uiautomator" }
|
||||||
|
commons-io = { module = "commons-io:commons-io", version.ref = "commonsIo" }
|
||||||
|
junit = { module = "junit:junit", version.ref = "junit" }
|
||||||
|
junit-jupiter-engine = { module = "org.junit.jupiter:junit-jupiter-engine", version.ref = "junitJupiter" }
|
||||||
|
junit-jupiter-api = { module = "org.junit.jupiter:junit-jupiter-api", version.ref = "junitJupiter" }
|
||||||
|
kotlinx-coroutines-test = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-test", version.ref = "coroutines" }
|
||||||
|
livedata-testing-ktx = { module = "com.jraska.livedata:testing-ktx", version.ref = "livedataTesting" }
|
||||||
|
robolectric = { module = "org.robolectric:robolectric", version.ref = "robolectric" }
|
||||||
|
soloader = { module = "com.facebook.soloader:soloader", version.ref = "soloader" }
|
||||||
|
|
||||||
|
# Mocking
|
||||||
|
mockk = { module = "io.mockk:mockk", version.ref = "mockk" }
|
||||||
|
mockwebserver = { module = "com.squareup.okhttp3:mockwebserver", version.ref = "mockwebserver" }
|
||||||
|
mockito-core = { module = "org.mockito:mockito-core", version.ref = "mockitoCore" }
|
||||||
|
mockito-kotlin = { module = "com.nhaarman.mockitokotlin2:mockito-kotlin", version.ref = "mockitoKotlin" }
|
||||||
|
powermock-api-mockito = { module = "org.powermock:powermock-api-mockito2", version.ref = "powermock" }
|
||||||
|
powermock-module-junit = { module = "org.powermock:powermock-module-junit4", version.ref = "powermock" }
|
||||||
|
|
||||||
|
# UI components & layouts
|
||||||
|
androidx-cardview = { module = "androidx.cardview:cardview", version.ref = "cardview" }
|
||||||
|
android-material = { group = "com.google.android.material", name = "material", version.ref = "material" }
|
||||||
|
adapterdelegates4-kotlin-dsl-viewbinding = { module = "com.hannesdorfmann:adapterdelegates4-kotlin-dsl-viewbinding", version.ref = "adapterdelegates" }
|
||||||
|
adapterdelegates4-pagination = { module = "com.hannesdorfmann:adapterdelegates4-pagination", version.ref = "adapterdelegates" }
|
||||||
|
dexter = { module = "com.karumi:dexter", version.ref = "dexterVersion" }
|
||||||
|
recyclerview-fastscroll = { module = "com.simplecityapps:recyclerview-fastscroll", version.ref = "recyclerviewFastscroll" }
|
||||||
|
swipelayout-library = { module = "com.daimajia.swipelayout:library", version.ref = "swipelayout" }
|
||||||
|
viewpagerindicator-library = { module = "fr.avianey.com.viewpagerindicator:library", version.ref = "viewpagerIndicator" }
|
||||||
|
|
||||||
|
# Networking libraries
|
||||||
|
logging-interceptor = { module = "com.squareup.okhttp3:logging-interceptor", version.ref = "loggingInterceptor" }
|
||||||
|
okhttp = { module = "com.squareup.okhttp3:okhttp", version.ref = "okHttp" }
|
||||||
|
retrofit = { module = "com.squareup.retrofit2:retrofit", version.ref = "retrofit" }
|
||||||
|
retrofit-adapter-rxjava = { module = "com.squareup.retrofit2:adapter-rxjava2", version.ref = "retrofit" }
|
||||||
|
retrofit-converter-gson = { module = "com.squareup.retrofit2:converter-gson", version.ref = "retrofit" }
|
||||||
|
|
||||||
|
# Utility libraries
|
||||||
|
androidx-browser = { module = "androidx.browser:browser", version.ref = "browser" }
|
||||||
|
apache-commons-lang3 = { module = "org.apache.commons:commons-lang3", version.ref = "commonsLang3Version" }
|
||||||
|
gson = { group = "com.google.code.gson", name = "gson", version.ref = "gson" }
|
||||||
|
juanitobananas-androidDmediaUtil = { module = "com.github.juanitobananas:AndroidMediaUtil", version.ref = "androidmediautil" }
|
||||||
|
androidx-multidex = { module = "androidx.multidex:multidex", version.ref = "multidex" }
|
||||||
|
kotlin-reflect = { module = "org.jetbrains.kotlin:kotlin-reflect", version.ref = "kotlin" }
|
||||||
|
leakcanary-android = { module = "com.squareup.leakcanary:leakcanary-android", version.ref = "leakcanary" }
|
||||||
|
|
||||||
|
# Logging & Crash Reporting
|
||||||
|
acra-mail = { module = "ch.acra:acra-mail", version.ref = "acra" }
|
||||||
|
acra-dialog = { module = "ch.acra:acra-dialog", version.ref = "acra" }
|
||||||
|
logback-android-classic = { module = "com.github.tony19:logback-android-classic", version.ref = "logbackAndroidClassic" }
|
||||||
|
slf4j-api = { module = "org.slf4j:slf4j-api", version.ref = "slf4jApi" }
|
||||||
|
timber = { module = "com.jakewharton.timber:timber", version.ref = "timber" }
|
||||||
|
|
||||||
|
# Map & location services
|
||||||
|
android-sdk = { module = "org.maplibre.gl:android-sdk", version.ref = "androidSdkVersion" }
|
||||||
|
android-plugin-scalebar = { module = "org.maplibre.gl:android-plugin-scalebar-v9", version.ref = "androidPluginScalebar" }
|
||||||
|
coordinates2country-android = { module = "io.github.coordinates2country:coordinates2country-android", version.ref = "coordinates2country" }
|
||||||
|
osmdroid-android = { module = "org.osmdroid:osmdroid-android", version.ref = "osmdroidAndroid" }
|
||||||
|
kotlin-stdlib-jdk7 = { group = "org.jetbrains.kotlin", name = "kotlin-stdlib-jdk7", version.ref = "kotlinStdlib" }
|
||||||
|
kotlin-stdlib-jdk8 = { group = "org.jetbrains.kotlin", name = "kotlin-stdlib-jdk8", version.ref = "kotlinStdlib" }
|
||||||
|
|
||||||
|
[plugins]
|
||||||
|
android-application = { id = "com.android.application", version.ref = "agp" }
|
||||||
|
jetbrains-kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" }
|
||||||
|
kotlin-kapt = { id = "org.jetbrains.kotlin.kapt" }
|
||||||
|
kotlin-parcelize = { id = "org.jetbrains.kotlin.plugin.parcelize" }
|
||||||
|
github-triplet-play = { id = "com.github.triplet.play", version.ref = "githubTripletPlay" }
|
||||||
|
getkeepsafe-dexcount = { id = "com.getkeepsafe.dexcount", version.ref = "dexcount" }
|
||||||
2
gradle/wrapper/gradle-wrapper.properties
vendored
2
gradle/wrapper/gradle-wrapper.properties
vendored
|
|
@ -1,6 +1,6 @@
|
||||||
#Sun Apr 23 18:22:54 IST 2023
|
#Sun Apr 23 18:22:54 IST 2023
|
||||||
distributionBase=GRADLE_USER_HOME
|
distributionBase=GRADLE_USER_HOME
|
||||||
distributionPath=wrapper/dists
|
distributionPath=wrapper/dists
|
||||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-bin.zip
|
distributionUrl=https\://services.gradle.org/distributions/gradle-8.11.1-bin.zip
|
||||||
zipStoreBase=GRADLE_USER_HOME
|
zipStoreBase=GRADLE_USER_HOME
|
||||||
zipStorePath=wrapper/dists
|
zipStorePath=wrapper/dists
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
include ':app'
|
|
||||||
17
settings.gradle.kts
Normal file
17
settings.gradle.kts
Normal file
|
|
@ -0,0 +1,17 @@
|
||||||
|
pluginManagement {
|
||||||
|
repositories {
|
||||||
|
google()
|
||||||
|
mavenCentral()
|
||||||
|
gradlePluginPortal()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
dependencyResolutionManagement {
|
||||||
|
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
|
||||||
|
repositories {
|
||||||
|
google()
|
||||||
|
mavenCentral()
|
||||||
|
maven("https://jitpack.io")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
include(":app")
|
||||||
Loading…
Add table
Add a link
Reference in a new issue