Saya mendapatkan catatan ini di build setiap kali saya melakukan injeksi ke kelas kotlin (btw, saya memiliki proyek android campuran dengan kotlin dan java).
Misalnya, setelah tugas gradle ini: compileStagingDebugJavaWithJavac
(StagingDebug adalah varian build saya), saya mendapatkan pesan ini:
"Catatan: Membuat MembersInjector atau Pabrik untuk com.packageNameXXX.CourseDiscoveryMapFragment. Lebih suka menjalankan dagger processor di atas kelas itu."
Kode CourseDiscoveryMapFragment saya dapat dilihat di sini:
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)
}
Dan ActivityComponent saya adalah:
@ActivityScope
@Subcomponent(modules = ActivityModule.class)
public interface ActivityComponent {
void inject(BaseActivity baseActivity);
void inject(CourseDiscoveryMapFragment fragment);
//Exposed to sub-graphs.
Activity activity();
}
Jadi, saya memiliki komponen dagger dan modul yang ditulis di Java, sementara injeksi dagger di Kotlin.
Apakah ini sesuatu yang harus saya khawatirkan?
Terima kasih.
Jawaban:
Saya khawatir Anda tidak bisa. Mengapa tidak menulis modul dependensi di Kotlin?
Untuk menulis modul dependensi di java, Anda perlu mengonfigurasi skrip Gradle Anda dengan cara ini:
Namun, untuk menulis modul dependensi di Kotlin, Anda harus mengonfigurasi skrip Gradle Anda dengan cara ini:
dagger membutuhkan alat pemrosesan anotasi untuk menghasilkan kode ketergantungan selama proses kompilasi. Jadi saya rasa Anda hanya perlu menggunakan APT (alat pengolah anotasi) yang benar sesuai dengan bahasa yang benar.
sumber