如何根据发布/调试为不同的产品风格和不同的图标设置gradle?

时间:2016-12-19 09:51:51

标签: android gradle android-gradle

我希望根据产品的风格设置不同的图像,如果调试或发布,res文件夹的正确设置是什么?

在我的build.gradle中:

productFlavors {
    flavor1 {
        applicationId   "com.myapp.flavor1"
    }
    flavor2 {
        applicationId   "com.myapp.flavor2"
    }
}

buildTypes {
    debug {
        applicationIdSuffix '.debug'
        useProguard false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
    release {
        minifyEnabled true
        shrinkResources true
        useProguard true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}

在我的文件夹结构中,我现在有:

src/flavor1/res
   /flavor2/res
   /main/res
   /debug/res

我已经尝试在我的调试文件夹中将flavor1和flavor2作为带有资源的子文件夹,但这不适用。只有在调试中有一个res文件夹才会产生两种风格的相同资产,而我希望它们不同。那么我如何设置项目,以便根据调试/发布和不同的产品风格我有不同的图像?

编辑:

更新了文件夹结构

3 个答案:

答案 0 :(得分:1)

来自android build variants docs

  

Gradle会根据您的构建类型和产品口味自动创建构建变体,并根据class Sample include DomainModel field :numbers, :type => Integer, :collection => true end

命名它们

因此,在您的情况下,您已经有4种变体。如果你想为它们设置不同的源集,你可以按如下方式使用它们 [Service] User=mongod Group=mongod Environment="OPTIONS=--quiet -f /etc/mongod.conf" PermissionsStartOnly=true ExecStartPre=/usr/bin/mkdir /var/run/mongodb ExecStartPre=/usr/bin/chown -R mongod:mongod /var/run/mongodb ExecStart=/usr/bin/mongod $OPTIONS run PIDFile=/var/run/mongodb/mongod.pid product-flavor Build-Type等等。请注意命名约定

答案 1 :(得分:0)

你应该试试这个

productFlavors {
            flavor1 {
                    applicationId   "com.myapp.flavor1"
                    }
            flavor2 {
                    applicationId   "com.myapp.flavor2"
                    }
            }

            sourceSets.flavor1 {
                res {
                    srcDir 'flavor1'
                }
                resources {
                    srcDir 'flavor1'
                }
            }

            sourceSets.flavor2 {
                res {
                    srcDir 'flavor2'
                }
                resources {
                    srcDir 'flavor2'
                }
            }
    }

答案 2 :(得分:0)

这实际上比你想象的要容易。

您目前有:

src/flavor1/res
   /flavor2/res
   /main/res
   /debug/res

只需添加:

src/flavor1Debug/res
   /flavor1Release/res
   /flavor2Debug/res
   /flavor2Release/res

那里的资源将覆盖不太具体的文件夹中的资源。

构建变体' Android Studio中的UI有助于确认最终的可能性。

我自己使用此模式用于Google Maps API密钥,在我的情况下,每个客户(风格)需要不同,并且由于应用程序签名的不同,在发布和调试之间已经有所不同。