gpt4 book ai didi

java - 如何在 Gradle 中使用不同的 Assets 文件夹为每种风格创建两个应用程序?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:21:28 27 4
gpt4 key购买 nike

目前我正在开发一个有 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')
}

我不得不对文件进行一些更改,但基本上就是这样。

问题:我需要在 Assets 文件夹中为这些风格中的每一种提供一组不同的 Assets 文件,这些文件将创建不同的 apk 文件但具有相同的包名称。这些 apk 文件将作为同一应用程序上传到 Google play,但适用于不同的地区。

所以包名必须保持不变。所以基本上我需要创建一种机制,而不是 5 种口味,当每两种口味都具有相同的包名称但 Assets 文件夹不同时,将创建 10 种口味。如何使用 gradle 完成此操作?

我试过像这样使用 BuildTypes 实现它:

buildTypes {
release {
signingConfig signingConfigs.release
sourceSets.main.assets.srcDirs = ['assets']
}
releaseAlt {
signingConfig signingConfigs.release
sourceSets.main.assets.srcDirs = ['assetsalt']
}
}

但出于某种原因,releaseAlt 还采用位于 Assets 目录而不是 Assets 盐目录中的文件。

最佳答案

您可以为此使用 buildTypes。

buildTypes {
release {
// ... the usual stuff here
}
releaseAlt {
// .. the usual stuff here too like signing config etc...
}
}

现在的文件层次结构:

你应该有

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/

使用此文件层次结构,当您构建 flavor1Release 变体时,您将从 flavor1/assets/ 获得 logo.png 文件,但是当您构建 flavor1ReleaseAlt 变体,此 png 将被 flavor1ReleaseAlt/assets/ 文件夹中的替换。

解释:

Gradle 使用约定优于配置(默认情况下)。特别是在项目结构方面。当构建 flavor1ReleaseAlt 变体时,Gradle(实际上是 Android 插件 ;))正在寻找一个名为 flavor1ReleaseAlt/的文件夹,其中包含一些 Assets 、资源、java 等...。这些是 Gradle 可以为此变体找到的最具体的应用程序资源。然后 Gradle 将寻找一个名为 flavor1/的文件夹,用于一些不太具体的应用程序资源。然后到一个更不具体的文件夹,称为 releaseAlt/,最后到通用文件夹 (main/)。

不同的文件夹必须有非常严格的名称才能匹配变体查找:

  • flavorBuildType/. (顺序很重要)。
  • 味道/
  • 建筑类型/
  • 主/

希望这对您有所帮助。

关于java - 如何在 Gradle 中使用不同的 Assets 文件夹为每种风格创建两个应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26881266/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com