Android Studio: каждому варианту присваивается свой значок
В Android Studio я хочу, чтобы у каждого варианта моего приложения была своя иконка.
Я пробовал разные способы, в том числе то, что предлагается здесь. Как предоставить разные значки приложений Android для разных типов сборки gradle? но это не работает
вот что я написал в файле build.graddle:
flavorDimensions "marketplaceA"
productFlavors {
koanFlavor {
dimension "marketplaceA"
resValue "string", "app_name", "Koan"
manifestPlaceholders = [
appIcon: "@mipmap/ic_launcher"
]
minSdkVersion 20
targetSdkVersion 27
versionCode 3
versionName '1.1'
}
koanSEFlavor {
dimension "marketplaceA"
resValue "string", "app_name", "Koan SE"
manifestPlaceholders = [
appIcon: "@mipmap/ic_launcher"
]
minSdkVersion 20
targetSdkVersion 27
versionCode 3
versionName '1.1'
}
}
И, так как я разделяю одно и то же разрешение в каждом варианте:
Я не делал res папку для каждого варианта
Я заполнил папку mipmapXXX основной папки res двумя версиями файлов xml и png
но значок не отображается, когда я запускаю приложение в эмуляторе (странно то, что оно отображается только на моем планшете Shield K1, на всех других пробных смартфонах, которые я пробовал, значок не отображается)
Обновить:
Я просто попытался добавить папки mipmapXXX к папкам каждого варианта, сохраняя одинаковое имя на всех ресурсах, изменяя только содержимое png, но все же...
Может ли моя проблема исходить из моего launcher.xml?
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@drawable/ic_launcher_background" />
<foreground android:drawable="@drawable/ic_launcher_foreground" />
</adaptive-icon>
В Android Studio, когда вы открываете файл ic_launcher.xml, вы видите значок на вкладке previewx. Прямо сейчас я вижу только значок по умолчанию:S
Обновление II:
Дело в том, что я пошел за решение, где я поместил это в build.gradle для каждого варианта
manifestPlaceholders = [
appIcon: "@mipmap/ic_launcher"
]
а затем поместите 2 файла ic_launcher в папку по умолчанию. Я должен был добавить в манифест
android:icon="${appIcon}"
Я думаю, что это плохое решение:(
Я сейчас пытаюсь найти решение @W0rmH0le, но что-то не так
Как избавиться от адаптивной иконки в пользу моей простой иконки?
ЗАКЛЮЧИТЕЛЬНОЕ ОБНОВЛЕНИЕ:
Советы от @W0rmH0le и @Derek действительно помогли, но вот информация, которая могла бы мне очень помочь в решении моей проблемы:
1) Новый интерфейс -> Image Asset UI в AS - единственный путь, и вы можете использовать его снова и снова, пытаясь добраться до нужного вам значка.
2) После того, как вы закончили работу с пользовательским интерфейсом Image Asset, выполните "Build -> Clean Project" и "Build -> Rebuild Project"
3) На этом этапе вам лучше использовать adaptive-icon, поскольку системы, на которых будет работать ваше приложение, могут превратить ваш значок в нечто уродливое, если вы этого не сделаете.
4) Поскольку вы используете Adaptive-Icon, не пытайтесь использовать фон с прозрачностью. Интерфейс Image Asset UI отобразит это красиво, но прозрачность не поддерживается в адаптивном фоне значка
5) Наконец, чтобы получить 2 версии значков, я добавил один значок в обычный процесс и пошел в проводник, чтобы скопировать папки mipmapXXX в безопасное место. Затем я добавил другую иконку в обычный путь. Чтобы закончить, я вставил сохраненные папки mipmap в дерево папок variante, как упомянуто @W0rmH0le
2 ответа
Самый простой способ добиться этого - создать новую папку ресурсов для каждого варианта.
Например:
\src
|
| -- \main
| |
| | --- \res -> Here, you place all default and common icons
|
| -- \koanFlavor
| |
| | --- \res -> Add only the icons that are different from default one
|
| -- \koanSEFlavor
| |
| | --- \res -> If you have one icon that are different from main and koanFlavor, you can place here
Замечание: эти значки разные, но они должны иметь одно и то же имя.
Вам не нужно создавать одну папку для каждого аромата... Даже если у вас есть 2 аромата, вам не нужно создавать 2 дополнительные папки (koanFlavor
а также koanSEFlavor
). Вы можете разместить все иконки одного аромата в главной папке. Таким образом, вам просто нужно создать одну дополнительную папку для поддержки другого варианта.
Вам также не нужно дублировать все значки. В папку аромата следует добавлять только те значки, которые отличаются от основной папки.
РЕДАКТИРОВАТЬ
Ваш значок определяется через Gradle по адресу:
manifestPlaceholders = [
appIcon: "@mipmap/ic_launcher"
]
Это ic_laucher
это значок, который будет использоваться в качестве значка запуска. Так, ic_launcher.png
это значок, который вы должны переместить в определенные папки
Нашел простой способ сделать это
Добавьте нужные изображения в app->src->main->res во всех доступных для рисования папках, в этом примере изображения называются x_launcher и y_launcher.
Если, например, у вас есть потоковые ароматы внутри вашего файла app- > build.gradle
productFlavors {
xFlavor {
dimension "default"
signingConfig signingConfigs.release
manifestPlaceholders = [
appIcon: "@mipmap/x_launcher",
]
}
yFlavor {
dimension "default"
signingConfig signingConfigs.release
manifestPlaceholders = [
appIcon: "@mipmap/y_launcher",
]
}
}
Затем вам нужно изменить строку app->src->main->AndroidManifest.xmlandroid:icon="@mipmap/ic_launcher"
кandroid:icon="${appIcon}"