RestrictTo不限制使用受限方法

时间:2018-10-30 17:36:49

标签: android android-support-library android-annotations

我已经将我的图书馆项目的一种方法注释为受限的@RestrictTo(Scope.LIBRARY),甚至尝试了@RestrictTo(Scope.LIBRARY_GROUP),但这并不妨碍API在项目的其他模块中使用。 我什至尝试在两个模块中都设置group=xxxgroup=yyy

enter image description here

限制API调用

enter image description here

Android Studio没有显示错误/警告。

enter image description here 已为受限制的API启用了事件lint。

我什至尝试使用./gradlew lint

在调用者模块上运行lint

请在Github

上找到实现

库模块-异步任务处理器

尝试设置不同的组-模块示例

尝试使用完全不同的软件包名称-模块myapplication

不确定这是怎么回事,请帮忙。

1 个答案:

答案 0 :(得分:2)

Scope.LIBRARY_GROUP角度看,如果所有模块具有相同的 groupId

,则它们都是一个库的一部分
  

限制使用同一组库中的代码。这对应于gradle组ID。

要通过Scope.LIBRARY限制API,您还需要使用其他 artifactId

  

将用法限制为在同一库中进行编码(例如,相同的gradle组ID和工件ID)。


有必要添加库作为外部依赖项。您需要构建和部署库工件:

// follow answer https://stackoverflow.com/a/28361663/3926506 to build 
artifact
group = 'com.umang.asyncprocessor'
version = '1.0'

uploadArchives {
    repositories {
        mavenDeployer {
            repository(url: "file://[path to you repository]")
            // repository(url: "file://C:/Users/Sergey/.m2/repository")
        }
    }
}

您可以将工件部署到本地Maven存储库中(不要忘记将mavenLocal()添加到项目构建脚本中)。

然后在应用程序build.gradle文件中从已编译库添加依赖项:

implementation 'com.umang.asyncprocessor:async-task-processor:1.0'

不是来自项目模块:

// it doesn't work!
implementation project(path: ':async-task-processor')

我已经使用适当的配置在您的存储库中创建了pull request