我有一个包含多个AIDL文件的服务。举一点,我刚刚在.java文件中添加了一个自定义对象,作为接口的一部分作为“in”参数,并包含带有parcelable声明的.aidl。
构建失败,并显示一条错误,指出自定义的Parcelable java类未定义。
知道为什么Android Studio(或命令行的gradle)会忽略java类定义? java类实现了Parcelable接口以及静态CREATOR。
构建过程从aidl文件生成java文件,但原始java类不会复制到该目录中。虽然我承认这可能不是Android Studio构建过程的工作方式,但它是android-x86项目构建的方式。
当然其他人已经看到Android Studio没有构建Parcelable对象,并找到了解决方案......?
答案 0 :(得分:0)
我刚刚用parcelable类编译如下。
例如,
app> java> com.sample.pojo.parcelable> Item.java
app> aidl> com.sample.pojo.parcelable> Interface.aidl
app> aidl> com.sample.pojo.parcelable> Item.aidl
确保Interface.aidl在代码中导入com.sample.pojo.parcelable.Item。
答案 1 :(得分:0)
我在Android Studio中也遇到了类似的问题,因为@JCampy正确地说过:“ Eclipse不会像我期望的那样在Java文件上进行复制”。因此,要解决此问题,请复制其他应用程序/服务分发的AIDL文件+ Parcelable java源代码,然后粘贴到客户端项目中,例如在[项目] / app / src / main / aidl下。现在,在客户端应用程序的build.gradle中添加以下内容。因此,基本上,您已经在客户的项目中指出了其他应用程序/服务的可打包java类的源路径。
android {
compileSdkVersion 29
defaultConfig {
....
}
sourceSets { // <-- point to the right source path of AIDL
main {
java.srcDirs = ['src/main/java', 'src/main/aidl']
}
}
}