Android - 用于调试和发布模式的app图标

时间:2013-10-22 20:49:20

标签: android android-manifest

如果我们在清单中设置android:debuggable = true并且如果我们在iOS中设置android:debuggable = false,是否可以为应用程序设置单独的图标?

9 个答案:

答案 0 :(得分:16)

我有点迟到了,但无论如何。目前我在16年发布了这个,你实际上可以设置不同的启动图标,只需将它们放到各自的目录中,但不确定它是如何在13年回来的。为此,您需要在 app / src 下创建 debug / res 目录,并将mipmap或drawable目录放在那里。 因此,您将拥有 app / src / main / res / app / src / debug / res / 路径。 Android将与构建相关的资源目录 - 目录具有更高的优先级。将调试和释放资源放到适当的路径上,您就可以拥有所需的资源。考虑到您必须使用Gradle构建系统,请执行以上所有操作。

在这里,您可以阅读更多相关内容:http://tools.android.com/tech-docs/new-build-system/resource-merging

答案 1 :(得分:2)

据我所知,应用程序图标仅依赖于它们所在的drawables文件夹,并且有no folder qualifiers for -debug并且您无法根据清单更改来更改图标

答案 2 :(得分:1)

你需要gradle并建立味道才能做到这一点。然后,您可以为不同的风格提供不同的资源文件夹。

http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Product-flavors

答案 3 :(得分:1)

我知道这是一个老问题 - 但是如果有其他人搜索这个......

您可以通过创建调试清单(src / debug / AndroidManifest.xml)并更新其属性来实现此目的。

请参阅:http://tools.android.com/tech-docs/new-build-system/user-guide/manifest-merger#TOC-Markers

答案 4 :(得分:1)

有点晚(实际上大约 8 年),但是当我今天浏览 DuckDuckGo's Android source code 时,我发现他们是这样做的:

在您的应用程序/build.gradle 中:

android {
    ...
    buildTypes {
        debug {
            ...
            manifestPlaceholders = [
                    appIcon: "@mipmap/ic_launcher_blue",
                    appIconRound: "@mipmap/ic_launcher_blue_round"
            ]
        }
        release {
           ...
            manifestPlaceholders = [
                    appIcon: "@mipmap/ic_launcher_red",
                    appIconRound: "@mipmap/ic_launcher_red_round"
            ]
        }
    }
    ...
}

并在您的 AndroidManifest.xml 中使用:

<application
     ...
     android:icon="${appIcon}"
     android:roundIcon="${appIconRound}"
     ...
/>
   ...
</application>

答案 5 :(得分:0)

虽然在不使用香精的情况下Alex的反应很好,但是在使用具有多个维度的不同口味时获取不同的图标,例如:

flavorDimensions "color", "size"
productFlavors {
    black {
        dimension "color"
    }
    white {
        dimension "color"
    }

    big {
        dimension "size"
    }
    small {
        dimension "size"
    }
}

这可以通过以下方式实现:

首先,将调试资源放在单独的文件夹中,例如:

src/blackDebug/res
src/whiteDebug/res

其次,将具有多种风味尺寸的密钥放置为源集名称必须包含所有可能的风味组合,即使其中一些尺寸不影响图标。

sourceSets {
    // Override the icons in debug mode
    blackBigDebug.res.srcDir 'src/blackDebug/res'
    blackSmallDebug.res.srcDir 'src/blackDebug/res'
    whiteBigDebug.res.srcDir 'src/whiteDebug/res'
    whiteSamllDebug.res.srcDir 'src/whiteDebug/res'
}

为了清楚起见,当使用多个维度时,以下将无效

sourceSets {
    // Override the icons in debug mode
    blackDebug.res.srcDir 'src/blackDebug/res'
    whiteDebug.res.srcDir 'src/whiteDebug/res'
}

答案 6 :(得分:0)

有点晚了,但我会留下我的解决方案,因为谁在寻找相同的答案。

在定义 buildTypes build.gradle 上,我为我的debug_test构建类型添加了一个后缀,以便在我的设备上安装不同的apk。

buildTypes {
    release {
        ...
    }
    debug_test {
        debuggable true
        applicationIdSuffix '.debug'
        ...
    }
}

之后,转到文件&gt;新&gt; Android资源目录并为您的debug_test构建类型创建一个新的mipmap资源目录(正如您在Source set上看到的那样):

Create new Resource directory

我已经创建了mipmap文件夹,因为它只是用于放置app / launcher图标的文件夹。所有其他图像应放在可绘制的文件夹中。

将ic_launcher图标添加到创建的文件夹(app&gt; src&gt; res&gt; mipmap&gt; ic_launcher.png)。

enter image description here

现在,只需在AndroidManifest上引用您的图标,如下所示:

<application
    android:name=".MyApplication"
    android:icon="@mipmap/ic_launcher"
    ...
</application>

魔术就完成了!

答案 7 :(得分:0)

无需摆弄gradle的简单解决方案:

debug下创建一个文件夹module_name/src 然后在 debug 下创建文件夹 res/drawableres/mipmap 并将您的调试图标放在那里。

完成上述操作后,调试资源将不会有额外的“res”文件夹,但您会在资源旁边看到“debug”注释,如下所示:

enter image description here

(第二个 ic_launcher.xml 被放置在 src/debug/res/mipmap 下,它在 src/debug/res/drawable 中使用自适应背景)

Thus when the build variant is selected to debug, you'll see the icon is the debug icon you provided and when the build variant is set to release, you'll have the release icon.

在生产中得到验证和使用。

答案 8 :(得分:-2)

您可以尝试在drawable文件夹中使用两个不同的应用程序图标 - 即:

  1. 抽拉/ app_icon_release
  2. 抽拉/ app_icon_debug
  3. 将调试模式设置为true时:

    <android xmlns:android="http://schemas.android.com/apk/res/android">
    <manifest>
            <application 
                android:debuggable="true"
                android:icon="@drawable/app_icon_debug"
                android:label="Your App Name" >
    
            </application>  
    </manifest>
    </android>
    

    否则,当调试模式为false时:

    <android xmlns:android="http://schemas.android.com/apk/res/android">
    <manifest>
            <application 
                android:debuggable="false"
                android:icon="@drawable/app_icon_release"
                android:label="Your App Name" >
    
            </application>  
    </manifest>
    </android>