Kev*_*der 5 android dependency-injection dagger-hilt
我正在尝试在我的 Android 应用程序中加入 Hilt。
我的设置目前如下所示:
App Gradle 模块中的应用:
@HiltAndroidApp
public class App extends Application {
@Inject DatabaseDriver driver;
@Override
public void onCreate() {
super.onCreate();
driver.initialize(this);
}
}
Run Code Online (Sandbox Code Playgroud)
我在 App Gradle 模块中的界面:
@Singleton
public interface DatabaseDriver {
void initialize(Context context);
}
Run Code Online (Sandbox Code Playgroud)
然后,我在 Database Gradle 模块中实现了DatabaseDriver,其中还声明了 Hilt 模块。
解析数据库驱动程序:
@Singleton
class ParseDatabaseDriver : DatabaseDriver {
override fun initialize(context: Context) {
registerSubClasses2()
Parse.initialize(
Parse.Configuration.Builder(context)
.applicationId(context.getString(R.string.server_app_id))
.clientKey(context.getString(R.string.server_client_key))
.server(context.getString(R.string.server_url))
.build()
)
val parseUser = ParseUser.getCurrentUser()
val parseACL = if (parseUser == null) ParseACL() else ParseACL(ParseUser.getCurrentUser())
parseACL.publicReadAccess = true
parseACL.publicWriteAccess = true
ParseACL.setDefaultACL(parseACL, true)
if (parseUser != null) ParseUser.getCurrentUser().acl = parseACL
}
}
Run Code Online (Sandbox Code Playgroud)
刀柄模块:
@Module
@InstallIn(SingletonComponent::class)
interface ParseDatabaseDriverModule {
@Binds
fun bindsDatabaseDriver(databaseDriverImpl: ParseDatabaseDriver): DatabaseDriver
}
Run Code Online (Sandbox Code Playgroud)
当尝试构建这个时,我收到以下错误:
如果没有 @Provides 注释的方法,则无法提供 DatabaseDriver
当我将所需内容移动到同一个 Gradle 模块中时,绑定似乎起作用了,但我不想这样做,因为我试图将域与持久层分开。
我不知道该怎么办..
请注意,App 模块是用 Java 编写的,DB 模块是用 Kotlin 编写的。
| 归档时间: |
|
| 查看次数: |
3240 次 |
| 最近记录: |