问题背景:
今天在frameworks/base/policy/src/com/android/internal/policy/impl/GlobalActions.java引用到了mtk自定义的类alps\mediatek\frameworks\base\media\audio\java\com\mediatek\audioprofile\AudioProfileManager.java ,编译的时候提示如下错误:
frameworks/base/policy/src/com/android/internal/policy/impl/GlobalActions.java:965: cannot find symbol
symbol : class AudioProfileManager
location: class com.android.internal.policy.impl.GlobalActions.SilentModeTriStateAction
private AudioProfileManager mProfileManager;
在项目中搜索该类,在
/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
frameworks/base/packages/SystemUI/src/com/mediatek/systemui/statusbar/toolbar/QuickSettingsConnectionModel.java
中都发现了该类的引用,似乎并无问题。
解决方法:
看一下GlobalActions.java的路径,发现它隶属于policy下面,在policy下面发现一个Android.mk文件。这个就比较有意思了,可以发现这个文件中并未引用AudioProfileManager类的库,所以在Android.mk中添加如下内容即可:
LOCAL_PATH:= $(call my-dir)
# the library
# ============================================================
include $(CLEAR_VARS)
LOCAL_SRC_FILES := $(call all-java-files-under, src)
<span style="color:#ff0000;">#add by yourself在这个地方添加引用函数所在的库
LOCAL_JAVA_LIBRARIES := mediatek-framework</span>
LOCAL_MODULE := android.policy
include $(BUILD_JAVA_LIBRARY)
# additionally, build unit tests in a separate .apk
include $(call all-makefiles-under,$(LOCAL_PATH))
这个库名称可以在AudioProfileManager所在模块的Android.mk的LOCAL_MODULE中找到。
本文介绍了在Android项目中遇到无法编译的问题,原因是引用了MTK自定义的类,但在Android.mk文件中未正确引用相关库。通过在Android.mk文件中添加正确的库引用解决了此问题。
4226

被折叠的 条评论
为什么被折叠?



