Android flavor 与 sourceSets 的争议

KratosOmega · 2025-2-10 10:25:43 · 331 次点击

新进入一个团队,发现该团队针对不同的 flavor ,使用了不同的 sourceSets ,且这些 sourceSets 的代码有大量的重合。如:

productFlavors {
    fla1 {
     //...
    }
    fla2 {
     //...
    }
}
sourceSets {
    fla1 {
     java.srcDirs += ["src/common/java"]
     java.srcDirs += ["src/path1/java"]
    }
    fla2 {
     java.srcDirs += ["src/common/java"]
     java.srcDirs += ["src/path2/java"]
    }
}

上述例子中,path1 和 path2 的代码中有大量的重合。由于 flavor 之间一些代码编译不到一块,当 fla2 要使用到 fla1 的代码时,又不在 common 文件夹时,会习惯性地复制一份,而不是抽离到 common 。

而且随着项目的复杂度越来越高,即使想抽离到 common 的复杂度也越来越高。

不知道大家的 Android 项目有这么使用 flavor 的吗,我个人感觉这是一个坑。

举报· 331 次点击
登录 注册 站外分享
2 条回复  
messnoTrace 小成 2025-2-10 10:55:46
这玩意看起来像早期用来处理多渠道,多套不同代码的操作啊,或者叫兄弟包,马甲包
KratosOmega 楼主 初学 2025-2-10 11:20:09
@messnoTrace #1 是啊,但是 path1 和 path2 按理说只放简单的代码。如果项目越复杂,还放 path1/path2 里,就会变成我说的情况了。
返回顶部