【问题标题】:How to Organize Android App with Multiple Versions of Assets如何使用多个版本的资产组织 Android 应用程序
【发布时间】:2014-03-24 16:57:39
【问题描述】:

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

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

有什么好的方法吗?

【问题讨论】:

    标签: android git android-assets


    【解决方案1】:

    一种好的方法是将您的主要项目代码放入库中,然后对于其他项目(品牌),导入该库并根据需要覆盖资产。

    【讨论】:

    • hmm.. 这个解决方案似乎更适用于仍然使用 eclipse 而不是 androidstudio/gradle 的我
    • 是的。我也在使用 Eclipse。我做到了,我很满意。 :D
    • 应用包名呢?主项目和资产项目应该一样吗?
    • 不,资产项目和主项目的包名应该不同,这样你的类和资源就不会产生冲突。此外,您需要使用不同的包名称才能在商店中发布您的应用。
    【解决方案2】:

    Gradle Build Variants 允许您拥有一个共享的主代码库/资源和多个变体,其中每个变体都有自定义资源/代码 - 然后您可以为每个变体生成单独的 APK。当然,使用 Gradle 进行 Android 开发也需要使用 Android Studio(目前处于测试阶段)。

    【讨论】:

      【解决方案3】:

      如上所述,Gradle Build Variants 是处理此问题的最佳方式。我们有 11 个变体(并且还在增加),唯一的区别是一些配置值。我将项目组织如下:

      app/src/configurations/
         flavor1/
            common/res/...
            release/res/...
            stage/res/...
      

      common 目录保存该构建变体通用的配置,而 release 和 stage 保存我们的发布和暂存版本的自定义值(它们的配置也略有不同)。

      所有构建变体共有的所有配置都位于普通的 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']
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-03-01
        • 2012-08-05
        • 1970-01-01
        • 1970-01-01
        • 2019-08-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多