当前位置: 首页 > 知识库问答 >
问题:

如何为不同的等级构建类型提供不同的Android应用程序图标?

楚嘉胜
2023-03-14

我在gradle文件中设置了两种构建类型:debugrelease。我希望能够为debug构建类型设置不同的应用程序图标。有没有办法只通过构建类型实现这一点,而不涉及产品风格?建筑gradle文件如下。

apply plugin: 'android'

//...

android {
    compileSdkVersion 19
    buildToolsVersion "19.0.3"

    defaultConfig {
        minSdkVersion 14
        targetSdkVersion 19
        versionCode 30
        versionName "2.0"
    }
    buildTypes {
        debug {
            packageNameSuffix '.debug'
            versionNameSuffix '-SNAPSHOT'
        }
        release {
            runProguard false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
}

共有3个答案

夹谷志
2023-03-14

您可以在产品风味的部分AndroidManifest中指定图标。xml文件:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          xmlns:tools="http://schemas.android.com/tools">
    <application
        tools:replace="android:icon"
        android:icon="@drawable/alternative_icon" />
</manifest>

这将覆盖您在原始AndroidManifest.xml中指定的图标

鲜于宜修
2023-03-14

这是一个方便的方法,尽管它有一个重要的缺点...两个发射器都将被放入你的apk。巴泰克·利平斯基

更好的方法:疯狂OnABun的答案

Android清单.xml

<manifest 

    ...
        <application
        android:allowBackup="true"
        android:icon="${appIcon}"
        android:roundIcon="${appIconRound}"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">

    ...

    </application>

</manifest>

build.gradle

android {

    ...
        productFlavors{
        Test{
            versionName "$defaultConfig.versionName" + ".test"
            resValue "string", "app_name", "App-Test"
            manifestPlaceholders = [
                    appIcon: "@mipmap/ic_launcher_test",
                    appIconRound: "@mipmap/ic_launcher_test_round"
            ]
        }

        Product{
            resValue "string", "app_name", "App"
            manifestPlaceholders = [
                    appIcon: "@mipmap/ic_launcher",
                    appIconRound: "@mipmap/ic_launcher_round"
            ]
        }
    }
}

Github url:使用Gradle构建多版本应用程序

谢旭
2023-03-14

想通了。您需要做的是创建一个名为debug的单独src文件夹,其中包含不同的图标。例如,如果您的项目布局如下,并且您的启动器图标名为ic_launcher.png

[Project Root]
  -[Module]
    -src
      -main
        -res
          -drawable-*
            -ic_launcher.png

然后,若要为调试生成类型添加单独的图标,请添加:

[Project Root]
  -[Module]
    -src
      -main
        -res
          -drawable-*
            -ic_launcher.png
      -debug
        -res
          -drawable-*
            -ic_launcher.png

然后,当您在调试构建类型下构建时,它将使用调试文件夹中的ic_launcher。

 类似资料:
  • 问题内容: 我的gradle文件中设置了两种构建类型:debug和release。我希望能够为debug构建类型设置其他应用程序图标。有没有办法通过构建类型来实现此目的而又不涉及产品风味?build.gradle文件在下面。 问题答案: 弄清楚了。您需要做的是创建一个单独的src文件夹debug,其中包含不同的图标。例如,如果您的项目布局如下,并且启动器图标称为ic_launcher.png: 然

  • 我正在构建一个具有多种不同风格的应用程序。我的问题是,如果我为基于flavor的活动使用不同的代码,我是否需要在所有flavor directores中包含该代码的副本,或者如果我只将代码副本保留在app/src/main/java目录中,如果我不将其包含在flavor目录中,其他所有flavor是否会使用main/java中的文件。 我有 app/src/main/java/com/mycomp

  • 我正在为我的应用程序准备图形。首先,我用photoshop准备xxhdpi分辨率普通屏幕(三星galaxy s4)的图形。现在,为了支持其他分辨率,我使用ldpi、mdpi、hdpi和xhdpi的分辨率进行了转换。 我的问题是,新的xhdpi图形在Nexus 10 xhdpi设备(也在小型2.7英寸ldpi设备上)上看起来模糊或扭曲。如何创建图形以支持这种多分辨率和各种屏幕大小的设备。

  • 问题内容: 我正在编写的代码()包括让每个客户在处理的特定时间点插入自己的计算器的功能。这是为了允许自定义业务规则。至此,计算已经完成,我们知道了很多事情,其中​​有些可能与计算有关。 将为一组特定的输入参数创建并运行一次。 我的计划是使用依赖注入在构造函数中给出一个。这允许不同的用户插入自己的。该会返回一个表示为这个特殊的运行支付的附加费的数额。其他人将实现各种计算器,我需要能够更新我的代码而不

  • 我正在使用代码优先和EF6创建一个小项目,但现在我面临一个问题: 如果一个实体有一个自动ID PK,并且例如3个实体(ID:1,ID:2,ID:4-Id3已删除),那么克隆上下文将具有(ID:1,ID:2,ID:3)的实体。 我的问题是:有没有办法强制AI PK的值,或者至少强制跳过ID?或者,是否有通过dbcontexts将数据库复制到另一个数据库的最佳方法? 我在这里发现了一篇关于编程生成ID

  • 本文向大家介绍spring Profile如何为不同环境提供不同的配置支持,包括了spring Profile如何为不同环境提供不同的配置支持的使用技巧和注意事项,需要的朋友参考一下 说明 Profile为在不同环境下使用不同的配置提供了支持(开发环境下的配置和生产环境下的配置肯定是不同的, 例如, 数据库的配置) 。 在spring开发中用@Profile 注解使用来选择行配置系统属性。而在sp