在库(aar)中使用Android Hilt

4
我使用Hilt创建了一个库。在独立应用中运行良好,但当我尝试将其集成到客户端应用程序中时,它开始报错。
java.lang.RuntimeException: Unable to start activity ComponentInfo{}: java.lang.IllegalStateException: Hilt Activity must be attached to an @HiltAndroidApp Application. Did you forget to specify your Application's class name in your manifest's <application />'s android:name attribute?
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3516)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3668)
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)

可能是在要求客户端应用程序使用 Hilt 进行实现,但我的顾虑如下:

  1. 我不希望客户端了解 Hilt 的任何信息,
  2. 我无法要求客户端集成 Hilt。

Hilt 是否已经支持 AAR 文件?

1个回答

2
您无法这样做。正如堆栈跟踪所指定的那样,
Hilt Activity必须附加到@HiltAndroidApp应用程序
为了开始生成注入代码,应用程序类必须使用@HiltAndroidApp注释。如果没有该注释且未将Hilt作为项目依赖项导入,则注入根本不会启动。 在库中使用Hilt不是一个好习惯,因为您要么处理不支持Hilt的情况,要么强制您的库用户更改自己的架构以适应您的库。
以下是有关此主题的一些反馈意见。 https://github.com/google/dagger/issues/2132#issuecomment-704546736

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接