[Galaxy S 4 i9505 Original Android Development] chenxiaolong:
Version 5.0.0 is finally released! Let me know if there is anything that should be working, but isn't working. Or if anything is out of place. Or if I made a promise and completely forgot about it... ;)

New Android app

Most of the time spent during the development version 5.0 of the patcher was on the new Android App. With 100 files changed and nearly 4000 lines of new code, there's bound to be something good right? :)

First and foremost, the old Dual Boot Switcher app has now been merged with the patcher app. It is perfectly safe to uninstall the old switcher. The switcher feature of the new app now shows thumbnails for the ROMs it can identify. The dialogs in the old app are also gone forever! All of the installed ROMs are now listed in an intuitive cards UI.

For the next version, expect to see the ability to rename ROMs in the switcher :)

The patcher got quite a bit of new stuff too. Most importantly, it now supports patching unsupported files and also supports multiple devices, so it can now do everything the PC version of the patcher can. One other thing you'll notice is that the app can now perform multiple actions simultaneously. If you want to switch to another ROM while waiting for something to patch, go ahead.

(None of the features in the previous app were lost. Anyone who uses my noobdev ROM installed in a multi-slot will find that OTA updates still work.)

For more details, see my mega commit here: https://github.com/chenxiaolong/DualBootPatcher/commit/997e8d54bae1abddf10018b89fb387da00bea20f

Command-line program

Maybe I'm the only here that actually uses the command line program, but anyway, that has also been updated to support everything that the other two interfaces support.

Multi-device

There is now support for multiple devices in all of the apps: PC, Android, and command-line. Currently, the only ROM supported in the three other devices (hammerhead, d800, falcon) is SlimRoms (because I'm a Slim developer :)). At the moment, I support and focus only on the Galaxy S4, but this new feature will make it easier to support other devices I get in the future.

Additions and fixes for supported ROMS and kernels

Added support for CyanogenMod RC releases

Added support for SOKP

Added support for Ktoonsez's F2FS enabled kernels NOTE: Support for all previous versions of the kernel have been dropped due to ktoonsez's new method of handling loki'd boot images for AT&T and Verizon

Added support for ChronicKernel 3.1. NOTE: Support for the previous non-unified kernels has been dropped

Added support for Imperium ROM (Tagging [MENTION=5322032]allexki[/MENTION])

Bug fixes

With this release, TouchWiz 4.4 finally has working vibration! The issue was due to a missing GID (Group "vibe" - GID 9300) when using an init binary compiled from AOSP. Disassembling the TouchWiz init binary to see what was missing wasn't exactly fun, but after that was figured out, everything was smooth sailing.

The permissions issue with some of the patched zips is finally fixed. Previously, some of the patched zips would have incorrect permissions set on the files and folders. This wouldn't affect installation because the recovery ignores these permissions, but if the zip was extracted on the computer, the resulting folders wouldn't be openable.

Translations

Translations don't seem to be mentioned much here, but the Android app is now fully translatable. The core of the patcher and the PC version will be made translatable in the next version.

Major hidden changes

The AOSP init patches for TouchWiz 4.4 ROMs has been updated so that the GIDs match Samsung's firmware. The addition of GID 9300 ("vibe") fixes vibration on TouchWiz 4.4 ROMs.

Partition numbers are no longer hardcoded to the jflte values. These are now specified in the configuration file.

The SELinux state for hammerhead (Nexus 5), d800 (LG G2), and falcon (Moto G) are left unchanged now (jflte's SELinux state will still be changed to permissive).

The Android application now has access to the patcher's configuration options via JSON. This allows the patching of unsupported files from Android now.

All of the command line programs have now been consolidated so most of the scripts in useful/ are now gone. The new program also fully supports everything the GUI does, including the patching of unsupported files. For people wanting to patch files from a script, patch-file.sh also has a non-interactive automated mode.

The patcher will now catch exceptions when modifying the ramdisk. This didn't matter much previously, but with the new multi-device support, choosing the device shouldn't potentially make the patcher crash.

The patcher can now search for all the boot images in the zip file. This will probably be made configurable in a future version.

Minor changes

Added a README file explaining how to compile the source code

Updated the sample patchinfo script for adding support for new ROMs

The GitHub page now indicates whether the patcher is passing continuous integration

defaults.conf -> patcher.conf because, well, it contains more than the defaults now :p

There's a brand new build system that's much more configurable than the old one

All of the patchinfo files were simplified to remove repetitive code

GPL

I shouldn't even have to point this out, but those who are incorporating any of the dual boot code and not releasing the source code (you know who you are) are violating the GPLv3 license for the patcher and the GPL (v2 and v3) licenses for many of the libraries and binaries it uses (RootTools, Python 3, PyQt5, patch, libintl, libiconv, diffutils, cygwin, and busybox) ;) The GPL (http://www.gnu.org/copyleft/gpl.html) requires anyone distributing binaries to also provide source code, even if it hasn't been changed.