iis服务器助手广告
返回顶部
首页 > 资讯 > 移动开发 >@UnsupportedAppUsage注解
  • 139
分享到

@UnsupportedAppUsage注解

androidjava开发语言 2023-09-03 18:09:17 139人浏览 八月长安
摘要

在Android-R中,Google拓展了原本的UnsupportedAppUsage来限制framework中的某些定义无法被外部应用访问。采用这中方案来强化mainlane模式,强制厂商mainlane自身feature。google也

Android-R中,Google拓展了原本的UnsupportedAppUsage来限制framework中的某些定义无法被外部应用访问。采用这中方案来强化mainlane模式,强制厂商mainlane自身feature。google也拓展了systemapi注释来保护某些属性无法被sdk外部访问。

@UnsupportedAppUsage

这个注释简单来说就是不支持外部应用使用被此注释声明的变量或方法等

tools\platfORM-compat\java\android\compat\annotation\UnsupportedAppUsage.java

@Retention(CLASS)@Target({CONSTRUCTOR, METHOD, FIELD, TYPE})@Repeatable(UnsupportedAppUsage.Container.class)public @interface UnsupportedAppUsage {

@Retention(CLASS)可以看到这个注释是存在于class文件中,也就是说编译器会在编译当前java文件为class文件时保留此注释。

tools/platform-compat/java/android/processor/compat/unsupportedappusage/UnsupportedAppUsageProcessor.java

在UnsupportedAppUsageProcessor.java类中,编译器会在class文件处理阶段对UnsupportedAppUsage注释进行分析处理

    @Override    protected void process(TypeElement annotation,            Table> annotatedElements) {        SignatureConverter signatureConverter = new SignatureConverter(messager);        for (PackageElement packageElement : annotatedElements.rowKeySet()) {            Map> row = annotatedElements.row(packageElement);            for (String enclosingElementName : row.keySet()) {                List content = new ArrayList<>();                for (Element annotatedElement : row.get(enclosingElementName)) {                    String signature = signatureConverter.getSignature(types, annotation, annotatedElement);                    if (signature != null) {                        String annotationIndex = getAnnotationIndex(signature, annotation,    annotatedElement);                        if (annotationIndex != null) {content.add(annotationIndex);                        }                    }                }                if (content.isEmpty()) {                    continue;                }                try {                    FileObject resource = processingEnv.getFiler().createResource(CLASS_OUTPUT,packageElement.toString(),enclosingElementName + GENERATED_INDEX_FILE_EXTENSION);                    try (PrintStream outputStream = new PrintStream(resource.openOutputStream())) {                        outputStream.println(CSV_HEADER);                        content.forEach(outputStream::println);                    }                } catch (IOException exception) {                    messager.printMessage(ERROR, "Could not write CSV file: " + exception);                }            }        }    }

在保存csv后,编译器就知道了当前类中那些属性被UnsupportedAppUsage保护了。

在编译其他模块时,在检查当前模块使用的内容时,会检查app是否引用了被注释保护的属性。

一旦检查没有通过,就会报编译错误,导致编译失败。

来源地址:https://blog.csdn.net/xiaowang_lj/article/details/128368937

--结束END--

本文标题: @UnsupportedAppUsage注解

本文链接: https://www.lsjlt.com/news/392635.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • @UnsupportedAppUsage注解
    在android-R中,google拓展了原本的UnsupportedAppUsage来限制framework中的某些定义无法被外部应用访问。采用这中方案来强化mainlane模式,强制厂商mainlane自身feature。google也...
    99+
    2023-09-03
    android java 开发语言
  • @ApiModel注解与@ApiModelProperty注解
    一、@ApiModel注解与@ApiModelProperty注解 资料来源: https://juejin.cn/post/7109835493952454693 1.1 初了解 @ApiMode...
    99+
    2023-08-31
    java spring mybatis 开发语言 Powered by 金山文档
  • Java|注解之定义注解
    Java语言使用@interface语法来定义注解(Annotation),它的格式如下: public @interface Report { int type() default 211; String level() de...
    99+
    2023-09-14
    java
  • 【Java 注解】自定义注解(注解属性与使用)
    文章目录 前言一、自定义注解与元注解1.注解属性类型 二、注解的生命周期以及作用目标1.生命周期2.作用目标 三,简单使用四,注解属性赋值简化 前言 Java注解是一种元数据(m...
    99+
    2023-10-21
    java spring spring boot log4j 经验分享 笔记 后端
  • SpringMVC注解之@ResponseBody注解原理
    目录一、介绍二、作用范围三、源码分析四、总结一、介绍 @ResponseBody 注解的作用是将方法的返回值通过适当的转换器转换为指定的格式之后,写入到 response ...
    99+
    2024-04-02
  • spring注解@Service注解的使用解析
    @Service注解的使用 要说明@Service注解的使用,就得说一下我们经常在spring配置文件applicationContext.xml中看到如下图中的配置: <...
    99+
    2024-04-02
  • 如何理解Java注解和注解解析器
    这篇文章主要讲解了“如何理解Java注解和注解解析器”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何理解Java注解和注解解析器”吧!什么是元数据(met...
    99+
    2024-04-02
  • Java中注解、元注解怎么用
    这篇“Java中注解、元注解怎么用”除了程序员外大部分人都不太理解,今天小编为了让大家更加理解“Java中注解、元注解怎么用”,给大家总结了以下内容,具有一定借鉴价值,内容详细步骤清晰,细节处理妥当,希望大家通过这篇文章有所收获,下面让我们...
    99+
    2023-06-29
  • @MapperScan注解与@Mapper注解的使用
    目录@MapperScan注解与@Mapper注解使用MapperScan注解和@Mapper的区别@MapperScan注解与@Mapper注解使用 @Mapper一般对应一个接口...
    99+
    2024-04-02
  • SpringBoot配置@Configuration注解和@bean注解
    目录1.@Configuration注解2.@bean注解3.单实例4.配置类也是容器的组件5.直接调用配置类里面的person1()方法6.proxyBeanMethods&mda...
    99+
    2024-04-02
  • Java注解
    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一、在编译时进行格式检查(JDK内置的三个基本注解)二、使用步骤1.理解Annotation2.Annocat...
    99+
    2023-10-10
    java 开发语言
  • @TableField注解详解
    @TableField(value = "email")//指定数据库表中字段名 如果数据库和实体类的字段名不一致,可以使用@TableField注解指定数据库表中字段名。  2、@TableField(exist = "false")/...
    99+
    2023-09-02
    数据库 sql java
  • Spring注解详解
    概述 注释配置相对于 XML 配置具有很多的优势:它可以充分利用 Java 的反射机制获取类结构信息,这些信息可以有效减少配置的工作。如使用 JPA 注释配置 ORM 映射时,我们就不需要指定 PO 的属性名、类型等信息,如果关系表字段和...
    99+
    2023-06-03
  • Java注解详解
    目录 一、发现注解二、注解是什么1. 注解的本质2. 注解是针对Java编译器的说明 三、为什么要使用注解四、Java中常用的注解4.1 基础注解(spring-context、spring-we...
    99+
    2023-08-22
    java spring 软件测试
  • @PreAuthorize注解详解
    @PreAuthorize注解会在方法执行前进行权限验证,支持Spring EL表达式,它是基于方法注解的权限解决方案。只有当@EnableGlobalMethodSecurity(prePostEnabled=true)的时候,@PreA...
    99+
    2023-09-14
    spring java mybatis
  • java注解与元注解实例分析
    这篇文章主要介绍“java注解与元注解实例分析”,在日常操作中,相信很多人在java注解与元注解实例分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”java注解与元注解实例分析”的疑惑有所帮助!接下来,请跟...
    99+
    2023-06-30
  • SpringBoot 自定义注解之脱敏注解详解
    目录自定义注解之脱敏注解一、脱敏后的效果二、代码1.脱敏注解2.定义脱敏类型3.敏感工具类4.脱敏序列化信息小结一下自己手写的一个高效自定义字符串脱敏注解自己写了个 仅供参考自定义注...
    99+
    2024-04-02
  • 详解@Override注解
    目录 1.是什么 2.为什么用 3.举例说明 1)示例一 2)示例二 3)示例三 1.是什么 @Override注解是伪代码,用于表示被标注的方法是一个重写方法。 @Override注解,只能用于标记方法,并且它只在编译期生效,不会保留...
    99+
    2023-09-24
    java
  • Java基础知识之注解、元注解
    目录注解注解作用Java预定义的注解自定义注解元注解实例:注解使用总结总结注解 Java注解也称Java标注,是jdk1.5(5.0)后的新特征。Java语言中的类、方法、变量、参数...
    99+
    2024-04-02
  • SpringMVC注解之@ResponseBody注解原理是什么
    这篇文章主要介绍SpringMVC注解之@ResponseBody注解原理是什么,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、介绍@ResponseBody 注解的作用是将方法的返回值通过适当的转换器转换为指定的...
    99+
    2023-06-15
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作