Android - 用于调试和发布模式的应用程序图标
Posted
技术标签:
【中文标题】Android - 用于调试和发布模式的应用程序图标【英文标题】:Android - app icon for debug and release mode 【发布时间】:2013-10-31 22:12:09 【问题描述】:如果我们在 manifest 中设置 android:debuggable=true 并且如果我们在 ios 中设置 android:debuggable=false 是否可以为应用程序设置单独的图标?
【问题讨论】:
How to provide different Android app icons for different gradle buildTypes?的可能重复 @longilong 这个问题是在您提供的主题之前提出的。 true,但链接的答案有一个更明确的解决方案,这是我的第一个标志。对不起:-D 【参考方案1】:我聚会有点晚了,但无论如何。目前我在 16 年发布此内容,实际上您可以设置不同的启动图标,只需将它们放在各自的目录中,但不确定它在 13 年的情况如何。为此,您需要在 app/src 下创建 debug/res 目录,并将 mipmap 或可绘制目录放在那里。 所以你会有 app/src/main/res/ 和 app/src/debug/res/ 路径。 Android 将优先考虑构建相关的资源目录 - main 目录。将您的调试和发布资源放置到适当的路径中,您就会得到想要的东西。考虑到您必须使用 Gradle 构建系统,请执行上述所有操作。
您可以在此处阅读有关此类内容的更多信息:http://tools.android.com/tech-docs/new-build-system/resource-merging
【讨论】:
这对我也有用:peirr.com/…【参考方案2】:有点晚了,但我会把我的解决方案留给正在寻找相同答案的人。
在定义 buildTypes 的 build.gradle 上,我为我的 debug_test 构建类型添加了一个后缀,以便在我的设备上安装不同的 apk。
buildTypes
release
...
debug_test
debuggable true
applicationIdSuffix '.debug'
...
之后,转到 File > New > Android Resource Directory 并为您的 debug_test 构建类型创建一个新的 mipmap 资源目录(如您在 Source set 上所见):
我创建了 mipmap 文件夹,因为它只是用于放置应用程序/启动器图标的文件夹。所有其他图像应放在可绘制文件夹中。
将 ic_launcher 图标添加到创建的文件夹中 (app > src > res > mipmap > ic_launcher.png)。
现在,只需在您的 AndroidManifest 上引用您的图标,如下所示:
<application
android:name=".MyApplication"
android:icon="@mipmap/ic_launcher"
...
</application>
魔法完成了!
【讨论】:
【参考方案3】:有点晚了(其实是8年左右),但是今天在浏览DuckDuckGo's Android source code的时候,发现他们是这样操作的:
在你的app/build.gradle
(DuckDuckGo's app/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
中使用 (DuckDuckGo's AndroidManifest.xml
)
<application
...
android:icon="$appIcon"
android:roundIcon="$appIconRound"
...
/>
...
</application>
【讨论】:
【参考方案4】:据我所知,应用程序图标仅取决于它们所在的 drawables 文件夹,并且有 no folder qualifiers for -debug 并且您无法根据清单更改来更改图标
【讨论】:
虽然确实没有用于调试的文件夹限定符,但实际上可以使用风味来实现。 在这里查看这篇文章:***.com/questions/22875948/… 参见此处:peirr.com/…【参考方案5】:你需要 gradle 和 build flavor 来做到这一点。然后你可以为不同的风格拥有不同的资源文件夹。
http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Product-flavors
【讨论】:
调试和发布构建类型为每种风格公开,所以这实际上不是提问者想要的。您可以更改每种构建风格的图标是正确的,但每种风格通常都有一个签名和未签名的 APK,如果您也可以调整这些图标,那就太好了。【参考方案6】:我知道这是一个老问题 - 但如果其他人搜索这个...
您可以通过创建调试清单 (src/debug/AndroidManifest.xml) 并更新其属性来做到这一点。
见:http://tools.android.com/tech-docs/new-build-system/user-guide/manifest-merger#TOC-Markers
【讨论】:
【参考方案7】:而亚历克斯的反应很好,以防万一不使用风格,在使用具有多个维度的不同风格时获得不同的图标,例如:
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'
【讨论】:
【参考方案8】:一个不折腾的简单解决方案gradle
:
在module_name/src
下创建一个文件夹debug
然后在debug
下创建文件夹res/drawable
或res/mipmap
并将您的调试图标放在那里。
完成上述操作后,调试资源将不再有额外的“res”文件夹,但您会在资源旁边看到“debug”注释,如下所示:
(第二个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.
在生产中得到证明和使用。
【讨论】:
【参考方案9】:您可以尝试在可绘制文件夹中使用两个不同的应用图标 - 即:
-
drawable/app_icon_release
drawable/app_icon_debug
当设置调试模式为真时:
<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>
否则,当调试模式为假时:
<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>
【讨论】:
这意味着您每次都必须手动设置!尝试使用动态解决方案。以上是关于Android - 用于调试和发布模式的应用程序图标的主要内容,如果未能解决你的问题,请参考以下文章
在调试模式下运行的同一Android应用程序在发布模式下崩溃