A good number of ROMs now are being build using my sholes-open vendor overlay. However, I still see developers post-build theming the APKs. The "proper" way to theme a ROM is by creating a vendor config, and adding overlays. For example, my vendor overlay is "cyanogen". To replace the stock Browser icon, I could add an icon.png file in the following location: vendor/cyanogen/packages/apps/Browser/res/drawable/icon.png. The nice thing about this is that you don't need to much with the Browser repository itself, and deal wil subsequent merge headaches. It also gives you an update.zip that is already themed. Hope this helps some. Incidentally, I've started implementing theming at runtime... the basic user scenario will be: Enter settings app and choose a theme .zip that has a bunch of images that will override the resource loading of various applications. The cool thing is that you don't need to ever modify APKs anymore, and your theme will stay intact between ROMs and upgrades.