Android Studio / Gradle无法构建到期"缺少" java文件中的Parcelable类

时间:2015-03-20 17:42:14

标签: java android build gradle aidl

我有一个包含多个AIDL文件的服务。举一点,我刚刚在.java文件中添加了一个自定义对象,作为接口的一部分作为“in”参数,并包含带有parcelable声明的.aidl。

构建失败,并显示一条错误,指出自定义的Parcelable java类未定义。

知道为什么Android Studio(或命令行的gradle)会忽略java类定义? java类实现了Parcelable接口以及静态CREATOR。

构建过程从aidl文件生成java文件,但原始java类不会复制到该目录中。虽然我承认这可能不是Android Studio构建过程的工作方式,但它是android-x86项目构建的方式。

当然其他人已经看到Android Studio没有构建Parcelable对象,并找到了解决方案......?

2 个答案:

答案 0 :(得分:0)

我刚刚用parcelable类编译如下。

  • 自从工作室自动创建aidl以来,没有使用aidl文件放置java文件 单独的文件夹。
  • 在aidl文件夹下创建包,使用相同的包路径 可吸收的课程。
  • 实施Parcelable.Creator&带有Parcel参数的构造函数

例如,

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']
        }
    }
}