我自己遇到過這個問題,由於是內部代碼不能發佈,所以轉載了一點別人的代碼,作爲記錄Demo。
Android.mk文件
如下:
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)
報錯
error: X (java:sdk) should not link to Y
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)
解決方案
鏈接庫時導致報錯,解決方案如下:
將
LOCAL_SDK_VERSION := current
修改爲
LOCAL_PRIVATE_PLATFORM_APIS := true
參考
https://stackoverflow.com/questions/55004358/x-javasdk-should-not-link-to-y-javaplatform