RestrictTo 不限制受限方法的使用

Uma*_*ang 5 android android-annotations android-support-library

我已经将我的库项目的方法之一注释为受限制的,@RestrictTo(Scope.LIBRARY)甚至尝试过@RestrictTo(Scope.LIBRARY_GROUP),但这并不能阻止 API 在项目的其他模块中使用。我什至尝试在两个模块中设置group=xxx和。group=yyy

在此输入图像描述

限制API调用

在此输入图像描述

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

在此输入图像描述 为受限 API 启用事件 lint。

我什至尝试使用在调用者模块上运行 lint./gradlew lint

请在Github上找到实现

库模块 - 异步任务处理器

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

尝试使用完全不同的包名称 - module myapplication

不确定这里出了什么问题请帮忙。

XII*_*-th 2

从注释的角度来看,Scope.LIBRARY_GROUP如果所有模块具有相同的groupId ,则它们都是一个库的一部分

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

要限制API,Scope.LIBRARY您还需要使用不同的artifactId

限制使用同一库中的代码(例如相同的 gradle 组 ID 和工件 ID)。


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

// follow answer /sf/answers/1985316441/ 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")
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

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

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

implementation 'com.umang.asyncprocessor:async-task-processor:1.0'
Run Code Online (Sandbox Code Playgroud)

不是来自项目模块:

// it doesn't work!
implementation project(path: ':async-task-processor')
Run Code Online (Sandbox Code Playgroud)

我已经使用适当的配置创建了对您的存储库的拉取请求