package com.quyunshuo.androidbaseframemvvm.buildsrc

/**
 * 项目依赖版本统一管理
 *
 * @author Qu Yunshuo
 * @since 4/24/21 4:00 PM
 */
object DependencyConfig {

    /**
     * 依赖版本号
     *
     * @author Qu Yunshuo
     * @since 4/24/21 4:01 PM
     */
    object Version {


        // AndroidX--------------------------------------------------------------
        const val AppCompat = "1.3.1"
        const val CoreKtx = "1.7.0"
        const val ConstraintLayout = "2.1.3"                // 约束布局
        const val TestExtJunit = "1.1.2"
        const val TestEspresso = "3.3.0"
        const val ActivityKtx = "1.5.1"
        const val FragmentKtx = "1.5.2"
        const val MultiDex = "2.0.1"
        const val Navigation = "2.3.0"
        const val Room = "2.6.0"
        const val Work = "2.8.1"                           //后台管理器

        // Android---------------------------------------------------------------
        const val Junit = "4.13"
        const val Material = "1.2.0"                        // 材料设计UI套件

        // Kotlin----------------------------------------------------------------
        const val Kotlin = "1.6.21"
        const val Coroutines = "1.6.1"                      // 协程
        const val KotlinSerialization = "1.7.3"             // kotlin 系列化

        // JetPack---------------------------------------------------------------
        const val Lifecycle = "2.4.1"                       // Lifecycle
        const val Hilt = "2.44"                             // DI框架-Hilt

        // GitHub----------------------------------------------------------------
        const val OkHttp = "4.9.0"                          // OkHttp
        const val OkHttpInterceptorLogging = "4.9.1"        // OkHttp 请求Log拦截器
        const val Retrofit = "2.9.0"                        // Retrofit
        const val RetrofitConverterGson = "2.9.0"           // Retrofit Gson 转换器
        const val RetrofitConverterScalars = "2.9.0"           // Retrofit String 转换器
        const val Gson = "2.10.1"                            // Gson
        const val MMKV = "1.2.9"                            // 腾讯 MMKV 替代SP
        const val AutoSize = "v1.2.1"                        // 屏幕适配
        const val ARoute = "1.5.2"                          // 阿里路由
        const val ARouteCompiler = "1.5.2"                  // 阿里路由 APT
        const val RecyclerViewAdapter = "3.0.4"             // RecyclerViewAdapter
        const val EventBus = "3.2.0"                        // 事件总线
        const val PermissionX = "1.8.0"                     // 权限申请
        const val LeakCanary = "2.7"                        // 检测内存泄漏
        const val AutoService = "1.0"                       // 自动生成SPI暴露服务文件
        const val Coil = "1.3.0"                            // Kotlin图片加载框架
        const val Toaster = "12.6"                            //Toast框架
        const val MagicIndicator = "1.7.0"                            //导航条
        const val Okhttputils =
            "12.8"                     //下载更新apk https://github.com/getActivity/EasyHttp
        const val MPAndroidChart = "v3.1.0"                  //图表
        const val BaseRecyclerViewAdapterHelper4 = "4.1.4" //Rv适配器
        const val Serialport = "1.0.0"                     //串口支付设备
        const val XLog = "1.11.1"                          // xlog

        // 第三方SDK--------------------------------------------------------------
        const val TencentBugly = "3.3.9"                    // 腾讯Bugly 异常上报
        const val TencentBuglyNative = "3.8.0"              // Bugly native异常上报
        const val TencentTBSX5 = "43939"                    // 腾讯X5WebView
        const val GeTui = "2.13.1.0"                        // 个推
        const val RabbitMq = "4.12.0"                       //RabbitMq
        const val rxjava = "2.1.16"
        const val rxandroid="2.0.2"
    }

    /**
     * AndroidX相关依赖
     *
     * @author Qu Yunshuo
     * @since 4/24/21 4:01 PM
     */
    object AndroidX {
        const val AndroidJUnitRunner = "androidx.test.runner.AndroidJUnitRunner"
        const val AppCompat = "androidx.appcompat:appcompat:${Version.AppCompat}"
        const val CoreKtx = "androidx.core:core-ktx:${Version.CoreKtx}"
        const val ConstraintLayout =
            "androidx.constraintlayout:constraintlayout:${Version.ConstraintLayout}"
        const val TestExtJunit = "androidx.test.ext:junit:${Version.TestExtJunit}"
        const val TestEspresso = "androidx.test.espresso:espresso-core:${Version.TestEspresso}"
        const val ActivityKtx = "androidx.activity:activity-ktx:${Version.ActivityKtx}"
        const val FragmentKtx = "androidx.fragment:fragment-ktx:${Version.FragmentKtx}"
        const val MultiDex = "androidx.multidex:multidex:${Version.MultiDex}"
        const val Navigation = "androidx.navigation:navigation-fragment-ktx:${Version.Navigation}"
        const val NavigationUI = "androidx.navigation:navigation-ui-ktx:${Version.Navigation}"
        const val Room = "androidx.room:room-runtime:${Version.Room}"
        const val RoomCompiler = "androidx.room:room-compiler:${Version.Room}"
        const val RoomKtx = "androidx.room:room-ktx:${Version.Room}"
        const val WorkKtx = "androidx.work:work-runtime-ktx:${Version.Work}"
    }

    /**
     * Android相关依赖
     *
     * @author Qu Yunshuo
     * @since 4/24/21 4:02 PM
     */
    object Android {
        const val Junit = "junit:junit:${Version.Junit}"
        const val Material = "com.google.android.material:material:${Version.Material}"
    }

    /**
     * JetPack相关依赖
     *
     * @author Qu Yunshuo
     * @since 4/24/21 4:02 PM
     */
    object JetPack {
        const val ViewModel = "androidx.lifecycle:lifecycle-viewmodel-ktx:${Version.Lifecycle}"
        const val ViewModelSavedState =
            "androidx.lifecycle:lifecycle-viewmodel-savedstate:${Version.Lifecycle}"
        const val LiveData = "androidx.lifecycle:lifecycle-livedata-ktx:${Version.Lifecycle}"
        const val Lifecycle = "androidx.lifecycle:lifecycle-runtime-ktx:${Version.Lifecycle}"
        const val LifecycleCompilerAPT =
            "androidx.lifecycle:lifecycle-compiler:${Version.Lifecycle}"
        const val HiltCore = "com.google.dagger:hilt-android:${Version.Hilt}"
        const val HiltApt = "com.google.dagger:hilt-compiler:${Version.Hilt}"
    }

    /**
     * Kotlin相关依赖
     *
     * @author Qu Yunshuo
     * @since 4/24/21 4:02 PM
     */
    object Kotlin {
        const val Kotlin = "org.jetbrains.kotlin:kotlin-stdlib:${Version.Kotlin}"
        const val CoroutinesCore =
            "org.jetbrains.kotlinx:kotlinx-coroutines-core:${Version.Coroutines}"
        const val CoroutinesAndroid =
            "org.jetbrains.kotlinx:kotlinx-coroutines-android:${Version.Coroutines}"
        const val KotlinSerialization =
            "org.jetbrains.kotlinx:kotlinx-serialization-json:${Version.KotlinSerialization}"
    }

    /**
     * GitHub及其他相关依赖
     *
     * @author Qu Yunshuo
     * @since 4/24/21 4:02 PM
     */
    object GitHub {
        const val OkHttp = "com.squareup.okhttp3:okhttp:${Version.OkHttp}"
        const val OkHttpInterceptorLogging =
            "com.squareup.okhttp3:logging-interceptor:${Version.OkHttpInterceptorLogging}"
        const val Retrofit = "com.squareup.retrofit2:retrofit:${Version.Retrofit}"
        const val RetrofitConverterGson =
            "com.squareup.retrofit2:converter-gson:${Version.RetrofitConverterGson}"
        const val RetrofitConverterScalars =
            "com.squareup.retrofit2:converter-scalars:${Version.RetrofitConverterScalars}"
        const val Gson = "com.google.code.gson:gson:${Version.Gson}"
        const val MMKV = "com.tencent:mmkv-static:${Version.MMKV}"
        const val AutoSize = "com.github.JessYanCoding:AndroidAutoSize:${Version.AutoSize}"
        const val ARoute = "com.alibaba:arouter-api:${Version.ARoute}"
        const val ARouteCompiler = "com.alibaba:arouter-compiler:${Version.ARouteCompiler}"
        const val RecyclerViewAdapter =
            "com.github.CymChad:BaseRecyclerViewAdapterHelper:${Version.RecyclerViewAdapter}"
        const val EventBus = "org.greenrobot:eventbus:${Version.EventBus}"
        const val EventBusAPT = "org.greenrobot:eventbus-annotation-processor:${Version.EventBus}"
        const val PermissionX = "com.guolindev.permissionx:permissionx:${Version.PermissionX}"
        const val LeakCanary = "com.squareup.leakcanary:leakcanary-android:${Version.LeakCanary}"
        const val AutoService = "com.google.auto.service:auto-service:${Version.AutoService}"
        const val AutoServiceAnnotations =
            "com.google.auto.service:auto-service-annotations:${Version.AutoService}"
        const val Coil = "io.coil-kt:coil:${Version.Coil}"
        const val CoilGIF = "io.coil-kt:coil-gif:${Version.Coil}"
        const val CoilSVG = "io.coil-kt:coil-svg:${Version.Coil}"
        const val CoilVideo = "io.coil-kt:coil-video:${Version.Coil}"
        const val Toaster = "com.github.getActivity:Toaster:${Version.Toaster}"
        const val MagicIndicator =
            "com.github.hackware1993:MagicIndicator:${Version.MagicIndicator}"
        const val Okhttputils = "com.github.getActivity:EasyHttp:${Version.Okhttputils}"
        const val MPAndroidChart = "com.github.PhilJay:MPAndroidChart:${Version.MPAndroidChart}"
        const val BaseRecyclerViewAdapterHelper4 =
            "io.github.cymchad:BaseRecyclerViewAdapterHelper4:${Version.BaseRecyclerViewAdapterHelper4}"
        const val Serialport = "com.azhon:serialport:${Version.Serialport}"
        const val XLog = "com.elvishew:xlog:${Version.XLog}"
        const val rxjava = "io.reactivex.rxjava2:rxjava:${Version.rxjava}"
        const val rxandroid="io.reactivex.rxjava2:rxandroid:${Version.rxandroid}"
        const val GsonFactory="com.github.getActivity:GsonFactory:6.3"
    }

    /**
     * SDK相关依赖
     *
     * @author Qu Yunshuo
     * @since 4/24/21 4:02 PM
     */
    object SDK {
        const val TencentBugly = "com.tencent.bugly:crashreport:${Version.TencentBugly}"
        const val TencentBuglyNative =
            "com.tencent.bugly:nativecrashreport:${Version.TencentBuglyNative}"
        const val TencentTBSX5 = "com.tencent.tbs.tbssdk:sdk:${Version.TencentTBSX5}"
        const val GeTui = "com.getui:sdk:${Version.GeTui}"
        const val RabbitMq = "com.rabbitmq:amqp-client:${Version.RabbitMq}"


    }
}