MVVMFrame для Android — это быстрый фреймворк для разработки, основанный на компонентах архитектуры Google (теперь называемых JetPack). С помощью MVVMFrame создание проекта, основанного на архитектуре MVVM, становится проще и быстрее.
Фреймворк MVVMFrame основан на архитектуре MVVM.
repositories {
//...
mavenCentral()
maven { url 'https://jitpack.io' }
}
// AndroidX
implementation 'com.github.jenly1314:mvvmframe:3.0.0'
Поскольку 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 — это новый инструмент внедрения зависимостей в JetPack, основанный на Dagger2 (далее именуемый Dagger), но он отличается от Dagger. Для разработчиков Android Hilt можно сказать, что он специально разработан для Android.
Хотя Dagger for Android, который также предназначен для Android, может использовать @ContributesAndroidInjector
для упрощения части шаблонного кода, он всё ещё кажется недостаточным. Поскольку слой компонентов по-прежнему требует самостоятельной разработки. Появление Hilt улучшило эту проблему.
Hilt значительно упрощает использование Dagger, избавляя нас от необходимости писать логику моста с помощью аннотации @Component
. Однако это также ограничивает инъекцию, которая может начинаться только с нескольких фиксированных точек входа в Android.
Пример 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:
- Один из них заключается в настройке метаданных в Manifest для настройки FrameConfigModule и использовании {@link ConfigModule.Builder#baseUrl(String)} для настройки BaseUrl (настройка один раз, глобальная конфигурация).
- Другой способ — использовать 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
Если вам нравится MVVMFrame или вы считаете, что он вам помог, вы можете поддержать проект, поставив «Star». Ваша поддержка — моя мотивация. Спасибо!
Также вы можете отблагодарить автора чашкой кофе:
Мой блог | GitHub | Gitee | CSDN | Блог в саду |
---|---|---|---|---|
Блог Дженли | jenly1314 | jenly1314 | jenly121 | jenly |
WeChat Public Account | Gmail Email | QQ Email | QQ Group | QQ Group |
---|---|---|---|---|
Jenly666 | jenly1314 | jenly1314 | 20867961 | 64020761 |
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )