- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我有 2 种风格的应用程序,每种都有自己的 google maps (v1) key 用于调试和发布(意味着总共有 4 个 key )。所以我想知道我是否可以根据 buildType 和 productFlavor 指定 sourceSets。本质上,我想知道如何实现这样的目标:
src
├── debug
│ └── flavor1
│ └── res
│ └── values
│ └── gmaps_key.xml
├── release
│ └──flavor1
│ └── res
│ └── values
│ └── gmaps_key.xml
gradle 将在何处使用 src/<currentBuldType>/<currentProductFlavor>/*
作为其 sourceSet 的一部分。
本质上我想要它,这样如果我运行 gradle assembleFlavor1Debug
它将包括 src/main/*
下的所有内容, src/flavor1/*
, 和 src/debug/flavor1/*
.
我的 build.gradle 非常简单:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.5.0'
}
}
apply plugin: 'android'
android {
compileSdkVersion 8
productFlavors {
flavor1 {
packageName 'com.flavor1'
}
flavor2 {
packageName 'com.flavor2'
}
}
}
有什么想法吗?或者也许有更好的方法?
最佳答案
我碰巧因为对我的回答的评论而回到这个问题上,并意识到这个答案是多余的(仍然比公认的更好,甚至更好)。对于每个 productFlavor 和 buildType,组合和单独的源集已经存在。即 src/{buildType}
、src/{productFlavor}
和 src/{productFlavor}{buildType}
是已经可用的源文件夹。
本质上,OP 所需要做的就是将资源放入 src/flavor1Debug
中,这相当于 OP 设想的 src/debug/flavor1
.
旧答案:我已经用 buildConfig
做了类似的事情,但希望它应该与 sourceSets
一起工作。
基本上,您在变量中的 productFlavors
级别定义通用内容,并在向下移动时不断添加内容。
productFlavors {
def common = 'src/main'
flavor1 {
def flavor = 'src/main/flavor1'
buildTypes {
debug {
sourceSets {
res.srcDirs = [ common + ',' + flavor + ',' + 'src/main/debug'
}
}
release {
sourceSets {
res.srcDirs = [ common + ',' + flavor + ',' + 'src/main/release'
}
}
}
}
我还没有测试过这个。我认为您可能需要使用 android.sourceSets
而不仅仅是 sourceSets
。
我还需要为 productFlavors
定义单独的资源,因此我在构建文件的后期使用了单独的语句。像这样:
android.sourceSets.flavor1 {
res.srcDirs = ['flavor_resources/flavor1/res']
}
如果需要,您应该可以使用 android.sourceSets.flavor1.debug
。
另请注意,根据 Android Gradle user guide ,使用 srcDir
将目录添加到默认源并使用 srcDirs
替换它们。
关于android - 如何指定每种风格的 buildType sourceSets?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18119342/
我想在我的项目中配置第三个 BuildType,它继承另一个 BuildType 的所有配置。 我该怎么做? 最佳答案 只需在构建类型中使用 initWith 属性即可: uitesting {
我有两个 gradle 模块 :app (安卓应用) :data (安卓库):app取决于 :data .我创建了一个额外的 buildType对于两个名为 mock 的模块.当我构建 :app在 m
我创建了如下的自定义 buildType: buildTypes { releasefree.initWith(buildTypes.release) release
我的Android项目具有多种构建类型和productFlavors flavorDimensions "default" productFlavors { favor1
这是我的 build.gradle(Module: app) 的一部分 buildTypes { release { minifyEnabled false p
我正在使用 android 实验性插件 0.4 ( gradle 2.8 ) 并想修改与 buildType 关联的所有任务;在我的案例中进行调试。 目前,我正在使用以下“hack”: tasks.a
enter image description here 我正面临这个问题 Could not find method buildTypes() for arguments [build_3r52yu
我在buildTypes中有四个条目。它工作正常,我可以在linux终端上触发gradle build命令,在项目目录中创建8个apk文件,等等。在android studio中,我可以在构建版本之间
谁能解释buildTypes块如何在Gradle中工作? 据我所知,调试块在 Debug模式下运行,发布块在 Release模式下运行。 但是,如果我运行Gradle脚本,则这两个块都将运行! b
我无法创建使用不同 list 的两种不同构建类型。即使使用--rerun-tasks重新运行gradle并完全删除了构建目录后,apk中包含的AndroidManifest还是不正确的。例如,我运行a
我的项目gradle文件中出现此错误: 'buildTypes' cannot be applied to '(groovy.lang.Closure)' 我目前正在使用Android Studio
我正在使用以下配置: android { // a lot more of definitions... signingConfigs { // For advanced-artefacts,
BuildType 对象(Gradle Android 插件)的这两个属性有什么区别? applicationIdSuffix 和 packageNameSuffix? zipAlign 属性是什么意
我是 Gradle 构建工具的新手。我想在 Android 应用程序中创建常量 OPEN_WEATHER_MAP_API_KEY 但出现以下错误 构建.gradle `apply plugin:
我想通过以下方式区分发布和调试 buildTypes: buildTypes { release { minifyEnabled false signingC
我有三种构建类型,我试图让 staging 构建类型运行,但我收到以下错误: Error: The apk for your currently selected variant (app-stagi
我有一个 Android 应用程序,我想更改调试和其他 buildTypes 的应用程序标签。我没有任何口味! 这是我认为应该有效的设置: -src |-debug |-res
我想设置一个项目来构建两个可以安装在同一设备上的不同 apk - 其中一个是生产 apk,第二个是调试 apk。为此,我在 build.gradle 中定义了: buildTypes {
我有 2 种风格的应用程序,每种都有自己的 google maps (v1) key 用于调试和发布(意味着总共有 4 个 key )。所以我想知道我是否可以根据 buildType 和 produc
决定使用 Gradle 6.5 从 Android gradle plugin 3.5.x 切换到 gradle plugin 4.10 并坚持错误。 这是我的 build.gradle defaul
我是一名优秀的程序员,十分优秀!