当我构建我的项目时,我收到以下错误:
错误:com.android.builder.merge.DuplicateRelativeFileException:找到多个与OS无关的路径'META-INF/app_debug.kotlin_module'的文件
这是我的build.gradle文件
buildscript {
repositories {
maven { url 'https://maven.fabric.io/public' }
google()
}
dependencies {
classpath 'io.fabric.tools:gradle:1.+'
}
}
apply plugin: 'com.android.application'
apply plugin: 'io.fabric'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
android {
compileSdkVersion 26
buildToolsVersion "26.0.1"
defaultConfig {
applicationId "com.e9innovation.infrastructure"
multiDexEnabled true
minSdkVersion 19
targetSdkVersion 26
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
vectorDrawables.useSupportLibrary true
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
debug {
signingConfig signingConfigs.debug
}
}
signingConfigs {
debug {
storeFile file('../keystores/debug.keystore')
storePassword …Run Code Online (Sandbox Code Playgroud) android kotlin android-studio build.gradle android-gradle-plugin
我正在尝试在我的项目中实现 ViewModel Factory,但在使用 Dagger 2 实现它时遇到一些问题。我提供了必要的代码,以便您可以查看并让我知道建议。
我有所有需要提供的方法。另外我想提一下,我正在尝试通过 ViewModelFactory 将参数(存储库)传递给我的 ViewModel 类,这就是我收到错误的地方。
这是我正在使用的所有课程:
HomeViewModel.kt
class HomeViewModel @Inject constructor(
private val categoriesRepository: CategoriesRepository) : ViewModel() {
val categories by lazyDefferd {
categoriesRepository.getCategories()
Log.d("All_Categories", "")
}
}
Run Code Online (Sandbox Code Playgroud)
HomeViewModelFactory.kt
@Suppress("UNCHECKED_CAST")
@Singleton
class HomeViewModelFactory @Inject constructor
(private val viewModelsMAp: Map<Class<out ViewModel>, @JvmSuppressWildcards Provider<ViewModel>>)
: ViewModelProvider.Factory {
override fun <T : ViewModel?> create(modelClass: Class<T>): T {
val creator = viewModelsMAp[modelClass] ?: viewModelsMAp.entries.firstOrNull {
modelClass.isAssignableFrom(it.key)
}?.value ?: throw ViewModelNotFound()
try {
return creator.get() as T
} catch …Run Code Online (Sandbox Code Playgroud)