1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/jenly1314-MVVMFrame

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

MVVMFrame для Android — это быстрый фреймворк для разработки, основанный на компонентах архитектуры Google (теперь называемых JetPack). С помощью MVVMFrame создание проекта, основанного на архитектуре MVVM, становится проще и быстрее.

Архитектура

Фреймворк MVVMFrame основан на архитектуре MVVM.

Введение

Gradle:

  1. В файле Project/build.gradle или setting.gradle добавьте удалённый репозиторий:
repositories {
    //...
    mavenCentral()
    maven { url 'https://jitpack.io' }
}
  1. В файле Module/build.gradle добавьте зависимость:
// AndroidX
implementation 'com.github.jenly1314:mvvmframe:3.0.0'

Hilt и Room

Поскольку MVVMFrame внутренне зависит от Hilt и Room, необходимо добавить следующие обработчики аннотаций во время компиляции для автоматического создания соответствующего кода.

Текущая конфигурация является последней версией. Другие версии можно найти в разделе «Версии» или в соответствующих выпусках. Если вы используете версию 2.x, перейдите непосредственно к ветке 2.x.

В файле build.gradle корневого каталога проекта необходимо настроить плагин Hilt:

plugins {
    //...
    id 'com.google.dagger.hilt.android' version '2.51' apply false
}

Затем в файле app/build.gradle необходимо применить плагин Hilt и соответствующие зависимости:

plugins {
    //...
    id 'kotlin-kapt'
    id 'com.google.dagger.hilt.android'
}

dependencies{
    //...

    // hilt
    implementation "com.google.dagger:hilt-android:2.51"
    kapt "com.google.dagger:hilt-compiler:2.51"

    // room
    kapt "androidx.room:room-compiler:2.6.1"
}

Примечание: kapt используется для проектов Kotlin, а annotationProcessor — для Java.

Использование

Версия 3.x была полностью переписана с использованием Kotlin и подверглась рефакторингу. Все связанные с LiveData коды, которые использовались в предыдущих версиях 2.x, были удалены, и все они были заменены на Flow в версии 3.x. Версия 3.x более лаконична и настраиваема по сравнению с версией 2.x (если требуется использование в Compose, просто добавьте соответствующие зависимости пользовательского интерфейса Compose и немного инкапсулируйте). Рекомендуется использовать в новых проектах; если вы ранее использовали версию 2.x, рекомендуется выполнить обновление с осторожностью.

Если вы используете версию 2.x, пожалуйста, перейдите непосредственно в ветку 2.x. RoomDatabase>) { // TODO: Конфигурация RoomDatabase } }) .configOptions(object : AppliesOptions.ConfigOptions { override fun applyOptions(builder: Config.Builder) { // TODO: Конфигурация Config builder.httpLoggingLevel(HttpLoggingInterceptor.Level.BODY) } }) }

Затем в вашем проекте в файле AndroidManifest.xml через конфигурацию meta-data можно настроить глобальные параметры (подсказка: если у вас нет необходимости настраивать параметры, вы можете пропустить этот шаг):

<!-- MVVMFrame глобальные настройки -->
<meta-data android:name="com.king.mvvmframe.config.AppConfigModule"
           android:value="FrameConfigModule"/>

Здесь com.king.mvvmframe.config.AppConfigModule заменяется на ваш класс глобальных настроек.

Шаг 4. Настройка приложения:

 @HiltAndroidApp
 class YourApplication : BaseApplication() {
    //...

    override fun onCreate() {
        super.onCreate()
        // Если вы не используете первый способ инициализации BaseUrl в FrameConfigModule, вы также можете установить BaseUrl вторым способом (можно выбрать один из двух способов):
//        RetrofitHelper.getInstance().setBaseUrl(baseUrl)
     }
 }

Если по какой-то причине вы не можете наследовать от BaseApplication, вы также можете вызвать BaseApplication.initAppConfig в функции onCreate вашего пользовательского Application для инициализации.

Прочее

О Hilt

Hilt — это новый инструмент внедрения зависимостей в JetPack, основанный на Dagger2 (далее именуемый Dagger), но он отличается от Dagger. Для разработчиков Android Hilt можно сказать, что он специально разработан для Android.

Хотя Dagger for Android, который также предназначен для Android, может использовать @ContributesAndroidInjector для упрощения части шаблонного кода, он всё ещё кажется недостаточным. Поскольку слой компонентов по-прежнему требует самостоятельной разработки. Появление Hilt улучшило эту проблему.

Hilt значительно упрощает использование Dagger, избавляя нас от необходимости писать логику моста с помощью аннотации @Component. Однако это также ограничивает инъекцию, которая может начинаться только с нескольких фиксированных точек входа в Android.

Hilt в настоящее время поддерживает следующие классы Android:

  • Application (используя @HiltAndroidApp)
  • ViewModel (используя @HiltViewModel)
  • Activity
  • Fragment
  • View
  • Service
  • BroadcastReceiver

Пример Application (здесь мы используем BaseApplication):

@HiltAndroidApp
class YourApplication : BaseApplication() {
    //...
}

Пример ViewModel (здесь мы используем BaseViewModel):

@HiltViewModel
class YourViewModel : BaseViewModel() {
    //...
}

Другие точки входа объявляются с использованием аннотации @AndroidEntryPoint. Пример:

Пример Activity (здесь мы используем BaseActivity):

@AndroidEntryPoint
class YourActivity: BaseActivity() {
    //...
}

Пример Fragment (здесь мы используем BaseFragment):

@AndroidEntryPoint
class YourFragment: BaseFragment() {
    //...
}

Другие точки входа в основном аналогичны и не будут перечислены одна за другой. Более подробную информацию об использовании Hilt см. в официальном руководстве Hilt.

Об установке BaseUrl

В настоящее время существует два основных способа установки BaseUrl:

  1. Один из них заключается в настройке метаданных в Manifest для настройки FrameConfigModule и использовании {@link ConfigModule.Builder#baseUrl(String)} для настройки BaseUrl (настройка один раз, глобальная конфигурация).
  1. Другой способ — использовать RetrofitHelper {@link RetrofitHelper#setBaseUrl(String)} или {@link RetrofitHelper#setBaseUrl(HttpUrl)} для настройки BaseUrl (динамическая глобальная настройка, которая может быть настроена несколько раз, при условии наличия предварительных условий).

Оба метода настройки BaseUrl могут достичь цели. Но вы можете выбрать разные методы настройки в соответствии с различными сценариями.

Основные сценарии и выбор следующие:

Общие сценарии: для использования только одного неизменного BaseUrl.

Сценарий 1: Если конфигурация по умолчанию в этой библиотеке уже соответствует вашим потребностям, вам не нужно настраивать дополнительные параметры.
     Выбор: Рекомендуется использовать {@link RetrofitHelper#setBaseUrl(String)} или {@link RetrofitHelper#setBaseUrl(HttpUrl)}, чтобы инициализировать BaseUrl перед настройкой конфигурации фреймворка. Рекомендуется инициализировать его в пользовательском {@link Application#onCreate()} перед инициализацией конфигурации фреймворка.
Сценарий 2: Если конфигурация по умолчанию библиотеки не соответствует вашим требованиям, вам необходимо настроить некоторые параметры (например, требуется использовать RxJava).
     Выбор: рекомендуется использовать {@link ConfigModule.Builder#baseUrl(String)}, чтобы инициализировать BaseUrl при настройке пользовательских параметров.

Особые сценарии: для использования одного BaseUrl, но BaseUrl может измениться в процессе.

Сценарий 3: То же, что и общий сценарий, поэтому выбор также может быть таким же. Выбор: оба варианта возможны, но когда BaseUrl необходимо изменить в процессе, необходимо установить {@link RetrofitHelper#setDynamicDomain(boolean)} в значение true, чтобы поддерживать динамическое изменение BaseUrl.

Специальные сценарии: для поддержки нескольких BaseUrl и динамического изменения.

   Выбор: Этот сценарий выбора в основном включает другие методы, пожалуйста, обратитесь к {@link RetrofitHelper#putDomain(String, String)} и {@link RetrofitHelper#putDomain(String, HttpUrl)}.

Для получения более подробной информации об использовании см. app или непосредственно API help document.

Спутывание

В настоящее время все правила запутывания зависимостей MVVFrame можно увидеть в: ProGuard rules

Рекомендуемые ссылки

AppTemplate — шаблон приложения, созданный на основе MVVMFrame.

MVVMFrameComponent — компонентная схема, созданная на основе MVVMFrame.

EasyChat — приложение для обмена мгновенными сообщениями.

KingWeather — приложение прогноза погоды. EasyNote — это приложение для заметок, которое следует архитектуре Clean Architecture и использует Jetpack Compose.

Версия журнала

v3.0.0: 2024-03-03

  • Переход на использование Kotlin и рефакторинг кода.
  • Замена всех LiveData на Flow.
  • Обновление компилятора SDK до версии 34.
  • Обновление Gradle до версии v8.0.
  • Добавление зависимости от core-ktx (v1.12.0).
  • Добавление зависимости fragment-ktx (v1.6.2).
  • Добавление зависимостей, связанных с lifecycle-ktx (v2.7.0).
  • Обновление Okhttp до версии v4.12.0.
  • Обновление Hilt до версии v2.51.
  • Обновление Gson до версии v2.10.1.
  • Обновление Room до версии v2.6.1.
  • Обновление retrofit-helper до версии v1.1.0.

v2.2.1: 2022-04-21

  • Обновление Okhttp до версии v4.9.3.
  • Обновление Hilt до версии v2.41.
  • Обновление Gson до версии v2.9.0.

Подробнее о версиях.

Пожертвования

Если вам нравится MVVMFrame или вы считаете, что он вам помог, вы можете поддержать проект, поставив «Star». Ваша поддержка — моя мотивация. Спасибо! :smiley: Также вы можете отблагодарить автора чашкой кофе:

Обо мне

Мой блог GitHub Gitee CSDN Блог в саду
Блог Дженли jenly1314 jenly1314 jenly121 jenly

Свяжитесь со мной

WeChat Public Account Gmail Email QQ Email QQ Group QQ Group
Jenly666 jenly1314 jenly1314 20867961 64020761

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

MVVMFrame для Android — это фреймворк, созданный для быстрой разработки на основе официально выпущенного Google JetPack. Он упрощает создание проекта в модели MVVM. Развернуть Свернуть
MIT
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/jenly1314-MVVMFrame.git
git@api.gitlife.ru:oschina-mirror/jenly1314-MVVMFrame.git
oschina-mirror
jenly1314-MVVMFrame
jenly1314-MVVMFrame
master