我已经将我的图书馆项目的一种方法注释为受限的@RestrictTo(Scope.LIBRARY)
,甚至尝试了@RestrictTo(Scope.LIBRARY_GROUP)
,但这并不妨碍API在项目的其他模块中使用。
我什至尝试在两个模块中都设置group=xxx
和group=yyy
。
限制API调用
Android Studio没有显示错误/警告。
我什至尝试使用./gradlew lint
请在Github
上找到实现库模块-异步任务处理器
尝试设置不同的组-模块示例
尝试使用完全不同的软件包名称-模块myapplication
不确定这是怎么回事,请帮忙。
答案 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。