1019. Android 源码编译的LOCAL_SDK_VE

作者: 斯科特安 | 来源:发表于2016-09-01 19:56 被阅读788次

    个人博客: 斯科特安的时间

    这是Android源码编译的一个坑。

    今天添加一个feature时,import了IPackageManager类,编译时提示找不到这个类。而这个类确实已经在编译好的源码中存在,并且在其他项目中引用时编译通过。
    只有一个项目不通过。
    后来通过对比发现这个项目的Android.mk文件中有这么一行,注释之后,编译通过。

    # 若是添加,编译时会忽略源码隐藏的API,导致编译失败
    LOCAL_SDK_VERSION := current
    

    拓展一下,android sdk中的两类特殊的API

    1. Internal API
    2. Hide API

    1 . Internal API

    翻译为内部API,理解为供sdk内部使用的API。
    这类接口最初打算就是不对外公开的,有点private的意思。

    2 . Hide API

    在源码中看到使用@hide 标记的方法或类,就是hide的。
    这类接口本意是要公开,但是当前阶段仍然不稳定或未开发完成。所以暂时不推荐开发者调用。

    但是,他们都可以被使用

    两种方式:

    1. 通过反射
    2. 使用这些接口的情况是:目标接口已经编译进framework.jar(或其它对应的jar包)中,但是自己应用在编译时会报错。所以只要自己应用编译时同样添加相关jar包的引用,便可以编译通过。

    相关文章

      网友评论

        本文标题:1019. Android 源码编译的LOCAL_SDK_VE

        本文链接:https://www.haomeiwen.com/subject/sgpcettx.html