android-studio找不到在课堂上使用的aidl接口

aic*_*ngm 7 android intellij-idea aidl android-studio

我有一个在aidl中定义的接口,但我无法扩展它或以任何方式找到它.ide告诉我:无法解析符号'KeyEventListener' 任何想法如何解决这个问题?

其他信息:

  • KeyEventListener是KeyEventListener.aidl中定义的接口的名称
  • KeyEventListenerImpl是扩展接口Stub的类
  • KeyEventListener只包含一个名为'void doIt();'的方法 并且格式正确;

我知道android-studio有点像前阿尔法,但非常喜欢它,如果有人能阻止我的话,我会非常高兴!

在此输入图像描述

zom*_*ega 15

如果到了 2023 年,你从 gradle 7 切换到 8,那么我可能会有一个解决方案。

有一个名为buildFeatures.aidl的 gradle 属性。编译aidl文件需要正确。在 gradle 版本 7 中,默认值为 true。但默认值在 gradle 8 中已更改为 false

因此,如果您的 aidl 文件位于默认应用程序模块中,您需要编辑app/build.gradle。请不要复制/粘贴,而是将“aidl true”行放在文件中的正确位置。层次结构是这样的:

android {
    buildFeatures {
        aidl true
    }
}
Run Code Online (Sandbox Code Playgroud)


小智 11

你可能最好看一下Android 的Gradle插件用户指南.

默认情况下,Gradle需要特定的目录结构.如果你想让Gradle使用大多数Android开发人员习惯的目录结构,你需要将以下内容(来自上述链接)放在"android"块中.

sourceSets {
    main {
        manifest.srcFile 'AndroidManifest.xml'
        java.srcDirs = ['src']
        resources.srcDirs = ['src']
        aidl.srcDirs = ['src']
        renderscript.srcDirs = ['src']
        res.srcDirs = ['res']
        assets.srcDirs = ['assets']
    }
}
Run Code Online (Sandbox Code Playgroud)

完成此操作后,请进行清洁和重建以确保安全.

就个人而言,我只是调整我的项目以适应新的惯例.

  • 那是正确的.如果您正在使用新结构,请记住aidl文件现在位于src/main/aidl而不是src/main/java. (4认同)

Nar*_*aki 10

在我的情况下Clean,Rebuild项目解决了我的问题.