Estou recebendo esta nota na compilação sempre que injeto em uma classe kotlin (btw, eu tenho um projeto android misto com kotlin e java).
Por exemplo, após esta tarefa gradle: compileStagingDebugJavaWithJavac
(StagingDebug é minha variante de construção), recebo esta mensagem:
"Nota: Gerando um MembersInjector ou Factory para com.packageNameXXX.CourseDiscoveryMapFragment. Prefere executar o processador do punhal sobre essa classe."
Meu código CourseDiscoveryMapFragment pode ser visto aqui:
class CourseDiscoveryMapFragment : Fragment(){
@Inject
lateinit var presenter: CourseDiscoveryMapPresenter
lateinit var mapView: MapView
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
val view = inflater.inflate(R.layout.fragment_discovery_map, container, false)
MapsInitializer.initialize(activity)
mapView = view.mapView
mapView.onCreate(savedInstanceState?.getBundle(BUNDLE_KEY_MAP_STATE))
(activity as BaseActivity)
.activityComponent.inject(this)
}
E meu ActivityComponent é:
@ActivityScope
@Subcomponent(modules = ActivityModule.class)
public interface ActivityComponent {
void inject(BaseActivity baseActivity);
void inject(CourseDiscoveryMapFragment fragment);
//Exposed to sub-graphs.
Activity activity();
}
Então, eu estou tendo componentes e módulos de punhal escritos em Java, enquanto tenho injeções de punhal no Kotlin.
É com isso que eu deveria me preocupar?
Obrigado.
Respostas:
Eu tenho medo que você não possa. Por que não escrever módulos de dependência no Kotlin?
Para escrever módulos de dependência em java, você precisa configurar seu script Gradle desta maneira:
Mas, para escrever módulos de dependência no Kotlin, você deve configurar seu script Gradle desta maneira:
O punhal precisa da ferramenta de processamento de anotação para gerar o código de dependência durante o processo de compilação. Então eu acho que você só precisa usar o APT (ferramenta de processamento de anotação) certo, de acordo com o idioma certo.
fonte