我有一个Android应用程序,将分布在两个(或更多)品牌中。每个发行版的所有Java代码都是完全相同,只是不同的资源/资源(如布局,绘图,尺寸等)
组织项目的最佳方式是什么?我正在使用Git进行版本控制,并尝试将所有发行版保持为单个项目。因此,我可以在每次需要时轻松切换资产/资源集以用于不同的品牌。
有一个好的方法吗?
答案 0 :(得分:2)
一种好的方法是将主项目代码转换为库,然后,对于其他项目(品牌),导入该库并根据需要覆盖资产。
答案 1 :(得分:1)
Gradle Build Variants允许您拥有共享的主代码库/资源以及具有与每个相关联的自定义资源/代码的多个变体 - 然后您可以为每个变体生成单独的APK。当然,使用Gradle for Android开发需要使用Android Studio(目前处于测试阶段)。
答案 2 :(得分:1)
如上所述,Gradle Build Variants是处理此问题的最佳方式。我们有11个变种(和计数),唯一的区别是一些配置值。我按如下方式组织了这个项目:
app/src/configurations/
flavor1/
common/res/...
release/res/...
stage/res/...
其中公共目录包含该构建变体的通用配置,并且发行版和阶段包含我们的发行版和暂存版的自定义值(它们的配置也略有不同)。
所有构建变体共有的所有配置都位于普通的app / src / main / res文件夹中。
然后在应用程序的build.grade中,我定义了每个产品风格:
productFlavors {
flavor1 {
applicationId = "com.example.flavor1"
}
flavor1stage {
applicationId = "com.example.flavor1stage"
}
// etc. for each build flavor
}
android.sourceSets.flavor1 {
res {
srcDirs = ['src/configurations/flavor1/release/res', 'src/configurations/flavor1/common/res', 'src/res']
}
}
android.sourceSets.flavor1stage {
res {
srcDirs = ['src/configurations/flavor1/stage/res', 'src/configurations/flavor1/common/res', 'src/res']
}
}