Мультимодульный проект Android не может найти классы Kotlin между модулями - PullRequest
0 голосов
/ 16 ноября 2018

Моя среда:

  • Android Studio 3.3
  • Плагин Gradle: 3.2.0
  • Версия Gradle: 4.10.1
  • Kotlin 1.2.71 (я тоже пробовал 1.3.10)

Кодовая база разделена на два репозитория git. Есть основной репо, а затем основной репо. Модуль A живет в основном репо в виде библиотеки, компилируется в AAR и публикуется через maven. Он содержит код Kotlin с typealias es и расширениями. Он прекрасно компилируется, и когда я анализирую AAR в Android Studio, файл classes.jar показывает класс с неповрежденными typealiases, файлами классов и т. Д.

Тогда у меня есть модуль B в основном репо. Он имеет класс Kotlin Activity, который использует несколько классов Kotlin из модуля A.

Когда я пытаюсь скомпилировать код, я получаю неразрешенные ссылки на некоторые из типов и классов.

ПРИМЕЧАНИЕ # 1: перед перемещением модуля A в репозиторий ядра (как часть рефакторинга приложения) все это без проблем скомпилировано в главном репо.

ПРИМЕЧАНИЕ # 2: другие модули в репозитории ядра скомпилированы в AAR, загружены во внутренний репозиторий Maven и правильно извлечены и скомпилированы модулем B. Так что, насколько я могу судить, это не конвейер maven.

ПРИМЕЧАНИЕ # 3: в каждом модуле применяются следующие строки:

apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'

dependencies {
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:${app.kotlinVersion}"
    testImplementation "org.jetbrains.kotlin:kotlin-test-junit:${app.kotlinVersion}"
    kapt "androidx.databinding:databinding-compiler:${app.androidPluginVersion}"
}

apply plugin: 'org.jetbrains.kotlin.android.extensions'
androidExtensions {
    experimental = true
}

Если я перенесу соответствующий пакет из модуля A в модуль B, то он скомпилируется нормально. Но соответствующий пакет используется во многих модулях, поэтому я не могу оставить его в модуле B.

Любые идеи о том, почему я получаю эти неразрешенные ошибки ссылок во время компиляции?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...