iBotPeaches / Apktool

A tool for reverse engineering Android apk files

Home Page:https://apktool.org/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

[BUG] Repackaging App with Adaptive Icons shows Stock Android Icon

kyuds opened this issue · comments

Information

  1. Apktool Version (apktool -version) - 2.9.3
  2. Operating System (Mac, Linux, Windows) - macOS (Intel Chip)
  3. APK From? (Playstore, ROM, Other) - Other (cannot share, unfortunately)
  4. Java Version (java --version) - 17

So first of all, thank you for the wonderful project. I am currently in the process of editing an APK, and I've noticed that everything works fine EXCEPT for the application icon shown on the home screen (and app menu). Rebuilding the APK and installing it allows for the app to work fine, (including login and rendering), but the icon appears as the stock, green-ish background android icon.

After some inspection, I've noticed that this particular icon uses Adaptive Icons with the two layers, and observing that the decoded android manifest file, points to a completely different link (launcher_icon instead of ic_launcher), it seems that Adaptive Icons seems to be an issue.

I have already tried unpacking and repacking the APK without changing anything (except setting the extractNativeLibs field to true, as my APK is a split), and still the icon is not working properly.

Thank you!

Do you have a small sample of the AndroidManifest file decoded, then built/decoded again? To see the icon section.

Honestly don't know if this will help, but:
base.apk: AndroidManifest.xml:

<application android:appComponentFactory="androidx.core.app.CoreComponentFactory" android:extractNativeLibs="true" android:icon="@mipmap/launcher_icon" android:isSplitRequired="true" android:label="@string/app_name" android:name="<removed name>" android:requestLegacyExternalStorage="true" android:usesCleartextTraffic="false">

** pre/post rebuild shows the same output.
base.apk: The launcher_icon.xml in res/mipmap-anydpi-v26

<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon
  xmlns:android="http://schemas.android.com/apk/res/android">
    <background android:drawable="@null" />
    <foreground android:drawable="@null" />
</adaptive-icon>

The foreground and background images for the launcher icon is in split_config.xxhdpi.apk, but looking through them I wasn't able find any file similar to the "launcher_icon.xml" file in base.apk.

Also, I tried switching out the "@null" to the appropriate paths for the fore/background images, but that also didn't work.
Finally, I forgot to mention but the app is built with Flutter