我已经定义了一个 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/' <--aidl文件中声明的包将是'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/
not src/
.
如果您根据尝试创建接口的位置(例如 framework/base/)转到父目录之一,您将在此文件中找到名为 Android.mk 的该目录的 make 文件,您应该在适当的位置添加 .aidl 名称(由于评论,很容易理解确切的位置)然后构建。将生成“你的界面”.java。
尝试清理项目,这通常有助于解决这些类型的错误。还要检查它是否不包含错误,因为错误会阻止某些编译步骤的完成。
假设您使用 Eclipse,请查看“控制台”视图(窗口 > 显示视图 > 控制台),它应该包含编译过程的输出。