Mar*_*n W 6 android gradle aidl
我有一个项目,包括多个gradle模块(插件com.android.library)相互引用(树,而不是平面).我强烈地使用AIDL,因此我在另一个模块(modB)的AIDL接口中引用来自一个模块(modA)的AIDL接口.
MODA/src目录/主/ AIDL/MODA/foo.aidl:
package modA;
interface foo {
void modAcall();
}
Run Code Online (Sandbox Code Playgroud)
商业方法/ src目录/主/ AIDL /商业方法/ bar.aidl:
package modB;
import modA.foo;
interface bar {
foo modBcall();
}
Run Code Online (Sandbox Code Playgroud)
商业方法/的build.gradle:
dependencies {
compile project(':modA')
}
Run Code Online (Sandbox Code Playgroud)
我可以在modB中的AIDL文件中引用modA的parcelables,我可以在modB中的java代码中引用modA的接口,但不能在modB中的AIDL中引用.而是couldn't find import for class
由aidl工具显示错误消息.
我注意到.aar文件也不包含库的aidl接口的信息,只列出了parcelables.我想这与上述问题的原因相同.
由于我已经将aidl文件放在一个地方,我不想将它们复制到另一个子项目,因为在这种情况下必须手动复制更改.我也不喜欢使用符号链接的想法,因为修改modB的src目录以包含来自modA的东西是错误的.
我找到了解决方案.Android gradle构建工具中有一个明显没有记录的功能,可以将任意的aidl文件包含在输出.aar文件中.这使得可以在其他子项目中引用它们.
// In modA build.gradle
android {
aidlPackageWhiteList "src/main/aidl/foo.aidl"
}
Run Code Online (Sandbox Code Playgroud)
这远非理想,但至少可用于解决我的问题.
归档时间: |
|
查看次数: |
974 次 |
最近记录: |