kotlin - 将 java 类迁移到 Kotlin - 无法解析符号注释类
问题描述
安卓工作室 3.4.2
构建.gradle:
buildscript {
ext.kotlin_version = '1.3.41'
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.4.2'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
在 app/build.gradle 中:
def AAVersion = '4.6.0'
def KOTLIN_COROUTINE_VERSION = '1.2.1'
dependencies {
annotationProcessor "org.androidannotations:androidannotations:$AAVersion"
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
implementation('com.crashlytics.sdk.android:crashlytics:2.7.0@aar') { transitive = true; }
implementation 'com.google.android.material:material:1.1.0-alpha07'
implementation 'com.google.code.gson:gson:2.8.5'
implementation "org.androidannotations:androidannotations-api:$AAVersion"
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:$KOTLIN_COROUTINE_VERSION"
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:$KOTLIN_COROUTINE_VERSION"
}
我有活动(java类)注释org.androidannotations.annotations.EActivity
这里片段:
import android.app.Activity;
import android.os.Bundle;
import org.androidannotations.annotations.EActivity
@EActivity
public class LoginActivity extends Activity {
}
另一个 java 活动 ( SplashActivity.java ) 像这样调用LoginActivity
它:
import android.app.Activity;
import android.os.Bundle;
import org.androidannotations.annotations.EActivity
@EActivity
public class SplashActivity extends Activity {
Intent intent = new Intent(thisActivity, LoginActivity_.class);
startActivity(intent);
很好,它工作正常。
现在我只将LoginActivity迁移到 Kotlin 类(LoginActivity.kt
)
像这样:
import org.androidannotations.annotations.Background
import org.androidannotations.annotations.EActivity
@EActivity
open class LoginActivity : Activity() {
}
现在SplashActivity.java在这一行有编译错误:
Intent intent = new Intent(thisActivity, LoginActivity_.class);
错误信息:
Cannot resolve symbol 'LoginActivity_'
PS如果我删除“_”而不是编译成功:
Intent intent = new Intent(thisActivity, LoginActivity.class);
但我需要使用LoginActivity_
解决方案
您必须使用kapt
而不是annotationProcessor
处理 Kotlin 文件。任何注释处理器可能会或可能不会正确处理它们;androidannotations
特别是有关于 Kotlin 支持的文档。
推荐阅读
- c# - 如何在异步方法中休眠或阻止执行。Thread.Sleep 不起作用
- python - 如何使用python将数据从excel复制并粘贴到另一个excel
- android - Android - 在视图中包装按钮
- python - Cplex 错误:添加微不足道的不可行线性约束
- typescript - Ionic v5:来自 iFrame 的链接不会在 iOS 上加载
- asynchronous - 缓冲文件以将文件流发送到后端
- javascript - jQuery/Javascript 无法获得“检查”按钮来删除附加列表项的名称文本
- javascript - 带有 ImageBackground 组件的 SafeAreaView 覆盖顶部标题
- here-api - 地理可视化 API 和 JavaScript 3.1 SDK 不兼容可能导致 Choropleth(datalense)地图?
- reactjs - 检测在 slate-react 文本编辑器中选择了哪个节点