[TUTORIAL][OB12][7.1.1] Enable System-Wide Round Icon Suppport on OnePlus 3/3T

helandortega

Senior Member
Nov 3, 2015
182
56
0
This guide will help you activate "Round Icons" on your android device. Take note that round icon isn't provided by launcher but the app itself. Every app that supports round icon will provide two type of icons (normal and rounded), so what will we do is enabling using the round icon provided by OEM by change framework-res.apk in our devices.



Requirements:
- OxygenOS Open Beta 12 based on Android Nougat 7.1.1
- Custom ROM based on Android Nougat 7.1.1
- Must be rooted!
- Root Explorer

Navigate to this location: \root\system\framework\

Replace the current framework-res.apk file to the modified framework-res.apk which can be downloaded here.
Note: It is recommended to copy it from recovery, but you can also copy it directy via root explorer but your device will restart instantly

Last is clear the pixel launcher data
App Info -> Storage -> Clear Data

What I only did is I edited the \framework-res\res\values\bools.xml and change the value from
<bool name="config_useRoundIcon">false</bool>
to
<bool name="config_useRoundIcon">true</bool>

This will trigger the launcher to use the round icon of any apps that are supported.

DOWNLOAD: framework-res.apk
 
Last edited:

Manav__25

Senior Member
Feb 28, 2017
106
10
0
This guide will help you activate "Round Icons" on your android device. Take note that round icon isn't provided by launcher but the app itself. Every app that supports round icon will provide two type of icons (normal and rounded), so what will we do is enabling using the round icon provided by OEM by change framework-res.apk in our devices.



Requirements:
- OxygenOS Open Beta 12 based on Android Nougat 7.1.1
- Custom ROM based on Android Nougat 7.1.1
- Must be rooted!
- Root Explorer

Navigate to this location: \root\system\framework\

Replace the current framework-res.apk file to the modified framework-res.apk which can be downloaded here.
Note: It is recommended to copy it from recovery, but you can also copy it directy via root explorer but your device will restart instantly

Last is clear the pixel launcher data
App Info -> Storage -> Clear Data

What I only did is I edited the \framework-res\res\values\bools.xml and change the value from
<bool name="config_useRoundIcon">false</bool>
to
<bool name="config_useRoundIcon">true</bool>

This will trigger the launcher to use the round icon of any apps that are supported.

DOWNLOAD: framework-res.apk
Thanks man!
 

xXRapToRiXx

Senior Member
Nov 15, 2014
512
153
0
how did you decode framework-res.apk? I constantly get error message:
Exception in thread "main" brut.androlib.AndrolibException: Could not decode arsc file
at brut.androlib.res.decoder.ARSCDecoder.decode(ARSCDecoder.java:52)
at brut.androlib.res.AndrolibResources.getResPackagesFromApk(AndrolibResources.java:559)
at brut.androlib.res.AndrolibResources.loadMainPkg(AndrolibResources.java:72)
at brut.androlib.res.AndrolibResources.getResTable(AndrolibResources.java:64)
at brut.androlib.Androlib.getResTable(Androlib.java:67)
at brut.androlib.ApkDecoder.setTargetSdkVersion(ApkDecoder.java:193)
at brut.androlib.ApkDecoder.decode(ApkDecoder.java:102)
at brut.apktool.Main.cmdDecode(Main.java:166)
at brut.apktool.Main.main(Main.java:81)
Caused by: java.util.zip.ZipException: invalid LOC header (bad signature)
at java.util.zip.ZipFile.read(Native Method)
at java.util.zip.ZipFile.access$1400(Unknown Source)
at java.util.zip.ZipFile$ZipFileInputStream.read(Unknown Source)
at java.io.BufferedInputStream.fill(Unknown Source)
at java.io.BufferedInputStream.read(Unknown Source)
at org.apache.commons.io.input.ProxyInputStream.read(ProxyInputStream.java:58)
at com.google.common.io.LittleEndianDataInputStream.readAndCheckByte(LittleEndianDataInputStream.java:223)
at com.google.common.io.LittleEndianDataInputStream.readUnsignedShort(LittleEndianDataInputStream.java:100)
at com.google.common.io.LittleEndianDataInputStream.readShort(LittleEndianDataInputStream.java:188)
at brut.util.DataInputDelegate.readShort(DataInputDelegate.java:49)
at brut.androlib.res.decoder.ARSCDecoder$Header.read(ARSCDecoder.java:542)
at brut.androlib.res.decoder.ARSCDecoder.nextChunk(ARSCDecoder.java:489)
at brut.androlib.res.decoder.ARSCDecoder.nextChunkCheckType(ARSCDecoder.java:500)
at brut.androlib.res.decoder.ARSCDecoder.readTableHeader(ARSCDecoder.java:72)
at brut.androlib.res.decoder.ARSCDecoder.decode(ARSCDecoder.java:47)
... 8 more