文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Android高版本源码编译提示error: cannot find symbol import android.os.SystemProperties

2022-06-06 13:24

关注

cannot find symbol import android.os.SystemProperties

前言

  最近在搞Android高版本的9和10开发,正在敲着代码唱着歌,发现在Android源码目录的app下面导入import android.os.SystemProperties这个包老是不行,尼玛搞得我怀疑人生了啊。这个我咋在Android源码下面通过Android.mk老是编译不过呢?好吗,今天的篇章就来讲讲为啥在Android高版本上面就有问题呢,怎么做才能编译通过呢。



正式开搞 1.1 错误信息

活见鬼了,导入SystemProperties怎么也不OK,一直提示如下错误信息:

 error: cannot find symbol
import android.os.SystemProperties;
                 ^
  symbol:   class SystemProperties
  location: package android.os

在这里插入图片描述
真的不是我不认真,没有import的,我是无辜的,我真的导入了,不信你看:

import android.os.SystemProperties;

在这里插入图片描述

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是它的呢。修改编译文件如下:

LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res
LOCAL_USE_AAPT2 := true
LOCAL_CERTIFICATE := platform
LOCAL_MODULE_TAGS := optional
LOCAL_PRIVATE_PLATFORM_APIS := true

好了见证奇迹的时刻到了,编译成功。
在这里插入图片描述



总结

文章至此,让我们总结一下上面提到的两个编译配置,本文就可以告一段落了。

LOCAL_SDK_VERSION := current 意思是编译时忽略系统隐藏类(@hide),如果有这个编译配置那么使用了隐藏的类和方法就会报错。 LOCAL_PRIVATE_PLATFORM_APIS := true,这个编译选项和上面的作用相反,加入这个编译配置就可以在Android源码环境下使用隐藏的类和方法。
作者:进阶的凯子


阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-移动开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯