X (java:sdk) 不应链接到 Y (java:platform)

ofs*_*sen 3 android-source

我是一名安卓固件开发者。我使用 android 9 的源代码。我为 AOSP 固件编写了一个自定义网络位置提供程序,名为离线位置服务。我已将此应用程序添加到packages/apps/offlinelocatonserviceAOSP 构建树中的路径。

Android.mk为它创建了一个文件,将它包含在 android 操作系统的默认包中。

LOCAL_PATH:= $(call my-dir)

include $(CLEAR_VARS)

LOCAL_PACKAGE_NAME := OfflineLocationService

LOCAL_SDK_VERSION := current

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

LOCAL_CERTIFICATE := platform

LOCAL_USE_AAPT2 := true

# Include libraries

LOCAL_JAVA_LIBRARIES := framework com.android.location.provider

LOCAL_STATIC_JAVA_LIBRARIES := android-common

LOCAL_STATIC_ANDROID_LIBRARIES := \
    android-support-v4 \
    android-support-v7-appcompat \
    android-support-design \
    android-support-v7-preference \
    android-support-v7-recyclerview \

LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res

LOCAL_AAPT_FLAGS := --auto-add-overlay

LOCAL_AAPT_FLAGS += --extra-packages android.support.v7.appcompat

LOCAL_AAPT_FLAGS += --extra-packages android.support.design

include $(BUILD_PACKAGE)
Run Code Online (Sandbox Code Playgroud)

但是当我构建 AOSP 时,我遇到了这个错误:

packages/apps/OfflineLocationService/Android.mk: error: OfflineLocationService (java:sdk) should not link to com.android.location.provider (java:platform)
packages/apps/OfflineLocationService/Android.mk: error: OfflineLocationService (java:sdk) should not link to framework (java:platform)
Run Code Online (Sandbox Code Playgroud)

为什么我不应该链接到com.android.location.providerframework?在以前的 android 系统(例如 android 8 及更早版本)中,不会发生此错误。

我该如何解决这个错误?

小智 8

我在 Android 9.0 Temporary 中遇到了同样的问题,我通过更改OfflineLocationService/Android.mk替换解决了:

LOCAL_SDK_VERSION := current
Run Code Online (Sandbox Code Playgroud)

和:

LOCAL_PRIVATE_PLATFORM_APIS := true
Run Code Online (Sandbox Code Playgroud)

但如果有人能找到更好的解决方案,那就太好了。