如果我们在清单中设置android:debuggable = true并且如果我们在iOS中设置android:debuggable = false,是否可以为应用程序设置单独的图标?
答案 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上看到的那样):
我已经创建了mipmap文件夹,因为它只是用于放置app / launcher图标的文件夹。所有其他图像应放在可绘制的文件夹中。
将ic_launcher图标添加到创建的文件夹(app&gt; src&gt; res&gt; mipmap&gt; ic_launcher.png)。
现在,只需在AndroidManifest上引用您的图标,如下所示:
<application
android:name=".MyApplication"
android:icon="@mipmap/ic_launcher"
...
</application>
魔术就完成了!
答案 7 :(得分:0)
无需摆弄gradle
的简单解决方案:
在debug
下创建一个文件夹module_name/src
然后在 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.
在生产中得到验证和使用。
答案 8 :(得分:-2)
您可以尝试在drawable文件夹中使用两个不同的应用程序图标 - 即:
将调试模式设置为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>