Android高版本源码编译提示error: cannot find symbol import android.os.SystemProperties
LOCAL_SDK_VERSION 这个编译配置,就会使编译的应用不能访问hide的api,有时一些系统的class被import后编译时说找不到这个类,就是这个原因造成的。编译提示我们需要使用LOCAL_PRIVATE_PLATFORM_APIS编译配置。谷歌让我们干啥那就干啥吗,谁用Android是它的呢。我到该App的源码目录下面查看Android.mk发现使用了编译配置LOCAL_SDK_
cannot find symbol import android.os.SystemProperties
正式开搞
1.1 错误信息
活见鬼了,导入SystemProperties怎么也不OK,一直提示如下错误信息:
error: cannot find symbol
import android.os.SystemProperties;
^
symbol: class SystemProperties
location: package android.os
真的不是我不认真,没有import的,我是无辜的,我真的导入了,不信你看:
<span style="color:#000000"><span style="background-color:#1d1f21"><code class="language-bash"><span style="color:#81a2be">import</span> android.os.SystemProperties<span style="color:#999999">;</span>
</code></span></span>
- 1
1.2 解决之道
我到该App的源码目录下面查看Android.mk发现使用了编译配置LOCAL_SDK_VERSION ,这个是重点
LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res
LOCAL_USE_AAPT2 := true
LOCAL_CERTIFICATE := platform
LOCAL_MODULE_TAGS := optional
LOCAL_SDK_VERSION := current #这个是关键
LOCAL_SDK_VERSION 这个编译配置,就会使编译的应用不能访问hide的api,有时一些系统的class被import后编译时说找不到这个类,就是这个原因造成的。这个也是谷歌为了解决碎片化操碎心的表现。
好吗既然这样,是不是把这个编译配置删除就OK了呢,我们试试,修改好的编译配置如下:
LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res
LOCAL_USE_AAPT2 := true
LOCAL_CERTIFICATE := platform
LOCAL_MODULE_TAGS := optional
让我们编译一把,看看能否编译成功,什么还是有错误:
packages/apps/ExactCalculator/Android.mk: error: ExactCalculator: Must specify LOCAL_SDK_VERSION or LOCAL_PRIVATE_PLATFORM_APIS,
build/make/core/sdk_check.mk:21: error: done.
16:03:29 ckati failed with: exit status 1
#### failed to build some targets (01:05 (mm:ss)) ####
编译提示我们需要使用LOCAL_PRIVATE_PLATFORM_APIS编译配置。谷歌让我们干啥那就干啥吗,谁用Android是它的呢。修改编译文件如下:
更多推荐
所有评论(0)