No more need to decompile/recompile Swiftkey just to add your favorite themes after every update... Now you can make and test new themes on the fly too. No need to reboot, just reapply theme to see changes immediately.
Install it, enable the module, in module settings set your themelist.json and enable key label resize if you wish, restart android and your themes will be listed in Swiftkey themes setting just like any build-in theme... Apply it, done...
Took me some deep digging in the obscure code but I think I finally got it working the way I wanted.
NOTE: If you are using downloaded themes from Swiftkey store, you have to redownload them... well... not really... they are still on your /sdcard. Swiftkey will just unzip them again but this time they will be placed side by side with your custom themes in the custom folder you set in the module settings.
Download and source code links located in Xposed Module Repository.
Attachment 2: Module settings;
Attachment 1: How Swiftkey themes settings looks like with module running, Google Material Light is my theme on /sdcard;
Attachment 3: My /sdcard themes folder with additional theme downloaded from Swiftkey store;
Attachment 4: Choose your themelist.json dialog...
Current version:. v.1.14
v. 1.14 Fix for latest Swiftkey update.
v. 1.13: Fixed bug - failed to apply downloaded themes from Swiftkey store.
v. 1.12: Fix for recent Swiftkey Beta update, Now module keeps logging to "/sdcard/Xswiftkey.logcat" if debugging and export is enabled and theme is applied in Swiftkey theme settings saving any errors might occur.
v. 1.11: Added logic for dynamically locating the classes needed. At boot time module scans the Swiftkey package and grabs the names of those classes based on search criteria which are less likely to change over time. This way module is less likely to brake(I hope...) after Swiftkey update. Thanks to JesusFreke for his smali/dexlib2 library.
Fixed force close bug when browsing for themelist after clean install.
v. 1.1: Module updated for recent Swiftkey Beta update which moved some classes around. Now module needs to know which Swiftkey package to handle so new CheckBox preference is added - check if using Swiftkey Beta, reboot.
v. 1.09: Added check at module startup for critical hooks - if for example after Swifkey update module can not hook essential methods, it should exit and let Swifkey work with stock themes... Otherwise Swiftkey might delete all our custom themes.
Added new preference to enable exporting filtered logcat to "/sdcard/Xswiftkey.logcat" at boot time. Provide it to get better support.
v. 1.08: Removed save theme service required permission for better compatibility. New option to override Swiftkey theme preferences title with your themes location, app icon refresh.
v.1.07: Fixed bug: unable to browse folders if already selected theme folder path was changed(folder renamed, old path not exists). Added some user useful logging in logcat: now if you enable debug, restart android and read logcat, module will detect if there is inconsistencies in your themes and themelist - existing theme folders but missing in themelist(warning message in blue) and themes listed in themelist but missing in your theme folder(error message in red)... if any. These inconsistencies will not cause any problems(module takes care of that) but is good to keep themes folder clean...
v.1.06: Throwing the theme if is in themelist but do not exist in theme folder so Swiftkey wont crash.
v.1.05: Improved themes type handling, improved save current theme handling, some user experience improvements in Choose themelist dialog.
v. 1.04: For Android 6.0 now module should ask for read /sdcard permission if can't read it. Improved logic for how Swiftkey should add themes, added option in Module settings to enable debugging in logcat.
v. 1.03: Rebuild module with Android 6.0 SDK to see if will help with some users not seeing themes in Swiftkey Beta.
v. 1.02: Fixed force close if "assets" themes have same ID as my themes, like if you use "assets" SuperSwiftkey themes folder.
v. 1.01: Fixed bug with selecting themelist from theme folder with too many subfolders, like the one from SuperSwiftkey themes.
v. 1.0: Initial release.
If asking for help please provide logcat:
Enable debug and logcat export in module settings, reboot phone... Post "/sdcard/Xswiftkey.logcat" file.