"Віддайте перевагу запускати кинджальний процесор замість цього класу" в Котліні


124

Я отримую цю замітку в збірці всякий раз, коли я роблю введення в клас kotlin (btw, у мене є змішаний андроїд-проект із kotlin та java).

Наприклад, після цього завдання Gradle: compileStagingDebugJavaWithJavac(StagingDebug - мій варіант збірки), я отримую це повідомлення:

"Примітка. Генерування MembersInjector або Factory для com.packageNameXXX.CourseDiscoveryMapFragment. Віддайте перевагу замість цього запустити процесор кинджала над цим класом."

Мій код CourseDiscoveryMapFragment можна побачити тут:

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)
}

І мій ActivityComponent :

@ActivityScope
@Subcomponent(modules = ActivityModule.class)
public interface ActivityComponent {

    void inject(BaseActivity baseActivity);

    void inject(CourseDiscoveryMapFragment fragment);

    //Exposed to sub-graphs.
    Activity activity();
}

Отже, у мене складені кинджальні компоненти та модулі, написані на Java, а інжекція кинджалу - у Котлін.

Це щось, про що я повинен хвилюватися?

Дякую.


Чи можете ви опублікувати всю помилку / попередження, а також код, пов’язаний з цим?
marcospereira

4
Питання потребує більш детальної інформації. Ви в основному написали запит google як запитання.
Джейсон Мінард

@marcospereira Редаговано! Дякую!
Фабіо Карбалло

4
Гей, ти знайшов рішення чи, можливо, причину для цього попередження?
wojciech_maciejewski

3
Ось відповідь: github.com/square/dagger/isissue/537
R. Zagórski

Відповіді:


5

Боюся, ти не можеш. Чому б не написати модулі залежності в Котліні?

Щоб писати модулі залежності в java, вам потрібно налаштувати свій сценарій Gradle таким чином:

 compile 'com.google.dagger:dagger:2.8'
 apt 'com.google.dagger:dagger-compiler:2.8'

Але, щоб записати модулі залежності в Kotlin, слід налаштувати свій сценарій Gradle таким чином:

compile 'com.google.dagger:dagger:2.8' 
kapt 'com.google.dagger:dagger-compiler:2.8'

кинджалу потрібен інструмент обробки анотацій для генерації коду залежності під час процесу компіляції. Тому я думаю, вам просто потрібно використовувати правильний APT (інструмент обробки анотацій) відповідно до потрібної мови.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.