背景

在Android Studio中,可以有不同的生成类型,每一种都有自己的配置,类似于产品的味道(如图所示这里

问题

我希望每次我的应用程序安装在某个地方时,我都会立即知道它的类型 - 发布或调试,只需查看它即可。

为此,我想我可以使用build.gradle文件:

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

事情是,我不知道该放什么。 我希望应用程序名称不同(并且在字符串文件中有字符串,因为它已被翻译),并且我想将应用程序中某些内容的样式设置为不同(例如,操作栏的颜色) 。

我发现我可以使用“resValue”(在这里找到它),但由于某种原因,无论我做什么,它都无法编译:

  • 如果资源已经被声明(比如在app-name中被翻译),则说资源是重复的
  • 如果资源未声明,我无法通过code / xml访问它。

这个问题

如何为构建类型使用不同的资源值,即使它们已经存在?

===============>>#1 票数:20 已采纳

如何为构建类型使用不同的资源值,即使它们已经存在?

它们已经存在于main集中。 为您感兴趣的其他构建类型添加其他源集,您可以在其中覆盖所需的资源。

例如,在此示例项目中,我有一个main和一个debug 两者都在res/values/strings.xml具有app_name字符串资源,但具有不同的值。 debug版本中,将使用资源的debug版本; 在任何其他构建(例如, release )中,完全忽略debug源集,并使用资源的main版本。

请注意,我没有 release 特别是在重写资源时,这非常好 - 当您想要为该构建类型更改某些内容时,您只需要一个构建类型的源集,而不是您正在使用的每种构建类型。

===============>>#2 票数:-1

在File | Project Structure | app | Flavors中我们有:

Version Name: 1.3

在Strings资源文件中,我们有:

<string name="app_name">MyAppTitle</string>

在MainActivity类的“onCreate”中:

...
//add version to application title
int versionCode = BuildConfig.VERSION_CODE; // unused in my application
String versionName = BuildConfig.VERSION_NAME;
this.setTitle(this.getTitle() + " v"+  versionName);
...

结果是“MyAppTitle v1.3”

  ask by android developer translate from so

未解决问题?本站智能推荐:

3回复

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

这是对这篇文章帮助我的答案的延续 我们可以从build.gradle添加如下字符串资源: 它的作用就像一个魅力,并且每个风格都有不同的app名称。 (从strings.xml文件中删除原始app_name字符串资源。 但是,我们如何为从build.gradle添加的此
2回复

如何为每个构建变体设置不同的构建类型

我的应用程式有两种风格。 这两种风味使用不同的baseurl。 我总共有4个网址。 admintest adminrelease usertest userrelease 我现在仅在调试和发布中设置一个url,但找不到如何为每种口味设置url。 感谢您的
1回复

构建应用的精简版和完整版

我正在创建一个具有Lite和完整版的应用程序,一个是免费的,而另一个则需要少量费用。 由于我不想为了避免更新错误而不得不区分项目(例如仅在一个版本中更新模块),因此在Application类中设置了一个布尔值。 我想知道如何使用应用程序中的信息确定该布尔值。 我知道我可以使用不同的风味
1回复

Android Gradle:在一台设备上安装所有构建类型

在使用GCM,ContentProvider,AccountType时,如何配置项目以便能够在发布版本旁安装调试版本? (不使用口味) 我一直收到错误,例如: INSTALL_FAILED_CONFLICTING_PROVIDER或INSTALL_FAILED_DUPLICATE_PER
1回复

我们可以合并两个android源并使用产品样式吗?

我有两个具有相同源代码的 android项目,但两个应用程序中的应用程序图标均发生更改 。 但是我没有使用产品风味。 现在我需要合并源代码并使用产品风味 。 这样有可能吗
2回复

仅基于Gradle的解决方案,可基于Build Variant修改应用名称

我正在尝试修改gradle文件,以允许基于Flavor和Build Type应用程序使用不同的名称。 到目前为止,我已经成功通过Android Gradle插件文档使用Manifest Merging技术对基于Flavor的命名进行了简洁 当前 这些是我的debug和release
1回复

在gradle buildType中动态设置versionNameSuffix

主要问题是,我想根据要编译的样式将versionNameSuffix添加到我的一个buildType中。 我必须品尝original和free口味以及一个buildtype beta 。 所以我想做这样的事情: 并且betaVersion()应该取决于正在编译的betaVersi
1回复

根据构建类型更改配置文件中的字符串值-Android

我在res / values位置有一个配置文件(config.xml)。 在此文件中,我需要添加一个字符串资源,其值应根据构建类型(调试/发行版)进行更改。 无法创建多个文件,例如res / debug / values / config.xml和res / release / valu
1回复

Android风格和构建变体特定的appboy.xml文件

关于具有不同风格和构建变体的Android应用程序,我对如何构建特定字符串资源的特定风味和构建变体非常熟悉。 但是对于文件,我不确定它是如何工作的。 更具体地说,我只是为了特定的风格将Appboy集成到我的应用程序中,对于不同的构建变体,api密钥是不同的。 那么我该如何做到呢?
1回复

使用发布版本类型构建Android Studio签名的APK

我的android项目配置为具有2种构建类型: Debug和Release 。 我正在使用android studio 3.1.4。 我确实为我的Release构建类型定义了密钥存储区和其他密钥详细信息,但是在android studio中单击Build --> Build APK