( 我知道stackoverflow和其他地方(比如google group)有关于为NetworkInfo添加parcelable的问题,但这不是关于那个问题。 )

我的工作在$(AOSP_ROOT)/ device /下,涉及多个package com.example; parcelable SomeRequest;

而另一个援助就是,

package com.example; import com.example.SomeRequest; interface SomeService { SomeRequest getRequest(); }

我会得到编译错误,如,

device/somedevice/sdk/libs/aidl/com/example/SomeService.aidl:9: couldn't find import for class com.example.SomeRequest

我想知道这是处理aidl文件的顺序。 我的Android.mk看起来像,

LOCAL_SRC_FILES := $(call all-java-files-under, src) $(call all-Iaidl-files-under, aidl) LOCAL_AIDL_INCLUDES := $(call all-Iaidl-files-under, aidl)

在我将aidl文件从src /文件夹移动到aidl /文件夹之后引入了这个构建错误(出于某种原因我必须这样做)。 它以前工作过但现在即使我把它移回src /文件夹它也不再起作用了。 我试图清理$(AOSP_ROOT)/ out / device / target但它没有帮助。

想法?

最后我解决了。

如果你深入研究/build/core/base_rules.mk ,你会发现LOCAL_AIDL_INCLUDES实际上是除了框架等默认文件夹之外还要包含在AIDL编译阶段的文件夹。

$(aidl_java_sources): PRIVATE_AIDL_FLAGS := -b $(addprefix -p,$(aidl_preprocess_import)) -I$(LOCAL_PATH) -I$(LOCAL_PATH)/src $(addprefix -I,$(LOCAL_AIDL_INCLUDES))

在这个特定的情况下,你想要的是,

LOCAL_SRC_FILES := $(call all-java-files-under, src) $(call all-Iaidl-files-under, aidl) LOCAL_AIDL_INCLUDES := $(LOCAL_PATH)/aidl

所以我环顾四周 – 解决方案是将AIDL文件仅放入他们自己的名为aidl的目录中,我认为其他一些人建议这样做。

事实certificate,Android Studio看起来在那里,但不太知道如何处理放在src目录中的.aidl文件。

我不明白。 我只是不明白。 AIDL导入在Eclipse中完美运行。 Android Studio尚未准备就绪。 这是倒退的重要一步。

我也无法让AIDL编译器find导入,而且我认为必须有一个更好的方法,而不是修改平台管理的base_rules.mk。

精氨酸!

好的,所以我几天都在苦苦寻找同样的问题。 清洁/重建对我不起作用。 最后,我意识到我在Android Studio中犯了一个非常简单的错误 – 当我右键单击鼠标并创建一个新的“AIDL”时,我没有点击相应的文件夹作为我的原始模型类。

例如,我的模型位于一个名为com.example.model的java包中,但是当我创建AIDL时,我没有右键单击该文件夹。 因此,当Android Studio为我生成AIDL文件夹时,它会引用错误的文件夹,最终会出现编译错误。 我希望android文档清楚地说明我们需要在生成AIDL文件之前右键单击相应的文件夹。 我知道,这听起来很傻,但我希望这个答案适用于你们中的一些人!

只需要将.aidl文件命名为.java文件即可!

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐