Emi*_*Adz 9 java android gradle build.gradle android-gradle-plugin
目前我正在开发一个有5种口味的应用程序,这是我的build.gradle文件的一部分:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.14.0'
}
}
apply plugin: 'com.android.application'
repositories {
mavenCentral()
}
android {
compileSdkVersion 20
buildToolsVersion '20.0.0'
signingConfigs {
release {
storeFile file("")
storePassword "password"
keyAlias "alias"
keyPassword "password"
}
}
lintOptions {
abortOnError false
}
defaultConfig {
minSdkVersion 14
targetSdkVersion 20
applicationId 'application.package'
signingConfig signingConfigs.release
}
buildTypes {
release {
signingConfig signingConfigs.release
}
}
productFlavors {
flavor1{
applicationId 'com.flavor1.package'
}
flavor2{
applicationId 'com.flavor2.package'
}
flavor3{
applicationId 'com.flavor3.package'
}
flavor4{
applicationId 'com.flavor4.package'
}
flavor5{
applicationId 'com.flavor5.package'
}
}
}
dependencies {
compile project(':SDK')
}
Run Code Online (Sandbox Code Playgroud)
我不得不在文件中做一些更改,但基本上就是这样.
问题是:我要求在assets文件夹中为每一种风格提供一组不同的资产文件,这些文件将创建一个不同的apk文件但具有相同的包名称.这些apk文件将作为相同的应用程序上传到Google Play,但针对不同的地区.
所以包名必须保持不变.所以基本上我需要创建一种机制,当它们中的每两个具有相同的包名但具有不同的资产文件夹时,而不是5种风格将创建10种风味.如何使用gradle完成?
我尝试使用BuildTypes实现这一点,如下所示:
buildTypes {
release {
signingConfig signingConfigs.release
sourceSets.main.assets.srcDirs = ['assets']
}
releaseAlt {
signingConfig signingConfigs.release
sourceSets.main.assets.srcDirs = ['assetsalt']
}
}
Run Code Online (Sandbox Code Playgroud)
但由于某种原因,releaseAlt还会获取位于assets目录中的文件,而不是assetsalt目录.
pde*_*d59 24
您可以使用buildTypes.
buildTypes {
release {
// ... the usual stuff here
}
releaseAlt {
// .. the usual stuff here too like signing config etc...
}
}
Run Code Online (Sandbox Code Playgroud)
现在文件层次结构:
你应该有
project/
- app/
- src/
- main/
- assets/
- logo.png // Generic assets go here
- java/
- res/
- ...
- flavor1/
- assets/
- logo.png // Specific assets for all the flavor1 Variants
- releaseAlt/
- asset/
- logo.png // Specific assets for all the releaseAlt Variants.
- flavor1ReleaseAlt/
- assets/
- logo.png // very specific assets for the flavor1ReleaseAlt Variant
- SDK/
Run Code Online (Sandbox Code Playgroud)
使用此文件层次结构,在构建flavor1Release变体时,您将拥有logo.png文件flavor1/assets/,但是当您构建flavor1ReleaseAlt变体时,此png将被on from flavor1ReleaseAlt/assets/文件夹替换.
说明:
Gradle使用约定而不是配置(默认情况下).特别是在项目结构方面.当构建flavor1ReleaseAlt Variant时,Gradle(实际上是Android插件;))正在寻找一个名为flavor1ReleaseAlt /的文件夹,里面有一些资产,资源,java等... 这些是Gradle可以为此Variant找到的最具体的应用资源.然后Gradle会为一些不太具体的应用资源寻找一个名为flavor1 /的文件夹.然后到一个名为releaseAlt /的更小的特定文件夹,最后到通用文件夹(main /).
不同的文件夹必须具有非常严格的名称才能匹配Variant查找:
希望这可以帮助.
| 归档时间: |
|
| 查看次数: |
4720 次 |
| 最近记录: |