Note: Some apps are more difficult to theme than others. Facebook Messenger for example is notoriously difficult to theme. I’ll be walking you through this guide using the Dropbox app as an example, since it is among the easiest to edit.

Requirements

Download all of the required tools and install them on your PC, including the test.apk provided above. Dropbox is one of the easier apps to theme, so we’ll use it for this tutorial. You should also transfer framework-res.apk from your phone to your PC, it is located in /system/framework/ on your internal storage. Drop the APKTool and the AAPT inside the “Other” folder inside the main directory of the APK Multi Tool.

Drag the test.apk into the “Place-apk-here-for-modding” folder inside APK Multi Tool directory, and you’ll be greeted with a command terminal.

Hit any key to proceed, and you’ll see a terminal menu with a bunch of options. Choose option 24. You’ll go back to the main terminal screen, but “test.app” will be your project. So press 9 to decompile the apk, and then press 12 to run a test-build. This is a good practice for seeing if something was set up wrong. If the app builds correctly, press 2 and minimize the script that appears. Since the test build checked out, let’s dive into editing the XML code of the apk. Please follow along carefully. Inside the extracted .apk folder, go into the “res” folder and open “AndroidManifest.xml” with Notepad++. Now press CTRL+F to find the following string: android:background Use the “Find All” option, and there should be around 190 strings found. So now you need to go through each and every highlighted string, to make sure you don’t miss any when we change the background color of the app. Scroll through until you find “Camera_upload_grid.xml” which contains the string “android:background=”@*android:color/white”. Copy that entire string and press CTRL+H so the “Replace” dialogue pops up. Paste the string into the top and bottom lines, but we’ll need to change it. Inside the decompiled .apk folder, go into /res/values/colors.xml and open it in Notepad++. Look for the line “abs__background_holo_dark”, which is most definitely a background. So now copy that string, and go back to the first XML file we had opened, with the Replace box still open, and in the bottom line paste the string you just copied. So you should now have in the bottom line of the Replace dialogue: android:background=”@color/abs__background_holo_dark Now hit “Replace All”, and it’s going to change all of the @android:color/white’s to use the background_holo_dark instead. Now continue scrolling through the entire .xml, searching for any android:background strings that are using a hex value (#fffffff) or anything other than what we just replaced them with. For the ones you find, change the strings to use the new one (abs__background_holo_dark). So we’ve changed the background, now we’re going to change the text color. So follow the same procedure we just did, but this time do a CTRL+F for “android:textColor”. You’ll get around 166 lines found. You’ll see things like “android:textColor=”#ffbbbbbb”, etc. So look inside the Colors.xml again and we need to figure out which lines to replace for the text color. You can see the android:textColor=”#ffbbbbbb”,  “#ffffffff”, “#ff717171”, and “#ffcccccc” in the screenshot and in your search results in Note++. Open your Colors.xml again now to find which line we want to use for the text color. So go back to the first .xml and do CTRL+H for the Replace dialogue again. Now copypaste the “android:textColor=”#ffbbbbbb” string into the top and bottom, and change the bottom line to “android:textColor=”@color/text”. Now once again, search through all of the android:textColor lines and change anything that has a hex value in the string. Finally when you get to the styles.xml file, you want to remove the inverse from a few lines, starting at line 260 and continuing downwards for a few lines. So delete the “Inverse” from those strings. Next you’ll see some hex values around on lines 527, 536, 573, 579, 585, 601, and a few others. Replace the from (#ffffffff) to (@color/text). Press CTRL+F to search in Notepad++ for cacheColorHint, divider, @*android:color/, and Inverse. The cacheColorHint is the scrolling background, so we need to make sure they’re using our background color. The dividers are self-explanatory, and we can change their hex values if you want. The only thing is that you must not touch anything that points to @drawable. Those are typically images stored as .png files elsewhere in the .apk folder. When you search for “inverse”, it will display references to textAppearanceInverse. You need to double-click each one of these and delete the Inverse from those strings. Finally, the search for @*android:color/ will just double-check if we missed any framework edits. If you find anything that says “android:popupBackground”>@*android:color/white”, you need to change it to “android:popupBackground”>@color/abs__background_holo_dark”. This includes line 911, which can be confusing because it already points to android:color/black. Next we will open res/values/colors.xml and change it to look like this:

Next res/values/styles.xml, and scroll down to line 328. Change it like this: (