gyps

A common Architecture for Android Applications developing based on MVVM,integrates many Open Source Projects( like Dagger-Hilt,Kotlin Flow,Coroutine,Glide,Retrofit... ),to make your developing quicker and easier.

Лицензия

Лицензия

Группа

Группа

io.github.hpuhsp
Идентификатор

Идентификатор

gyps
Последняя версия

Последняя версия

1.0.0
Дата

Дата

Тип

Тип

aar
Описание

Описание

gyps
A common Architecture for Android Applications developing based on MVVM,integrates many Open Source Projects( like Dagger-Hilt,Kotlin Flow,Coroutine,Glide,Retrofit... ),to make your developing quicker and easier.
Ссылка на сайт

Ссылка на сайт

https://github.com/hpuhsp/Gyps
Система контроля версий

Система контроля версий

https://github.com/hpuhsp/gyps/tree/master

Скачать gyps

Имя Файла Размер
gyps-1.0.0.pom
gyps-1.0.0-sources.jar 93 KB
Обзор

Как подключить последнюю версию

<!-- https://jarcasting.com/artifacts/io.github.hpuhsp/gyps/ -->
<dependency>
    <groupId>io.github.hpuhsp</groupId>
    <artifactId>gyps</artifactId>
    <version>1.0.0</version>
    <type>aar</type>
</dependency>
// https://jarcasting.com/artifacts/io.github.hpuhsp/gyps/
implementation 'io.github.hpuhsp:gyps:1.0.0'
// https://jarcasting.com/artifacts/io.github.hpuhsp/gyps/
implementation ("io.github.hpuhsp:gyps:1.0.0")
'io.github.hpuhsp:gyps:aar:1.0.0'
<dependency org="io.github.hpuhsp" name="gyps" rev="1.0.0">
  <artifact name="gyps" type="aar" />
</dependency>
@Grapes(
@Grab(group='io.github.hpuhsp', module='gyps', version='1.0.0')
)
libraryDependencies += "io.github.hpuhsp" % "gyps" % "1.0.0"
[io.github.hpuhsp/gyps "1.0.0"]

Зависимости

compile (42)

Идентификатор библиотеки Тип Версия
org.jetbrains.kotlin : kotlin-android-extensions-runtime jar 1.4.10
» unspecified jar
org.jetbrains.kotlin : kotlin-stdlib jar 1.4.10
com.google.android.material » material jar 1.2.1
androidx.core » core-ktx jar 1.3.2
androidx.appcompat » appcompat jar 1.2.0
androidx.recyclerview » recyclerview jar 1.1.0
androidx.constraintlayout » constraintlayout jar 2.0.4
androidx.vectordrawable » vectordrawable jar 1.1.0
androidx.navigation » navigation-fragment-ktx jar 2.3.2
androidx.navigation » navigation-ui-ktx jar 2.3.2
androidx.legacy » legacy-support-v4 jar 1.0.0
androidx.lifecycle » lifecycle-extensions jar 2.2.0
androidx.lifecycle » lifecycle-common-java8 jar 2.2.0
androidx.lifecycle » lifecycle-runtime-ktx jar 2.2.0
androidx.lifecycle » lifecycle-livedata-ktx jar 2.2.0
androidx.lifecycle » lifecycle-viewmodel jar 2.2.0
androidx.lifecycle » lifecycle-viewmodel-ktx jar 2.2.0
androidx.swiperefreshlayout » swiperefreshlayout jar 1.1.0
androidx.paging » paging-runtime jar 2.1.1
androidx.viewpager » viewpager jar 1.0.0
org.jetbrains.kotlinx : kotlinx-coroutines-android jar 1.3.7
org.jetbrains.kotlinx : kotlinx-coroutines-core jar 1.3.7
org.greenrobot : eventbus jar 3.2.0
androidx.room » room-runtime jar 2.2.5
androidx.room » room-ktx jar 2.2.5
android.arch.persistence.room » testing jar 1.1.1
com.github.bumptech.glide : glide jar 4.11.0
com.squareup.retrofit2 : retrofit jar 2.9.0
com.squareup.retrofit2 : converter-gson jar 2.9.0
com.squareup.okhttp3 : okhttp jar 4.3.0
com.squareup.okhttp3 : logging-interceptor jar 4.3.0
me.jessyan » retrofit-url-manager jar 1.4.0
com.google.dagger : hilt-android jar 2.28-alpha
androidx.hilt » hilt-lifecycle-viewmodel jar 1.0.0-alpha01
androidx.multidex » multidex jar 2.0.1
com.jakewharton.timber : timber jar 4.7.1
com.gyf.immersionbar » immersionbar jar 3.0.0
com.gyf.immersionbar » immersionbar-components jar 3.0.0
pub.devrel : easypermissions jar 3.0.0
com.blankj : utilcodex jar 1.29.0
androidx.databinding » viewbinding jar 4.0.1

Модули Проекта

Данный проект не имеет модулей.

Gyps 基于Google 最新AAC架构的移动端开发框架

The MVVM architecture mobile development framework based on the Kotlin language.Contains Retrofit、Coroutine-Flow、Dagger-Hilt、ViewBinding、Glide、ROOM、ARouter And Other commonly used library of tools.

全面支持androidX

Download JCenter Jitpack

主要技术实现

  • Retrofit 网络请求
  • 协程Coroutine及1.3.2发布后新增Flow库
  • ViewBinding 视图绑定
  • Dagger-Hilt 依赖注入
  • Glide V4版本 (Generated API使用)
  • Room 数据库
  • ARouter 路由框架(1.0.3版本后已移除,根据需要自行引入)
  • EventBus 事件处理
  • immersionbar 状态栏定制
  • easypermissions 权限处理
  • ...

特点

  • 网络可动态配置,支持域名动态切换、自定义拦截处理及日志打印策略。
  • 支持组件化方案,模块化动态配置。
  • 根据kotlin语言特性,提供多种扩展函数。
  • (呃...暂时就列这么多吧)

Usage

1、接入方式

1、直接将swallow模块作为Module引入。

2、添加远程依赖

  • 第一种:JCenter 旧方式,2022年2月份即将失效。
implementation 'com.fly:swallow:1.0.6'
...
allprojects {
		repositories {
			...
			maven { url 'https://jitpack.io' }
		}
	} 
  • 第二种方式

Add it in your root build.gradle at the end of repositories:

allprojects {
		repositories {
			...
			maven { url 'https://jitpack.io' }
		}
	}

Add the dependency

dependencies {
	        implementation 'com.github.hpuhsp:Gyps:Tag'
	}

2、配置build.gradle文件

  • 项目根目录下build.gradle下引入Dagger Hilt插件,gradle工具版本推荐4.0+
    dependencies {
        classpath "com.android.tools.build:gradle:4.0.1"
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
        // Dagger-Hilt
        classpath 'com.google.dagger:hilt-android-gradle-plugin:2.28-alpha'
    }
  • app或Module下build.gradle文件配置:
plugins {
    id 'com.android.application'
    id 'kotlin-android'
    id 'kotlin-android-extensions'
    id 'kotlin-kapt'
    id 'dagger.hilt.android.plugin'
}
android {
    ...
    // ViewBinding
    buildFeatures {
        viewBinding = true
    }
}

dependencies {
    implementation fileTree(dir: "libs", include: ["*.jar"])
    //=========== Dagger Hilt 依赖注入 ============//
    implementation rootProject.ext.dependencies["hilt-android"]
    implementation rootProject.ext.dependencies["hilt-lifecycle-viewmodel"]
    kapt rootProject.ext.dependencies["hilt-android-compiler"]
    kapt rootProject.ext.dependencies["hilt-compiler"]
    // Glide
    kapt rootProject.ext.dependencies["glide-compiler"]
    ....
}

3、Dagger Hilt依赖注入

  • 程序入口处添加@HiltAndroidApp注解
@HiltAndroidApp
class MyApplication : BaseApplication() {
    override fun onCreate() {
        super.onCreate()
        // 可根据编译环境选择日志打印策略
        initLogger(true)
    }
}

并在项目AndroidManifest.xml中引入

  <application
        android:name=".MyApplication"
        ....>

4、MVVM模式下进行开发

1b622821b9f386ba76924d2a3d551fe7.png 基于Dagger-Hilt依赖注入实现标准化、松耦合等特性MVVM架构下进行开发。如:Activity/Fragment 需要添加@AndroidEntryPoint注解。本地化存储及注入类全局初始化策略可以参考设备项目‘包名.app/’目录下具体实现类。功能页面开发构成方式可以参见Gyps项目主页健康上报功能实现方式。

5、全局文件配置(可选)

ac5806ded0961f148766fb21ad406b23.png

  • AppLifecycleImpl生命周期实现类
@Singleton
class AppLifecycleImpl : AppLifecycle {
    override fun attachBaseContext(base: Context) {

    }

    override fun onCreate(application: Application) {
        // Module下应用级初始化操作
        // initARouter()
    }

    /**
     * 退出APP
     */
    override fun onTerminate(application: Application) {
    }
}
  • GlobalConfiguration 全局配置文件+AndroidManifest中注册
@Singleton
class GlobalConfiguration : ConfigModule {
    override fun applyOptions(context: Context?, builder: GlobalConfigModule.Builder) {
        // App域名、网络参数配置
        builder.baseurl(object : BaseUrl {
            override fun url(): HttpUrl? {
                return "http://www.github.com/".toHttpUrlOrNull()
            }
        })
        builder.globalHttpHandler(HttpHandlerImpl())
    }

    /**
     * 添加子Module的生命周期监听
     */
    override fun injectModulesLifecycle(context: Context, lifecycleList: ArrayList<AppLifecycle>) {
        lifecycleList.add(AppLifecycleImpl())
    }
}
// "包名"替换为项目实际包名
<meta-data
    android:name="{包名}.app.GlobalConfiguration"
    android:value="ConfigModule" />
  • HttpHandlerImpl 网络请求参数配置及拦截处理
@Singleton
class HttpHandlerImpl : GlobalHttpHandler {

    override fun onHttpResultResponse(
        httpResult: String?,
        chain: Interceptor.Chain,
        response: Response
    ): Response {
        // 此处可以进行token校验并进行相关处理
        return response
    }

    override fun onHttpRequestBefore(chain: Interceptor.Chain, request: Request): Request {
        return chain.request().newBuilder()
            .header("Content-Type", "application/json;charset=UTF-8")
            .addHeader("platform", "Android")
            .addHeader("token","xxxxxxxxxxxxxxxxx")
            .addHeader("udid","231ddsad1421x2312sdmdsads22")
            .build()
    }

    /**
     * 动态切换域名访问
     */
    override fun redirectRequest(
        chain: Interceptor.Chain,
        request: Request,
        exception: Exception
    ): Response? {

        return null
    }
}
  • Glide 扩展API
@GlideExtension
class MyGlideExtension private constructor() {
    companion object {
        private const val USER_AVATAR_SIZE = 168

        /**
         * 加载用户头像
         */
        @JvmStatic
        @GlideOption
        fun userAvatar(options: BaseRequestOptions<*>): BaseRequestOptions<*> {
            return options
                .centerCrop()
                .override(USER_AVATAR_SIZE)
        }
    }
}

Версии библиотеки

Версия
1.0.0