我定义了一个 AIDL android 接口,以提供来自其他应用程序的服务。
我的问题是,在我的项目中,Android 不会从此 AIDL 生成 Java 文件。 请注意,该项目编译并运行良好。但是,如果我将此 AIDL 文件移动到另一个项目,Android 会生成 Java 文件。
我不知道在哪里可以调试此类错误,也不知道在哪里可以阅读有关此问题的日志。
有人可以帮助我吗?
我遇到了同样的问题,并且在 Android Studio 上工作得很好。有两种方法可以解决这个问题。
方法一:
将 AIDL 文件放在 src/main/aidl 包下,以遵循 gradle 构建的默认源设置。
这是简单的方法,但并不聪明。
方法二:
将aidl 文件保存在您的自定义包下。
在build.gradle文件中添加源设置映射,如下
sourceSets {
main {
aidl.srcDirs = ['src/main/java']
}
}
按照上述设置后,不要忘记清理并重建。
更多信息请参考这里,
https://issuetracker.google.com/issues/36972230
我遇到了类似的问题。使用 Android Studio,该文件需要位于特定位置,除非您在 Gradle 中覆盖它。
我必须将aidl文件放在'src/main/aidl/example/package/name/'中<-- The declared package in the aidl file would be 'package example.package.name'.
它要求文件位于特定的aidl文件夹中,并且具有与aidl中声明的包名称匹配的文件夹结构。我在这里找到了最初的提示:https://code.google.com/p/android/issues/detail?id=56328
Eclipse 直接在
.aidl
文件 中显示错误,因此请先检查您的文件。
我遇到了类似的问题,并发现了我的问题:我在接口函数中添加了 public
前缀。那是错误的。例如:
package com.example.phone.service;
interface IService {
public void placeCall(String a, in String b, in String c);
}
应该是:
package com.example.phone.service;
interface IService {
void placeCall(String a, in String b, in String c);
}
不要忘记
.java
生成的文件位于gen/
而不是src/
。
尝试清理项目,这通常有助于解决这些类型的错误。另请检查它是否不包含错误,因为错误可能会阻止某些编译步骤的完成。
假设您使用 Eclipse,查看“控制台”视图(窗口 > 显示视图 > 控制台),其中应包含编译过程的输出。
如果您转到父目录之一,具体取决于您尝试创建接口的位置,例如framework/base/,您将找到该目录的名为Android.mk的make文件 在此文件中,您应该在适当的位置添加 .aidl 名称(由于注释,很容易准确理解位置),然后构建。将生成“您的界面”.java。
如果使用 AGP 8
buildFeatures {
aidl = true
}
https://developer.android.com/build/releases/past-releases/agp-8-0-0-release-notes#default-changes