如何使用多个版本的资产组织Android应用程序

时间:2014-03-24 16:57:40

标签: android git android-assets

我有一个Android应用程序,将分布在两个(或更多)品牌中。每个发行版的所有Java代码都是完全相同,只是不同的资源/资源(如布局,绘图,尺寸等)

组织项目的最佳方式是什么?我正在使用Git进行版本控制,并尝试将所有发行版保持为单个项目。因此,我可以在每次需要时轻松切换资产/资源集以用于不同的品牌。

有一个好的方法吗?

3 个答案:

答案 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']
    }
}