You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android 12 ServiceMode编译报错:同时指定LOCAL_SDK_VERSION与LOCAL_PRIVATE_PLATFORM_APIS

问题

我是一名Android固件开发者,基于Android 12源码开发名为ServiceMode的系统应用,需随Android系统编译并部署至system分区。编译时出现报错:

"Specifies both LOCAL_SDK_VERSION (system_current) and LOCAL_PRIVATE_PLATFORM_APIS (true) but should specify only one"

我在Android.mk中仅设置了LOCAL_PRIVATE_PLATFORM_APIS := true(因需使用隐藏API),未配置LOCAL_SDK_VERSION,却仍触发该报错。我的Android.mk文件内容如下:

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)

LOCAL_SRC_FILES += $(call all-java-files-under, java/com/foo/example/servicemode)
LOCAL_SRC_FILES += $(call all-java-files-under, java/com/bar)

ifeq "$(LOCAL_REGION)" "JP"
    LOCAL_MANIFEST_FILE := java/com/foo/example/servicemodejp/AndroidManifest.xml
    LOCAL_SRC_FILES += $(call all-java-files-under, java/com/foo/example/servicemodejp)
endif

ifeq "$(PROJECT_SERIES)_$(LOCAL_REGION)" "US"
    LOCAL_MANIFEST_FILE := java/com/foo/example/servicemodeus/AndroidManifest.xml
    LOCAL_SRC_FILES += $(call all-java-files-under, java/com/foo/example/servicemodeus)
endif

LOCAL_PACKAGE_NAME := ServiceMode
LOCAL_CERTIFICATE := platform
LOCAL_ODM_MODULE := true
LOCAL_JAVA_LIBRARIES := com.bar.twoworlds.mobile\
    com.foo.example.mobileinput.provider.util \

ifeq "$(LOCAL_REGION)" "JP"
    LOCAL_JAVA_LIBRARIES += com.foo.example.jp
endif

LOCAL_STATIC_JAVA_LIBRARIES := \
    com.foo.example.osdplanevisibilitymanager \
    com.foo.example.provider.modelvariation.util \
    com.foo.example.hardware.display-V1.0-java\
        android-support-annotations

ifeq "$(PROJECT_SERIES)_$(LOCAL_REGION)" "US"
    LOCAL_STATIC_JAVA_LIBRARIES += com.foo.example.mobileapi
endif

LOCAL_PROGUARD_ENABLED := disabled

LOCAL_PRIVATE_PLATFORM_APIS := true

LOCAL_DEX_PREOPT := false

include $(BUILD_PACKAGE)
    
include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := optional
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := \
    com.foo.example.osdplanevisibilitymanager:libs/com.foo.example.osdplanevisibilitymanager.jar

ifeq "$(PROJECT_SERIES)_$(LOCAL_REGION)" "US"
    LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES += com.foo.example.mobileapi:libs/mobileapi-1.13.0.jar
endif

include $(BUILD_MULTI_PREBUILT)
解决方案
  • 排查依赖模块的默认配置
    你依赖的LOCAL_JAVA_LIBRARIES或LOCAL_STATIC_JAVA_LIBRARIES中,可能有模块已设置LOCAL_SDK_VERSION := system_current,编译系统会合并依赖的配置到当前模块,引发冲突。检查所有依赖库的Android.mk/Android.bp文件,若依赖的是系统库无法修改,可在当前模块显式添加LOCAL_SDK_VERSION := none覆盖继承配置。

  • 处理ODM模块的默认行为
    Android 12中设置LOCAL_ODM_MODULE := true时,编译系统会自动为ODM模块默认配置LOCAL_SDK_VERSION := system_current,和你手动设置的LOCAL_PRIVATE_PLATFORM_APIS冲突。解决方法是在当前模块中显式添加LOCAL_SDK_VERSION := none,明确告知编译系统仅使用私有平台API,不启用SDK版本限制。

  • 具体修改操作
    在你的Android.mk中,LOCAL_PRIVATE_PLATFORM_APIS := true上方添加一行:

    LOCAL_SDK_VERSION := none
    

    之后重新编译即可验证是否解决报错。

内容的提问来源于stack exchange,提问作者Shreyas R

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 19:10:29