android编译报错aidl,Android Aidl编译错误:找不到类的导入
( 我知道stackoverflow和其他地方(比如google group)有关于为NetworkInfo添加parcelable的问题,但这不是关于那个问题。 )我的工作在$(AOSP_ROOT)/ device /下,涉及多个package com.example; parcelable SomeRequest;而另一个援助就是,package com.example; import com
( 我知道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文件即可!
更多推荐
所有评论(0)