Моя среда:
- 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.
Любые идеи о том, почему я получаю эти неразрешенные ошибки ссылок во время компиляции?