Java Kotlin支持AIDL吗?

Java Kotlin支持AIDL吗?,java,android,kotlin,aidl,Java,Android,Kotlin,Aidl,我有一个简单的AIDL定义,我想在Kotlin代码中使用,但当它生成时,会显示所有使用接口的变量的未解析引用错误。但是相同的AIDL在Java代码中没有问题。科特林支持吗?如何解决 这里是src/main/AIDL中的我的AIDL/ //ServiceInterface.aidl 包com.example.test; 接口服务接口{ 无效测试(字符串arg1); } 活动代码是 导入android.content.ComponentName 导入android.content.Context

我有一个简单的AIDL定义,我想在Kotlin代码中使用,但当它生成时,会显示所有使用接口的变量的未解析引用错误。但是相同的AIDL在Java代码中没有问题。科特林支持吗?如何解决 这里是src/main/AIDL中的我的AIDL/

//ServiceInterface.aidl
包com.example.test;
接口服务接口{
无效测试(字符串arg1);
}
活动代码是

导入android.content.ComponentName
导入android.content.Context
导入android.content.Intent
导入android.content.ServiceConnection
导入android.os.Bundle
导入android.os.IBinder
导入android.os.RemoteException
导入android.util.Log
导入androidx.appcompat.app.appcompat活动
导入com.swiftytime.clientappcommunication.R
导入com.example.test.ServiceInterface
类MainActivity:AppCompatActivity(){
var mServiceAidl:ServiceInterface?=null
var错误绑定=错误
private val mConnection:ServiceConnection=对象:ServiceConnection{
覆盖服务连接(类名:组件名,服务:IBinder){
试一试{
MSServiceAIDL=ServiceInterface.Stub.asInterface(服务)
Log.e(“应用程序”、“附件”)
}catch(e:RemoteException){
}
}
覆盖服务断开连接(类名称:组件名称){
mServiceAidl=null
Log.e(“应用程序”,“断开连接”)
}
}
私人娱乐服务(){
val intent=intent().apply{
组件=组件名称(
“com.example.test”、“com.example.test.MyService”
)
}
装订服务(
意图
mConnection,Context.BIND\u自动创建
)
错误绑定=正确
Log.e(“应用程序”、“绑定”)
}
私家乐双宾得服务(){
如果(绑定错误){
解除绑定服务(mConnection)
错误绑定=错误
Log.e(“应用程序”,“解除绑定”)
}
}
重写创建时的乐趣(savedInstanceState:Bundle?){
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
多宾德服务()
}
}
这是一个错误

[ERROR] [org.gradle.api.Task] e: /Volumes/Projects/AndroidProject/ClientAppCommunication/app/src/main/java/com/example/test/MainActivity.kt: (16, 23): Unresolved reference: ServiceInterface

我将AIDL与Kotlin一起使用,我拥有的是用Java编写的接口,定义的接口使用的所有模型类都是用Kotlin编写的,它工作得非常好。 例如我有I*Subscriber.aidl和方法

void onSomeEventHappened(in AidlEvent event);
还有AidlEvent类的.aidl文件和.kt文件

AidlEvent.aidl文件

// AidlEvent.aidl

parcelable AidlEvent;
AidlEvent.kt

data class AidlEvent(
    val eventType: Int,
    val eventMessage: String):
        Parcelable {
    // add parcelable methods
}

我不确定您是否能够在Kotlin中编写.aidl接口,但还没有做到这一点。如果您需要在Java中编写几个方法,这应该不是问题,因为您不需要在Java中实现它们,您只需声明它们。

几个小时后,我发现问题是buildToolsVersion 29.0.0为生成的Java文件生成错误路径,我提交了

只需更改为BuildToolsVersion28.0.3即可解决此问题

更新:
问题已解决,现在可以在
buildtoolsversion29.0.1

中使用,谢谢您的回答。我对用java和所有其他东西定义接口没有问题。我的问题是我不能在Kotlin代码中使用。例如,当调用此
ServiceInterface.Stub.asInterface(service)
时,IDE没有显示任何问题,但在构建应用程序时,它表示未解决的引用:ServiceInterface。请分享如何用Kotlin代码初始化您的服务。谢谢