9

I have created all my adaptive icons in the Image Asset tool but its not creating the ic_launcher_foreground.xml file - which in turn is causing my build to fail because the foreground.xml file is being referenced in the ic_launcher.xml and ic_launcher_round.xml files.

I have read many threads on how to resolve this but none of them are working.

As well, both ic_launcher.xml and ic_launcher_round.xml files are specifically referencing these two files:

<background android:drawable="@drawable/ic_launcher_background" />
<foreground android:drawable="@mipmap/ic_launcher_foreground" />

The /drawable folder is being created with the ic_launcher_background.xml file, but the Image Asset tool is not creating a /mipmap folder - it looks to be creating all the other /mipmap-XYZdpi folders and icons.

I bring this up because alot of other threads show the ic_launcher.xml and ic_launcher_round.xml files reference both background.xml and foreground.xml files in the same /drawable folder, unlike mine above.

In Image Asset: Foreground Tab: Layer Name: ic_launcher_foreground Asset Type: image Path: /dev/myApp/resources/myCustomIcon.png Background Tab: Layer Name: ic_launcher_background Asset Type: image Path: res/drawable/ic_launcher_background.xml

The only time I can get the ic_launcher_foreground.xml file to appear in the "Output Files" screen is if on the foreground tab I select Asset Type: Clip Art

UPDATE:

I found a ic_launcher_foreground.xml file in a drawable (v24) folder deep in an Android Studio folder related to my project. I copied that file to my projects res/drawable folder - and now I get the Android half robot Icon for my app when it compiles to my test device.

2
  • Guess I wanted to do the opposite: get my new icon to be used. After making the new icon in Image Asset Studio, I copied ic_launcher_foreground from res/drawable to res/drawable-v24, overwriting the Android half robot one there. (Better done in Project view rather than Android view.) Commented Dec 11, 2020 at 18:18
  • 1
    not sure if changing the name to "ic_launcher_foreground_something" while creating the image asset helps
    – YoussefDir
    Commented Aug 11, 2021 at 4:49

7 Answers 7

7

Well, I figured this out - finally. Posting my answer for anyone else that has the same issues.

Using Image Asset tool - ic_launcher_foreground.xml and ic_launcher_background.xml will ONLY be generated if each type (foreground tab/background tab) Asset Type is defined as anything BUT an image type. PNG/JPG asset types do not generate these xml files.

Regardless of Asset Types, both ic_launcher.xml and ic_launcher_round.xml WILL be generated. Both of these xml files simply reference other files, if Asset type is color/art/text - the reference will be to other XML files that will either be in the @drawable/ folder or the @values/ folder.

<background android:drawable="@drawable/ic_launcher_background" /> OR 
<background android:drawable="@values/ic_launcher_background" /> 
//@drawable - is the root of all your drawables folders
//   - and references only XML, ie: ie_launcher_background.xml

If the Asset Type is an image (png/jpg) then the reference will be to the newly created png/jpg files that exist in any of the @mipmap folders.

<foreground android:drawable="@mipmap/ic_launcher_foreground" />
// @mipmap is simply root of all your mipmap folders
// references actual png files, ie: ic_launcher_foreground.png

And finally, if you are using Cordova, you need to modify your config.xml to reflect the icon FILES to use:

<edit-config file="app/src/main/AndroidManifest.xml" mode="merge" target="/manifest/application">
     <application android:icon="@mipmap/ic_launcher"  android:roundIcon="@mipmap/ic_launcher_round" />
</edit-config>
// this telling the app to find those two XML files in the mipmap-anydpi-v26 folder
// and those files in turn tell the app to find all the png files in the other "mipmap" folders

// if it were this:
<edit-config file="app/src/main/AndroidManifest.xml" mode="merge" target="/manifest/application">
     <application android:icon="@drawable/ic_launcher"  android:roundIcon="@drawable/ic_launcher_round" />
</edit-config>
// this telling the app to use the XML files sourced in the drawable folders
// if you used png as foreground and color as background
// ic_launcher.xml/ic_launcher_round.xml would both point to:
//      @mipmap/ic_launcher_foreground   (ie: png images)
//      @drawable/ic_launcher_background  (ie: xml files)

I hope this helps others as I feel all of the above is poorly explained in other documentation.

0
2

It is very simple now: start "Image Asset Studio" by Right clicking on the "res" or "mipmap" folder and select "New > Image Asset" from the pop-up menu. Image Asset Studio will now open. Now you can create an Adaptive Launcher Icon or Legacy Only Launcher Icon as per your requirements.

To update and existing icon just select your existing ic_launcher_foreground.xml file and ic_launcher_background.xml file and hit "Next" to create the new definitions, overwriting the old ones.

1

With Windows Explorer go to your project "res" folder where all "ic_launcher files" are stored and delete all "ic_launcher files" first

Now in Android Studio "click on mipmap folder"->"Generate image asset".

It solved the issue for me

1

This page is great for creating all the icons: https://icon.kitchen/

0

Well, what I did... (It often happens that others' solutions who say they finally fixed it never work for me, so I thought I would contribute yet another solution that might only work for me :) )

First I generated the image assets file as-is. I right-clicked on the res folder, clicked "New", then "Image asset". I left the "source asset" path as-is (with the path to the launcher_foreground.xml file in place) and created the assets.

Then I went back and generated the image assets again, but this time with my own png image. Seems to have worked so far, at least until the next update makes this solution obsolete.

0

On the second page of the asset studio wizard, there is a dropdown called "Res Directory".

I had to select debug before clicking finish. I was able to build after that.

0

Open your Android Studio and go to your project then

go to android-> app -> scr -> main -> res -> mipmap-anydpi-v26 on Right click -> New -> image Asset -> Configure image asset -> path -> mipmap-hdpi -> ic_launcher_foreground.png

Following these steps will solve your problem definitely.

Not the answer you're looking for? Browse other questions tagged or ask your own question.