多个APP之间共享的AIDL上的自定义Parcelables导致ClassNotDefError

时间:2013-04-19 13:02:35

标签: android android-service parcelable aidl multi-project

我在Eclipse中有三个Android项目:

应用A(托管服务)

App B(使用A中的服务)

AIDL(定义和一些自定义对象)

APP A启动APP B. APP B通过APP A的AIDL使用服务。到目前为止运行良好。 问题是在APP B中看不到自定义的parcelable对象。它总是导致和ClassNotDef错误。

我从未在任何示例中看到过这样的szenario,因为它们总是比我的场景容易得多。 似乎eclipse没有将自定义Parcelable文件从AIDL项目添加到APP B中。 我不知道为什么,但生成的Java文件包含正确的Parcelable引用,但它们在AIDL project.jar或/ bin文件夹中丢失。

我已经阅读过关于复制AIDL文件的内容,但说实话,这是我想要做的至少,因为它违反了具有良好项目结构的内容。

我们还使用maven在我们的CI服务器上构建,并且Generated Java Classes和自定义Parcelables在我的APKLIB项目中按预期进行。

对我而言,它看起来更像是Eclipse问题而不是其他任何东西,因为maven编译并按预期运行项目。

任何人都可以提供一些提示来设置可以在Eclipse中启动的场景吗?

1 个答案:

答案 0 :(得分:0)

如果要在两个应用程序之间共享Parcelable类型,则必须在Eclipse中的单独Android库项目中定义它们,并使两个应用程序项目都依赖于它。

正如您可能已经知道的,对于每个Parcelable com.yourpackage.YourParcelableClass,为了能够引用AIDL中的Parcelable类型,您还需要将文件YourParcelableClass.aidl放在与YourParcelableClass.java相同的目录中,包含内容:

package com.yourpackage;

parcelable YourParcelableClass;