相关疑难解决方法(0)

使用"resValue"本地化通过build.gradle添加的字符串资源

这是对这篇文章帮助我的答案的延续

我们可以添加字符串资源,如下所示build.gradle:

productFlavors {
    main{
        resValue "string", "app_name", "InTouch Messenger"
    }

    googlePlay{
        resValue "string", "app_name", "InTouch Messenger: GPE Edition"
    }
}
Run Code Online (Sandbox Code Playgroud)

它的作用就像一个魅力,并且每个风格都有不同的app名称.(app_namestrings.xml文件中删除原始字符串资源.

但是,我们如何为这个添加的字符串资源添加本地化字符串build.gradle

我们可以通过指定区域设置的附加参数吗? 或者 可以使用gradle任务来完成它?

注意:我不能这样做strings.xml(因为我的项目结构的几种方式不可行)

android android-resources android-studio android-gradle-plugin android-productflavors

13
推荐指数
2
解决办法
6333
查看次数

使用CSV/TXT文件中的名称列表(带属性)动态生成productFlavors和sourceSets

这个问题继续我的另一个问题,我想进一步改进.

我能够sourceSets使用以下代码对flavor(具有通用配置)进行分组:

(从上面链接问题的天才那里得到它)

import com.android.build.gradle.api.AndroidSourceSet
android {
    sourceSets {
        [flavor2, flavor4].each { AndroidSourceSet ss ->
            ss.assets.srcDirs = ['repo-assets/flavor2']
            ss.res.srcDirs = ['repo-res/flavor2']
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

现在,我想知道列表[flavor2, flavor4]是否可以从以下任何一个中提取:

  • 一个XML文件,我可以通过它来迭代以获得所有的味道(我将放在那里)
  • 一个CSV文件,我可以通过它迭代并获取值.
  • 一个自定义类,我可以在一个单独的文件中编写,并从类中的静态成员中获取数据.

除了风味名称,我打算将以下内容存储在外部源(上面的一个)中:

  • 应用程序ID(我将拉到productFlavors)
  • 广告单元ID(每种风格两个)
  • 一些其他自定义值,如类别等.

PORPOSE: 我想写一个通用的代码片段来迭代并动态创建productFlavorssourceSets.我已经推广sourceSets到几乎90%,一个块现在足以满足各种口味.

它现在看起来像这样:

sourceSets {
    [flavor1, flavor2, flavor3 ...].each { AndroidSourceSet ss ->
                ss.assets.srcDirs = ['repo-assets/' + ss.name.split('_')[0]]
                ss.res.srcDirs = ['repo-mipmap/' + ss.name.split('_')[0] , 'repo-strings/' + ss.name]
            }
}
Run Code Online (Sandbox Code Playgroud)

也想像productFlavors上面提到的那样做同样的事情.

STUCK …

android android-build android-gradle-plugin android-productflavors android-sourcesets

5
推荐指数
1
解决办法
917
查看次数