【发布时间】:2016-06-04 15:23:53
【问题描述】:
@StringDef 支持注释有问题。当它们所在的库是项目的一部分(不是 .aar 文件)时,它们工作得非常好,但是当我将库编译为 .aar 文件并尝试在另一个项目中使用它们时,注释不会被强制执行。
http://tools.android.com/tech-docs/support-annotations
在“在您自己的库中使用注释”部分下它说
如果您使用这些注释对自己的库进行注释,并使用 Gradle 构建 AAR 工件,则 Android Gradle 插件将在构建时提取注释信息并将其发送到您的 AAR 文件中以供您的库的客户端使用。您可以查看记录信息的 AAR 内的 annotations.zip 文件;这是使用 IntelliJ 的外部注释 XML 格式。这是必要的,因为 .class 文件不能包含足够的注释信息来处理上面的 @IntDef 信息;请注意,我们需要记录对常量本身的引用,而不是它的值。当(且仅当)您的项目依赖于注解支持库时,Android Gradle 插件会将提取注解任务作为构建的一部分运行。 (请注意,只有源保留注释放在 .aar 文件中;类级别保留保留在 classes.jar 中。)
我打开 .aar 文件,里面有 annotations.zip 文件,如果我提取它,就会有一个包含所有正确注释的 XML 文件。
我正在使用@Retention(RetentionPolicy.SOURCE),因为它说我需要
我试图将它们用作 .aar 文件的应用确实依赖于支持库 compile 'com.android.support:support-annotations:23.1.1
让这些工作我缺少什么?
编辑:我仔细检查了使用这些作为 .aar 文件的项目是否也打开了注释处理器。
【问题讨论】:
-
“未强制执行注释”是什么意思?
-
当我使用一个带有注释的方法,并且我不使用注释值时,它应该将其标记为红色并阻止我编译。例如。 “你好”与 SomeClass.HELLO_CONSTANT。它在库直接编译到项目中时有效,但在用作 .aar 文件时无效
-
使用错误值时应该是什么样子的示例图像 - 0d9321c1-a-db1c6dfe-s-sites.googlegroups.com/a/android.com/…
标签: android annotations android-support-library android-library