Try Groovy

This commit is contained in:
Adolfo Santiago 2022-02-18 21:08:45 +01:00
parent 72c6ce30b6
commit 688f6f6f89
No known key found for this signature in database
GPG key ID: 244D6F9A317B4A65
12 changed files with 479 additions and 677 deletions

208
husky/app/build.gradle Normal file
View file

@ -0,0 +1,208 @@
plugins {
id "com.android.application"
id "kotlin-android"
id "kotlin-kapt"
id "kotlin-android-extensions"
//id "kotlin-parcelize"
}
android {
compileSdkVersion buildVersions.compileSdk
buildToolsVersion buildVersions.buildTools
defaultConfig {
applicationId buildVersions.applicationId
minSdkVersion buildVersions.minSdk
targetSdkVersion buildVersions.targetSdk
versionCode buildVersions.versionCode
versionName buildVersions.versionName
testInstrumentationRunner deps.testinstrunner
buildConfigField("String", "APPLICATION_NAME", "\"$APP_NAME\"")
buildConfigField("String", "CUSTOM_LOGO_URL", "\"$CUSTOM_LOGO_URL\"")
buildConfigField("String", "CUSTOM_INSTANCE", "\"$CUSTOM_INSTANCE\"")
buildConfigField("String", "SUPPORT_ACCOUNT_URL", "\"$SUPPORT_ACCOUNT_URL\"")
}
kapt {
arguments {
arg("room.schemaLocation", "$projectDir/schemas")
arg("room.incremental", "true")
}
}
buildTypes {
debug {
debuggable true
minifyEnabled false
shrinkResources false
zipAlignEnabled false
// TODO: signing debug key
}
release {
debuggable false
minifyEnabled true
shrinkResources true
zipAlignEnabled true
proguardFiles getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro"
}
}
flavorDimensions "husky", "release"
productFlavors {
husky {
dimension "husky"
}
beta {
dimension "release"
}
}
compileOptions {
sourceCompatibility = buildVersions.javaCompat
targetCompatibility = buildVersions.javaCompat
}
kotlinOptions {
jvmTarget = buildVersions.javaCompat.toString()
}
androidExtensions {
experimental = true
}
buildFeatures {
viewBinding true
}
testOptions {
unitTests {
returnDefaultValues = true
includeAndroidResources = true
}
}
sourceSets {
androidTest.assets.srcDirs += files("$projectDir/schemas".toString())
}
packagingOptions {
exclude "META-INF/DEPENDENCIES"
exclude "META-INF/LICENSE"
exclude "META-INF/LICENSE.txt"
exclude "META-INF/license.txt"
exclude "META-INF/NOTICE"
exclude "META-INF/NOTICE.txt"
exclude "META-INF/notice.txt"
exclude "META-INF/ASL2.0"
exclude "META-INF/*.kotlin_module"
exclude "LICENSE_OFL"
exclude "LICENSE_UNICODE"
}
bundle {
language {
// bundle all languages in every apk so the dynamic language switching works
enableSplit = false
}
}
}
dependencies {
implementation fileTree(dir: "libs", include: ["*.jar"])
implementation deps.androidx.appCompat
implementation deps.androidx.browser
implementation deps.androidx.cardView
implementation deps.androidx.constraintLayout
implementation deps.androidx.coreKtx
implementation deps.androidx.emoji
implementation deps.androidx.emojiAppCompat
implementation deps.androidx.emojiBundled
implementation deps.androidx.exifInterface
implementation deps.androidx.fragmentKtx
implementation deps.androidx.pagingRuntimeKtx
implementation deps.androidx.preferenceKtx
implementation deps.androidx.recyclerView
kapt deps.androidx.roomCompiler
implementation deps.androidx.roomRuntime
implementation deps.androidx.roomRxJava
implementation deps.androidx.shareTarget
implementation deps.androidx.swipeRefreshLayout
implementation deps.androidx.viewpager2
implementation deps.androidx.workRuntime
implementation deps.androidx.lifecycle.commonJava
implementation deps.androidx.lifecycle.liveDataKtx
implementation deps.androidx.lifecycle.reactiveStreamsKtx
implementation deps.androidx.lifecycle.viewmodelKtx
implementation deps.dagger.dagger
implementation deps.dagger.daggerAndroid
kapt deps.dagger.daggerCompiler
kapt deps.dagger.daggerProcessor
implementation deps.dagger.daggerSupport
implementation deps.glide.glide
kapt deps.glide.glideCompiler
implementation deps.glide.glideImage
implementation deps.glide.glideImageViewFactory
implementation deps.glide.glideOkhttp
implementation deps.google.flexbox
implementation deps.google.exoplayer
implementation deps.google.materialDesign
implementation deps.kotlin.stdlib
implementation deps.kotlin.stdlibJdk
implementation deps.rxjava.rxAndroid
implementation deps.rxjava.rxJava
implementation deps.rxjava.rxKotlin
implementation deps.simplestack.ext
implementation deps.simplestack.lib
implementation deps.square.retrofit
implementation deps.square.retrofitAdapterRxJ2
implementation deps.square.retrofitConvGson
implementation deps.square.logginInterceptor
implementation deps.square.okhttp
implementation deps.square.okhttpBrotli
implementation deps.acraMail
implementation deps.acraNotification
implementation deps.androidImageCropper
implementation deps.androidSvg
implementation deps.autodispose
implementation deps.autodisposeAndroidArchComp
implementation deps.bigImageViewer
implementation deps.conscryptAndroid
implementation deps.filemojiCompat
implementation deps.fragmentviewbindingdelegateKt
implementation deps.markdownEdit
implementation deps.materialDrawer
implementation deps.materialDrawerIconics
implementation deps.materialDrawerTypeface
implementation deps.sparkButton
implementation deps.timber
testImplementation deps.testing.extJunit
testImplementation deps.testing.junit
testImplementation deps.testing.mockitoInline
testImplementation deps.testing.mockitoKotlin
testImplementation deps.testing.roboelectric
androidTestImplementation deps.testing.espresso
androidTestImplementation deps.testing.junit
androidTestImplementation deps.testing.roomTesting
}

View file

@ -1,313 +0,0 @@
import com.android.build.gradle.internal.api.BaseVariantOutputImpl
import com.project.starter.easylauncher.filter.ColorRibbonFilter
plugins {
id(AppPlugins.androidApplication)
kotlin(AppPlugins.androidBase)
kotlin(AppPlugins.kapt)
id(AppPlugins.kotlinExtensions)
// id(AppPlugins.kotlinParcelize)
id(AppPlugins.easylauncher) version (AppPlugins.Versions.easylauncher)
}
android {
compileSdk = AndroidSDK.compileSdk
buildToolsVersion = AndroidSDK.buildTools
defaultConfig {
applicationId = DefaultConfig.applicationID
minSdk = DefaultConfig.minSdk
targetSdk = DefaultConfig.targetSdk
versionCode = DefaultConfig.versionCodeRel
versionName = DefaultConfig.versionNameRel
testInstrumentationRunner = DefaultConfig.instrumentationRunner
vectorDrawables.useSupportLibrary = true
kapt {
arguments {
arg("room.schemaLocation", "$projectDir/schemas")
arg("room.incremental", true)
}
}
// TODO: remove, just for compiling
buildConfigField(
"String", "APPLICATION_NAME",
"\"${CustomHuskyBuild.applicationName}\""
)
buildConfigField(
"String", "CUSTOM_LOGO_URL",
"\"${CustomHuskyBuild.customLogo}\""
)
buildConfigField(
"String", "CUSTOM_INSTANCE",
"\"${CustomHuskyBuild.customInstance}\""
)
buildConfigField(
"String", "SUPPORT_ACCOUNT_URL",
"\"${CustomHuskyBuild.supportAccountUrl}\""
)
}
signingConfigs {
getByName(DefaultConfig.DebugSign.signingDebug) {
storeFile = file("$rootDir/${DefaultConfig.DebugSign.keystoreFile}")
storePassword = DefaultConfig.DebugSign.keystorePassword
keyAlias = DefaultConfig.DebugSign.keyAlias
keyPassword = DefaultConfig.DebugSign.keyPassword
}
}
buildTypes {
getByName(BuildTypes.debug) {
isDebuggable = true
isMinifyEnabled = false
isShrinkResources = false
signingConfig = signingConfigs.getByName(DefaultConfig.DebugSign.signingDebug)
}
getByName(BuildTypes.release) {
isDebuggable = false
isMinifyEnabled = true
isShrinkResources = true
proguardFiles(
getDefaultProguardFile(ProguardFile.defaultFile),
ProguardFile.defaultRules
)
}
}
flavorDimensions.addAll(
listOf(
Flavors.Dimensions.husky,
Flavors.Dimensions.release
)
)
productFlavors {
create(Flavors.newhusky) {
dimension = Flavors.Dimensions.release
applicationId = DefaultConfig.NewHusky.applicationID
minSdk = DefaultConfig.minSdk
targetSdk = DefaultConfig.targetSdk
versionCode = DefaultConfig.NewHusky.versionCode
versionName = DefaultConfig.NewHusky.versionName
}
create(Flavors.husky) {
dimension = Flavors.Dimensions.husky
}
create(Flavors.dev) {
dimension = Flavors.Dimensions.release
applicationId = DefaultConfig.Dev.applicationID
minSdk = DefaultConfig.minSdk
targetSdk = DefaultConfig.targetSdk
versionCode = DefaultConfig.Dev.versionCode
versionName = DefaultConfig.Dev.versionName
}
create(Flavors.beta) {
dimension = Flavors.Dimensions.release
versionNameSuffix = "-${BetaConfig.betaSuffix}${BetaConfig.betaSuffixVersion}"
}
create(Flavors.stable) {
dimension = Flavors.Dimensions.release
}
}
applicationVariants.all {
outputs.forEach { output ->
if(output is BaseVariantOutputImpl) {
output.outputFileName =
"husky_${versionName}.${output.outputFile.extension}"
}
}
}
lint {
// abortOnError = true
disable.addAll(
listOf(
"MissingTranslation",
"ExtraTranslation",
"AppCompatCustomView",
"UseRequireInsteadOfGet"
)
)
}
compileOptions {
sourceCompatibility = DefaultConfig.javaVersion
targetCompatibility = DefaultConfig.javaVersion
}
kotlinOptions {
jvmTarget = DefaultConfig.jvmTarget
}
buildFeatures {
viewBinding = true
}
// TODO: remove this, only for compiling
androidExtensions {
isExperimental = true
}
testOptions {
unitTests {
isReturnDefaultValues = true
isIncludeAndroidResources = true
}
}
sourceSets {
getByName("androidTest").assets.srcDirs("$projectDir/schemas")
}
packagingOptions {
resources.excludes.addAll(
listOf(
"LICENSE_OFL",
"LICENSE_UNICODE"
)
)
}
bundle {
language {
enableSplit = true
}
}
}
dependencies {
implementation(fileTree(mapOf("dir" to "libs", "include" to listOf("*.jar", "*.aar"))))
implementation(ApplicationLibs.AndroidX.appCompat)
implementation(ApplicationLibs.AndroidX.browser)
implementation(ApplicationLibs.AndroidX.cardView)
implementation(ApplicationLibs.AndroidX.constraintLayout)
implementation(ApplicationLibs.AndroidX.coreKtx)
implementation(ApplicationLibs.AndroidX.emoji)
implementation(ApplicationLibs.AndroidX.emojiAppCompat)
implementation(ApplicationLibs.AndroidX.emojiBundled)
implementation(ApplicationLibs.AndroidX.exifInterface)
implementation(ApplicationLibs.AndroidX.fragmentKtx)
implementation(ApplicationLibs.AndroidX.pagingRuntimeKtx)
implementation(ApplicationLibs.AndroidX.preferenceKtx)
implementation(ApplicationLibs.AndroidX.recyclerView)
kapt(ApplicationLibs.AndroidX.roomCompiler)
implementation(ApplicationLibs.AndroidX.roomRuntime)
implementation(ApplicationLibs.AndroidX.roomRxJava)
implementation(ApplicationLibs.AndroidX.shareTarget)
implementation(ApplicationLibs.AndroidX.swipeRefreshLayout)
implementation(ApplicationLibs.AndroidX.viewpager2)
implementation(ApplicationLibs.AndroidX.workRuntime)
implementation(ApplicationLibs.AndroidX.Lifecycle.commonJava)
implementation(ApplicationLibs.AndroidX.Lifecycle.liveDataKtx)
implementation(ApplicationLibs.AndroidX.Lifecycle.reactiveStreamsKtx)
implementation(ApplicationLibs.AndroidX.Lifecycle.viewmodelKtx)
implementation(ApplicationLibs.Dagger.dagger)
implementation(ApplicationLibs.Dagger.daggerAndroid)
kapt(ApplicationLibs.Dagger.daggerCompiler)
kapt(ApplicationLibs.Dagger.daggerProcessor)
implementation(ApplicationLibs.Dagger.daggerSupport)
implementation(ApplicationLibs.Glide.glide)
kapt(ApplicationLibs.Glide.glideCompiler)
implementation(ApplicationLibs.Glide.glideImage)
implementation(ApplicationLibs.Glide.glideImageViewFactory)
implementation(ApplicationLibs.Glide.glideOkhttp)
implementation(ApplicationLibs.Google.flexbox)
implementation(ApplicationLibs.Google.exoplayer)
implementation(ApplicationLibs.Google.materialDesign)
implementation(ApplicationLibs.Kotlin.stdlib)
implementation(ApplicationLibs.Kotlin.stdlibJdk)
implementation(ApplicationLibs.RxJava.rxAndroid)
implementation(ApplicationLibs.RxJava.rxJava)
implementation(ApplicationLibs.RxJava.rxKotlin)
implementation(ApplicationLibs.SimpleStack.ext)
implementation(ApplicationLibs.SimpleStack.lib)
implementation(ApplicationLibs.Square.retrofit)
implementation(ApplicationLibs.Square.retrofitAdapterRxJ2)
implementation(ApplicationLibs.Square.retrofitConvGson)
implementation(ApplicationLibs.Square.logginInterceptor)
implementation(ApplicationLibs.Square.okhttp)
implementation(ApplicationLibs.Square.okhttpBrotli)
implementation(ApplicationLibs.acraMail)
implementation(ApplicationLibs.acraNotification)
implementation(ApplicationLibs.androidImageCropper)
implementation(ApplicationLibs.androidSvg)
implementation(ApplicationLibs.autodispose)
implementation(ApplicationLibs.autodisposeAndroidArchComp)
implementation(ApplicationLibs.bigImageViewer)
implementation(ApplicationLibs.conscryptAndroid)
implementation(ApplicationLibs.filemojiCompat)
implementation(ApplicationLibs.fragmentviewbindingdelegateKt)
implementation(ApplicationLibs.markdownEdit)
implementation(ApplicationLibs.materialDrawer)
implementation(ApplicationLibs.materialDrawerIconics)
implementation(ApplicationLibs.materialDrawerTypeface)
implementation(ApplicationLibs.sparkButton)
implementation(ApplicationLibs.timber)
testImplementation(TestLibs.extJunit)
testImplementation(TestLibs.junit)
testImplementation(TestLibs.mockitoInline)
testImplementation(TestLibs.mockitoKotlin)
testImplementation(TestLibs.roboelectric)
androidTestImplementation(TestLibs.espresso)
androidTestImplementation(TestLibs.junit)
androidTestImplementation(TestLibs.roomTesting)
}
easylauncher {
productFlavors {
register(Flavors.beta) {
filters(
customRibbon(
label = "Beta",
gravity = ColorRibbonFilter.Gravity.TOPRIGHT,
ribbonColor = "#DCDCDC",
labelColor = "#000000"
)
)
}
register(Flavors.newhusky) {
filters(
customRibbon(
label = "NEW",
gravity = ColorRibbonFilter.Gravity.TOPRIGHT,
ribbonColor = "#DCDCDC",
labelColor = "#000000"
)
)
}
}
}

34
husky/build.gradle Normal file
View file

@ -0,0 +1,34 @@
buildscript {
apply from: "versions.gradle"
apply from: "dependencies.gradle"
apply from: "instance.gradle"
addRepos(repositories)
dependencies {
classpath deps.androidGradlePlugin
classpath deps.kotlinGradlePlugin
}
}
allprojects {
addRepos(repositories)
tasks.withType(JavaCompile) {
options.encoding(buildVersions.encoding)
options.compilerArgs += [
"-Xlint:all",
"-Xlint:unchecked",
"-Xlint:-deprecation",
]
}
}
task clean(type: Delete) {
delete(rootProject.buildDir)
delete("${rootProject.buildDir}/app/huskyBeta")
delete("${rootProject.buildDir}/app/huskyStable")
delete("${rootProject.buildDir}/app/huskyDev")
delete("${rootProject.buildDir}/app/huskyNewhusky")
}

View file

@ -1,50 +0,0 @@
import com.github.benmanes.gradle.versions.updates.DependencyUpdatesTask
buildscript {
addRepos(repositories)
dependencies {
// Base
classpath(GradlePlugins.android)
classpath(GradlePlugins.kotlin)
// Plugins
classpath(GradlePlugins.gradleVersions)
}
}
allprojects {
addRepos(repositories)
tasks.withType<JavaCompile> {
options.encoding = DefaultConfig.encoding
options.compilerArgs.addAll(
listOf(
"-Xlint:all",
"-Xlint:unchecked",
"-Xlint:-deprecation"
)
)
}
apply {
plugin(AppPlugins.manesVersions)
}
tasks.withType<DependencyUpdatesTask> {
gradleReleaseChannel = "current"
rejectVersionIf {
!isNonStable(candidate.version)
}
}
}
tasks.register<Delete>(BuildTasks.taskTypeClean) {
delete(buildDir)
delete("${projectDir}/buildSrc/build")
delete("${projectDir}/app/huskyBeta")
delete("${projectDir}/app/huskyStable")
delete("${projectDir}/app/huskyDev")
delete("${projectDir}/app/huskyNewhusky")
}

View file

@ -1,7 +0,0 @@
plugins {
`kotlin-dsl`
}
repositories {
mavenCentral()
}

View file

@ -1,183 +0,0 @@
object AppPlugins {
object Versions {
const val easylauncher = "5.0.0"
}
const val androidApplication = "com.android.application"
const val androidBase = "android"
const val easylauncher = "com.starter.easylauncher"
const val kapt = "kapt"
const val kotlinExtensions = "kotlin-android-extensions"
const val kotlinParcelize = "kotlin-parcelize"
const val manesVersions = "com.github.ben-manes.versions"
}
object ApplicationLibs {
private object Versions {
const val acra = "5.8.4"
const val androidImageCropper = "2.8.0"
const val androidSvg = "1.4"
const val appcompat = "1.3.1"
const val autodispose = "1.4.0"
const val bigImageViewer = "1.7.0"
const val browser = "1.3.0"
const val cardView = "1.0.0"
const val conscryptAndroid = "2.5.2"
const val constraintlayout = "2.1.3"
const val coreKtx = "1.3.2"
const val dagger = "2.38.1"
const val emoji = "1.1.0"
const val exifInterface = "1.3.3"
const val exoplayer = "2.16.0"
const val filemojiCompat = "1.0.17"
const val flexbox = "2.0.1"
const val fragmentKtx = "1.2.5"
const val fragmentviewbindingdelegateKt = "1.0.0"
const val glide = "4.12.0"
const val glideImage = "1.8.1"
const val lifecycle = "2.3.1"
const val markdownEdit = "1.0.0"
const val materialDesign = "1.4.0"
const val materialDrawer = "8.4.5"
const val materialDrawerTypeface = "3.0.1.4.original-kotlin@aar"
const val pagingRuntimeKtx = "2.1.2"
const val preferenceKtx = "1.1.1"
const val okhttpVersion = "4.9.3"
const val recyclerView = "1.2.1"
const val retrofit = "2.9.0"
const val room = "2.2.5"
const val rxAndroid = "2.1.1"
const val rxJava = "2.2.21"
const val rxKotlin = "2.4.0"
const val shareTarget = "1.0.0"
const val simplestack = "2.6.2"
const val simplestackExt = "2.2.2"
const val sparkButton = "4.1.0"
const val swipeRefreshLayout = "1.1.0"
const val timber = "5.0.1"
const val viewpager2 = "1.0.0"
const val workRuntime = "2.4.0"
}
object AndroidX {
const val appCompat = "androidx.appcompat:appcompat:${Versions.appcompat}"
const val browser = "androidx.browser:browser:${Versions.browser}"
const val cardView = "androidx.cardview:cardview:${Versions.cardView}"
const val constraintLayout =
"androidx.constraintlayout:constraintlayout:${Versions.constraintlayout}"
const val coreKtx = "androidx.core:core-ktx:${Versions.coreKtx}"
const val emoji = "androidx.emoji:emoji:${Versions.emoji}"
const val emojiAppCompat = "androidx.emoji:emoji-appcompat:${Versions.emoji}"
const val emojiBundled = "androidx.emoji:emoji-bundled:${Versions.emoji}"
const val exifInterface = "androidx.exifinterface:exifinterface:${Versions.exifInterface}"
const val fragmentKtx = "androidx.fragment:fragment-ktx:${Versions.fragmentKtx}"
const val pagingRuntimeKtx =
"androidx.paging:paging-runtime-ktx:${Versions.pagingRuntimeKtx}"
const val preferenceKtx = "androidx.preference:preference-ktx:${Versions.preferenceKtx}"
const val recyclerView = "androidx.recyclerview:recyclerview:${Versions.recyclerView}"
const val roomCompiler = "androidx.room:room-compiler:${Versions.room}"
const val roomRuntime = "androidx.room:room-runtime:${Versions.room}"
const val roomRxJava = "androidx.room:room-rxjava2:${Versions.room}"
const val shareTarget = "androidx.sharetarget:sharetarget:${Versions.shareTarget}"
const val swipeRefreshLayout =
"androidx.swiperefreshlayout:swiperefreshlayout:${Versions.swipeRefreshLayout}"
const val viewpager2 = "androidx.viewpager2:viewpager2:${Versions.viewpager2}"
const val workRuntime = "androidx.work:work-runtime:${Versions.workRuntime}"
object Lifecycle {
const val commonJava = "androidx.lifecycle:lifecycle-common-java8:${Versions.lifecycle}"
const val liveDataKtx =
"androidx.lifecycle:lifecycle-livedata-ktx:${Versions.lifecycle}"
const val reactiveStreamsKtx =
"androidx.lifecycle:lifecycle-reactivestreams-ktx:${Versions.lifecycle}"
const val viewmodelKtx =
"androidx.lifecycle:lifecycle-viewmodel-ktx:${Versions.lifecycle}"
}
}
object Dagger {
const val dagger = "com.google.dagger:dagger:${Versions.dagger}"
const val daggerAndroid = "com.google.dagger:dagger-android:${Versions.dagger}"
const val daggerCompiler = "com.google.dagger:dagger-compiler:${Versions.dagger}"
const val daggerProcessor = "com.google.dagger:dagger-android-processor:${Versions.dagger}"
const val daggerSupport = "com.google.dagger:dagger-android-support:${Versions.dagger}"
}
object Glide {
const val glide = "com.github.bumptech.glide:glide:${Versions.glide}"
const val glideCompiler = "com.github.bumptech.glide:compiler:${Versions.glide}"
const val glideImage = "com.github.piasy:GlideImageLoader:${Versions.glideImage}"
const val glideImageViewFactory =
"com.github.piasy:GlideImageViewFactory:${Versions.glideImage}"
const val glideOkhttp = "com.github.bumptech.glide:okhttp3-integration:${Versions.glide}"
}
object Google {
const val flexbox = "com.google.android:flexbox:${Versions.flexbox}"
const val exoplayer = "com.google.android.exoplayer:exoplayer:${Versions.exoplayer}"
const val materialDesign = "com.google.android.material:material:${Versions.materialDesign}"
}
object Kotlin {
const val reflect = "org.jetbrains.kotlin:kotlin-reflect:${kotlinVersion}"
const val stdlib = "org.jetbrains.kotlin:kotlin-stdlib:${kotlinVersion}"
const val stdlibJdk = "org.jetbrains.kotlin:kotlin-stdlib-jdk8:${kotlinVersion}"
}
object RxJava {
const val rxAndroid = "io.reactivex.rxjava2:rxandroid:${Versions.rxAndroid}"
const val rxJava = "io.reactivex.rxjava2:rxjava:${Versions.rxJava}"
const val rxKotlin = "io.reactivex.rxjava2:rxkotlin:${Versions.rxKotlin}"
}
object SimpleStack {
const val lib = "com.github.Zhuinden:simple-stack:${Versions.simplestack}"
const val ext = "com.github.Zhuinden:simple-stack-extensions:${Versions.simplestackExt}"
}
object Square {
const val retrofit = "com.squareup.retrofit2:retrofit:${Versions.retrofit}"
const val retrofitAdapterRxJ2 =
"com.squareup.retrofit2:adapter-rxjava2:${Versions.retrofit}"
const val retrofitConvGson = "com.squareup.retrofit2:converter-gson:${Versions.retrofit}"
const val logginInterceptor =
"com.squareup.okhttp3:logging-interceptor:${Versions.okhttpVersion}"
const val okhttp = "com.squareup.okhttp3:okhttp:${Versions.okhttpVersion}"
const val okhttpBrotli = "com.squareup.okhttp3:okhttp-brotli:${Versions.okhttpVersion}"
}
const val acraMail = "ch.acra:acra-mail:${Versions.acra}"
const val acraNotification = "ch.acra:acra-notification:${Versions.acra}"
const val androidSvg = "com.caverock:androidsvg-aar:${Versions.androidSvg}"
const val androidImageCropper =
"com.theartofdev.edmodo:android-image-cropper:${Versions.androidImageCropper}"
const val autodispose = "com.uber.autodispose:autodispose:${Versions.autodispose}"
const val autodisposeAndroidArchComp =
"com.uber.autodispose:autodispose-android-archcomponents:${Versions.autodispose}"
const val bigImageViewer = "com.github.piasy:BigImageViewer:${Versions.bigImageViewer}"
const val conscryptAndroid = "org.conscrypt:conscrypt-android:${Versions.conscryptAndroid}"
const val filemojiCompat = "de.c1710:filemojicompat:${Versions.filemojiCompat}"
const val fragmentviewbindingdelegateKt =
"com.github.Zhuinden:fragmentviewbindingdelegate-kt:${Versions.fragmentviewbindingdelegateKt}"
const val markdownEdit = "com.github.Tunous:MarkdownEdit:${Versions.markdownEdit}"
const val materialDrawer = "com.mikepenz:materialdrawer:${Versions.materialDrawer}"
const val materialDrawerIconics =
"com.mikepenz:materialdrawer-iconics:${Versions.materialDrawer}"
const val materialDrawerTypeface =
"com.mikepenz:google-material-typeface:${Versions.materialDrawerTypeface}"
const val sparkButton = "com.github.connyduck:sparkbutton:${Versions.sparkButton}"
const val timber = "com.jakewharton.timber:timber:${Versions.timber}"
}
object GradlePlugins {
object Versions {
const val gradle = "7.1.0"
const val gradleVersions = "0.39.0"
}
const val android = "com.android.tools.build:gradle:${Versions.gradle}"
const val kotlin = "org.jetbrains.kotlin:kotlin-gradle-plugin:${kotlinVersion}"
const val gradleVersions =
"com.github.ben-manes:gradle-versions-plugin:${Versions.gradleVersions}"
}

View file

@ -1,103 +0,0 @@
import java.util.Locale
import org.gradle.api.JavaVersion
import org.gradle.api.artifacts.dsl.RepositoryHandler
import org.gradle.kotlin.dsl.maven
const val kotlinVersion = "1.5.32"
object AndroidSDK {
const val compileSdk = 30
const val buildTools = "32.0.0"
}
object CustomHuskyBuild {
const val applicationName = "Husky"
const val customLogo = ""
const val customInstance = ""
const val supportAccountUrl = "https://huskyapp.dev/users/husky"
}
object DefaultConfig {
const val applicationID = "su.xash.husky"
const val minSdk = 23
const val targetSdk = 30
const val versionCodeRel = 175
const val versionNameRel = "1.1.0"
val javaVersion = JavaVersion.VERSION_11
val jvmTarget = javaVersion.toString()
const val instrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
const val encoding = "UTF-8"
object DebugSign {
const val signingDebug = "debug"
const val keystoreFile = "debug.keystore"
const val keystorePassword = "android"
const val keyAlias = "androiddebugkey"
const val keyPassword = "android"
}
object Dev {
const val applicationID = "su.xash.husky.dev"
const val versionCode = 1
const val versionName = "1.0.0"
}
object NewHusky {
const val applicationID = "su.xash.husky.alpha"
const val versionCode = 1
const val versionName = "2.0.0"
}
}
object BetaConfig {
const val betaSuffix = "beta"
const val betaSuffixVersion = "3"
}
object BuildTypes {
const val debug = "debug"
const val release = "release"
}
object Flavors {
object Dimensions {
const val husky = "husky"
const val release = "release"
}
const val husky = "husky"
const val dev = "dev"
const val beta = "beta"
const val stable = "stable"
const val newhusky = "newhusky"
}
object ProguardFile {
const val defaultFile = "proguard-android-optimize.txt"
const val defaultRules = "proguard-rules.pro"
}
object BuildTasks {
const val taskTypeClean = "clean"
}
// Function to add repositories to the project.
fun addRepos(handler: RepositoryHandler) {
handler.google()
handler.gradlePluginPortal()
handler.maven(url = "https://jitpack.io")
handler.maven(url = "https://plugins.gradle.org/m2/")
}
// Function to check stable versions
fun isNonStable(version: String): Boolean {
val stableKeyword = listOf("a", "alpha", "beta", "final", "ga", "m", "release", "rc")
.any { version.toLowerCase(Locale.ROOT).contains(it) }
return stableKeyword.not()
}

View file

@ -1,20 +0,0 @@
object TestLibs {
private object Versions {
const val espresso = "3.4.0"
const val extJunit = "1.1.3"
const val junit = "4.13.2"
const val mockitoInline = "3.6.28"
const val mockitoKotlin = "2.1.0"
const val roboelectric = "4.4"
const val roomTesting = "2.2.5"
}
const val extJunit = "androidx.test.ext:junit:${Versions.extJunit}"
const val espresso = "androidx.test.espresso:espresso-core:${Versions.espresso}"
const val junit = "junit:junit:${Versions.junit}"
const val mockitoInline = "org.mockito:mockito-inline:${Versions.mockitoInline}"
const val mockitoKotlin = "com.nhaarman.mockitokotlin2:mockito-kotlin:${Versions.mockitoKotlin}"
const val roboelectric = "org.robolectric:robolectric:${Versions.roboelectric}"
const val roomTesting = "androidx.room:room-testing:${Versions.roomTesting}"
}

137
husky/dependencies.gradle Normal file
View file

@ -0,0 +1,137 @@
ext.deps = [:]
def deps = [:]
deps.androidGradlePlugin = "com.android.tools.build:gradle:${versions.gradle.androidGradlePlugin}"
deps.kotlinGradlePlugin = "org.jetbrains.kotlin:kotlin-gradle-plugin:${kotlin_version}"
deps.testinstrunner = "androidx.test.runner.AndroidJUnitRunner"
ext.deps = deps
def androidx = [:]
androidx.appCompat = "androidx.appcompat:appcompat:${versions.appcompat}"
androidx.browser = "androidx.browser:browser:${versions.browser}"
androidx.cardView = "androidx.cardview:cardview:${versions.cardView}"
androidx.constraintLayout =
"androidx.constraintlayout:constraintlayout:${versions.constraintlayout}"
androidx.coreKtx = "androidx.core:core-ktx:${versions.coreKtx}"
androidx.emoji = "androidx.emoji:emoji:${versions.emoji}"
androidx.emojiAppCompat = "androidx.emoji:emoji-appcompat:${versions.emoji}"
androidx.emojiBundled = "androidx.emoji:emoji-bundled:${versions.emoji}"
androidx.exifInterface = "androidx.exifinterface:exifinterface:${versions.exifInterface}"
androidx.fragmentKtx = "androidx.fragment:fragment-ktx:${versions.fragmentKtx}"
androidx.pagingRuntimeKtx =
"androidx.paging:paging-runtime-ktx:${versions.pagingRuntimeKtx}"
androidx.preferenceKtx = "androidx.preference:preference-ktx:${versions.preferenceKtx}"
androidx.recyclerView = "androidx.recyclerview:recyclerview:${versions.recyclerView}"
androidx.roomCompiler = "androidx.room:room-compiler:${versions.room}"
androidx.roomRuntime = "androidx.room:room-runtime:${versions.room}"
androidx.roomRxJava = "androidx.room:room-rxjava2:${versions.room}"
androidx.shareTarget = "androidx.sharetarget:sharetarget:${versions.shareTarget}"
androidx.swipeRefreshLayout =
"androidx.swiperefreshlayout:swiperefreshlayout:${versions.swipeRefreshLayout}"
androidx.viewpager2 = "androidx.viewpager2:viewpager2:${versions.viewpager2}"
androidx.workRuntime = "androidx.work:work-runtime:${versions.workRuntime}"
def lifecycle = [:]
lifecycle.commonJava = "androidx.lifecycle:lifecycle-common-java8:${versions.lifecycle}"
lifecycle.liveDataKtx =
"androidx.lifecycle:lifecycle-livedata-ktx:${versions.lifecycle}"
lifecycle.reactiveStreamsKtx =
"androidx.lifecycle:lifecycle-reactivestreams-ktx:${versions.lifecycle}"
lifecycle.viewmodelKtx =
"androidx.lifecycle:lifecycle-viewmodel-ktx:${versions.lifecycle}"
androidx.lifecycle = lifecycle
deps.androidx = androidx
def dagger = [:]
dagger.dagger = "com.google.dagger:dagger:${versions.dagger}"
dagger.daggerAndroid = "com.google.dagger:dagger-android:${versions.dagger}"
dagger.daggerCompiler = "com.google.dagger:dagger-compiler:${versions.dagger}"
dagger.daggerProcessor = "com.google.dagger:dagger-android-processor:${versions.dagger}"
dagger.daggerSupport = "com.google.dagger:dagger-android-support:${versions.dagger}"
deps.dagger = dagger
def glide = [:]
glide.glide = "com.github.bumptech.glide:glide:${versions.glide}"
glide.glideCompiler = "com.github.bumptech.glide:compiler:${versions.glide}"
glide.glideImage = "com.github.piasy:GlideImageLoader:${versions.glideImage}"
glide.glideImageViewFactory =
"com.github.piasy:GlideImageViewFactory:${versions.glideImage}"
glide.glideOkhttp = "com.github.bumptech.glide:okhttp3-integration:${versions.glide}"
deps.glide = glide
def google = [:]
google.flexbox = "com.google.android:flexbox:${versions.flexbox}"
google.exoplayer = "com.google.android.exoplayer:exoplayer:${versions.exoplayer}"
google.materialDesign = "com.google.android.material:material:${versions.materialDesign}"
deps.google = google
def kotlin = [:]
kotlin.reflect = "org.jetbrains.kotlin:kotlin-reflect:${kotlin_version}"
kotlin.stdlib = "org.jetbrains.kotlin:kotlin-stdlib:${kotlin_version}"
kotlin.stdlibJdk = "org.jetbrains.kotlin:kotlin-stdlib-jdk8:${kotlin_version}"
deps.kotlin = kotlin
def rxjava = [:]
rxjava.rxAndroid = "io.reactivex.rxjava2:rxandroid:${versions.rxAndroid}"
rxjava.rxJava = "io.reactivex.rxjava2:rxjava:${versions.rxJava}"
rxjava.rxKotlin = "io.reactivex.rxjava2:rxkotlin:${versions.rxKotlin}"
deps.rxjava = rxjava
def simplestack = [:]
simplestack.lib = "com.github.Zhuinden:simple-stack:${versions.simplestack}"
simplestack.ext = "com.github.Zhuinden:simple-stack-extensions:${versions.simplestackext}"
deps.simplestack = simplestack
def square = [:]
square.retrofit = "com.squareup.retrofit2:retrofit:${versions.retrofit}"
square.retrofitAdapterRxJ2 =
"com.squareup.retrofit2:adapter-rxjava2:${versions.retrofit}"
square.retrofitConvGson = "com.squareup.retrofit2:converter-gson:${versions.retrofit}"
square.logginInterceptor =
"com.squareup.okhttp3:logging-interceptor:${versions.okhttpVersion}"
square.okhttp = "com.squareup.okhttp3:okhttp:${versions.okhttpVersion}"
square.okhttpBrotli = "com.squareup.okhttp3:okhttp-brotli:${versions.okhttpVersion}"
deps.square = square
def testing = [:]
testing.extJunit = "androidx.test.ext:junit:${versions.testing.extJunit}"
testing.espresso = "androidx.test.espresso:espresso-core:${versions.testing.espresso}"
testing.junit = "junit:junit:${versions.testing.junit}"
testing.mockitoInline = "org.mockito:mockito-inline:${versions.testing.mockitoInline}"
testing.mockitoKotlin = "com.nhaarman.mockitokotlin2:mockito-kotlin:${versions.testing.mockitoKotlin}"
testing.roboelectric = "org.robolectric:robolectric:${versions.testing.roboelectric}"
testing.roomTesting = "androidx.room:room-testing:${versions.testing.roomTesting}"
deps.testing = testing
deps.acraMail = "ch.acra:acra-mail:${versions.acra}"
deps.acraNotification = "ch.acra:acra-notification:${versions.acra}"
deps.androidSvg = "com.caverock:androidsvg-aar:${versions.androidSvg}"
deps.androidImageCropper =
"com.theartofdev.edmodo:android-image-cropper:${versions.androidImageCropper}"
deps.autodispose = "com.uber.autodispose:autodispose:${versions.autodispose}"
deps.autodisposeAndroidArchComp =
"com.uber.autodispose:autodispose-android-archcomponents:${versions.autodispose}"
deps.bigImageViewer = "com.github.piasy:BigImageViewer:${versions.bigImageViewer}"
deps.conscryptAndroid = "org.conscrypt:conscrypt-android:${versions.conscryptAndroid}"
deps.filemojiCompat = "de.c1710:filemojicompat:${versions.filemojiCompat}"
deps.fragmentviewbindingdelegateKt =
"com.github.Zhuinden:fragmentviewbindingdelegate-kt:${versions.fragmentviewbindingdelegateKt}"
deps.markdownEdit = "com.github.Tunous:MarkdownEdit:${versions.markdownEdit}"
deps.materialDrawer = "com.mikepenz:materialdrawer:${versions.materialDrawer}"
deps.materialDrawerIconics =
"com.mikepenz:materialdrawer-iconics:${versions.materialDrawer}"
deps.materialDrawerTypeface =
"com.mikepenz:google-material-typeface:${versions.materialDrawerTypeface}"
deps.sparkButton = "com.github.connyduck:sparkbutton:${versions.sparkButton}"
deps.timber = "com.jakewharton.timber:timber:${versions.timber}"
// Repository handler
static def addRepos(RepositoryHandler handler) {
handler.google()
handler.jcenter()
handler.maven { url "https://jitpack.io" }
handler.maven { url "https://plugins.gradle.org/m2/" }
}
ext.addRepos = this.&addRepos

19
husky/instance.gradle Normal file
View file

@ -0,0 +1,19 @@
/**
Edit this file to create a Tusky build that is customized for your Fediverse instance.
Note: Publishing a custom build on Google Play may violate the Google Play developer policy (Repetetive Content)
*/
// The app name
ext.APP_NAME = "Husky"
// The application id. Must be unique, e.g. based on your domain
ext.APP_ID = "su.xash.husky"
// url of a custom app logo. Recommended size at least 600x600. Keep empty to use the Tusky elephant friend.
ext.CUSTOM_LOGO_URL = ""
// e.g. mastodon.social. Keep empty to not suggest any instance on the signup screen
ext.CUSTOM_INSTANCE = ""
// link to your support account. Will be linked on the about page when not empty.
ext.SUPPORT_ACCOUNT_URL = "https://huskyapp.dev/users/husky"

View file

@ -1,3 +1,3 @@
rootProject.name = "husky" rootProject.name = "husky"
include(":app") include ":app"

80
husky/versions.gradle Normal file
View file

@ -0,0 +1,80 @@
ext.kotlin_version = "1.6.10"
def buildVersions = [:]
buildVersions.applicationId = "com.captainepoch.basemvvm"
buildVersions.compileSdk = 30
buildVersions.minSdk = 23
buildVersions.targetSdk = 30
buildVersions.buildTools = "30.0.3"
buildVersions.javaCompat = JavaVersion.VERSION_11
buildVersions.jdkVersion = 11
buildVersions.encoding = "UTF-8"
buildVersions.versionName = "1.0.0"
buildVersions.versionCode = 1
ext.buildVersions = buildVersions
def versions = [:]
def gradle = [:]
gradle.androidGradlePlugin = "7.1.1"
gradle.gradleVersions = "0.39.0"
versions.gradle = gradle
versions.acra = "5.8.4"
versions.androidImageCropper = "2.8.0"
versions.androidSvg = "1.4"
versions.appcompat = "1.3.1"
versions.autodispose = "1.4.0"
versions.bigImageViewer = "1.7.0"
versions.browser = "1.3.0"
versions.cardView = "1.0.0"
versions.conscryptAndroid = "2.5.2"
versions.constraintlayout = "2.1.3"
versions.coreKtx = "1.3.2"
versions.dagger = "2.38.1"
versions.emoji = "1.1.0"
versions.exifInterface = "1.3.3"
versions.exoplayer = "2.16.0"
versions.filemojiCompat = "1.0.17"
versions.flexbox = "2.0.1"
versions.fragmentKtx = "1.2.5"
versions.fragmentviewbindingdelegateKt = "1.0.0"
versions.glide = "4.12.0"
versions.glideImage = "1.8.1"
versions.kotlin = "1.6.10"
versions.lifecycle = "2.3.1"
versions.markdownEdit = "1.0.0"
versions.materialDesign = "1.4.0"
versions.materialDrawer = "8.4.5"
versions.materialDrawerTypeface = "3.0.1.4.original-kotlin@aar"
versions.pagingRuntimeKtx = "2.1.2"
versions.preferenceKtx = "1.1.1"
versions.okhttpVersion = "4.9.3"
versions.recyclerView = "1.2.1"
versions.retrofit = "2.9.0"
versions.room = "2.2.5"
versions.rxAndroid = "2.1.1"
versions.rxJava = "2.2.21"
versions.rxKotlin = "2.4.0"
versions.shareTarget = "1.0.0"
versions.simplestack = "2.6.2"
versions.simplestackext = "2.2.2"
versions.sparkButton = "4.1.0"
versions.swipeRefreshLayout = "1.1.0"
versions.timber = "5.0.1"
versions.viewpager2 = "1.0.0"
versions.workRuntime = "2.4.0"
def testing = [:]
testing.espresso = "3.4.0"
testing.extJunit = "1.1.3"
testing.junit = "4.13.2"
testing.mockitoInline = "3.6.28"
testing.mockitoKotlin = "2.1.0"
testing.roboelectric = "4.4"
testing.roomTesting = "2.2.5"
versions.testing = testing
ext.versions = versions