gpt4 book ai didi

Android Aidl 编译错误 : couldn't find import for class

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:00:28 28 4
gpt4 key购买 nike

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

我的工作在 $(AOSP_ROOT)/device/下,涉及多个 aidl 文件。其中之一是,

package com.example;

parcelable SomeRequest;

另一个 aidl 就像,

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编译阶段要包含的文件夹,除了默认文件夹,如 framework 等。

$(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

关于Android Aidl 编译错误 : couldn't find import for class,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27138924/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com