我正在构建一个android java(jar)库,该库使用多个具有相同包名的java项目。
我的结构如下所示,
Project A
com.mypackage
//contains all Package Private Classes
Project B
com.mypackage
//contains all Package Private Classes + Few Public Classes
Project C
com.mypackage
//contains all Package Private Classes + Few Public Classes
Project D
// ant script to generate different flavors of Jars( A & B, A & B & C)
//考虑项目A包含我不想公开的所有隐藏类
我正在将此库移动到Android Gradle构建,遗憾的是:(不支持具有相同软件包名称的子项目。
我不想将所有这些组合成单个包。即使我合并到一个Android Studio项目中,我也希望将它们分开放在不同的包中。
如果我在项目A中更改包名称,我需要将项目A中的包私有类转换为公共,以便它们可以在项目B&项目C但也可以向公众开放。
以下是解决方案,我想到了,
为所有包私有类创建接口,并在所有引用的类中使用接口引用(巨大的重构,我会更快地老化)。接口将是公共的,但它们不包含实现。
对公共类使用android @hide注释,不确定这是否适用于包间引用
我真的很感激任何建议, 谢谢,