[Android Software Development] osm0sis:
With this major release we finally get to bid good riddance to mkbootfs. The idea behind this is to ensure everything is as likely to work correctly as possible the first time, with no added command-line switches, no matter if OEM X adds crazy binary Y into /sbin and it requires stupid Z specific permissions, any file from the original unpacked ramdisk will now retain all of its original permissions. Please see my previous Development Update posts regarding AIK-mobile, AIK-Win32 and the NEW(!) macOS (Darwin) support for AIK-Linux for more details on the specific workarounds I had to employ for each platform.

Please also note that for now SIN support is absent from macOS in AIK-Linux because I cannot compile the SIN unpacking tool myself due to the closed-source nature of it. However, I have been in contact with [MENTION=4120742]munjeni[/MENTION] and he assures me that he will work on macOS cross-compiles of it when he has some time; hopefully we'll have full feature parity for macOS in AIK v3.1.

Special thanks to [MENTION=6842057]nathanchance[/MENTION] who spent several long hours with me trying to work out the totally crazy loop mount command behaviors on the Pixel 2; AIK-mobile would not support Pixel devices right now if it weren't for his excellent help! Check out Flash Kernel if you're on one of his supported devices.

Per usual, the AIK Build Farm has been updated accordingly. Happy hacking!

Flashlt v3.0 is available over in my Odds and Ends thread in case anyone missed it, as it's the perfect companion package to AIK-mobile. It now has some new features like flashing/dumping any device partition and Pixel 2 support.

NOTE: Downloads are hosted on the XDA DevDB Project Downloads page since AIK-mobile exceeds the 20mb zip attachment size limit. These are now also direct-linked in the OP which should get around any issues from downloading via Tapatalk/XDA Labs or without an account, as I'd noticed the download rates and counts were pretty much cut in half on the first versions served from the DevDB.

I work on these projects in my limited time off, so if you like the progress I'm making, or enjoy anything else I've done on xda, please do hit the donate link from my profile. Thanks for your support!

Android Image Kitchen v3.0:

- remove mkbootfs

- add proper cpio repacking, setting UID:GID to root:root to work around Windows incompatibilities

- use Windows "sudo" (Administrator privileges) with find to traverse 000 permissioned (restricted) directories for the cpio repack when detected

- use chmod during cleanup to ensure full removal of 000 permissioned (restricted) ramdisk directories

- when no file name is supplied use the first one found in the working directory

- actually fix AVB signature detection in some scenarios

- fix bug where cpio would dump to main working directory if ramdisk directory could not be accessed (e.g. open in another window/prompt)

- fix handling of filenames with ), as would fail inside if()else() statements

- explicitly set ramdisk root directory (booted "/") to 755 permissions (AOSP default) to avoid issues in some environments

- fix bizarre expansion of saved script paths if run from outside AIK directory

- fix to remain in start directory when cleanup run from outside AIK directory

- fix unpacking with relative filename in start directory when run from outside AIK directory

- update to the latest Cygwin binaries and libraries

- update dumpimage and mkimage binaries (2017.11)

- update mkbootimg, unpackbootimg, pxa-mkbootimg, pxa-unpackbootimg, unpackelf, futility, mkmtkhdr and dhtbsign binaries from my repos

- add current run directory to --avbkey name search list

AIK-mobile v3.0 + AIK-Linux v3.0:

- remove mkbootfs

- loopback mount a make_ext4fs .img to unpack the ramdisk into to allow proper cpio repacking within booted Android with full control of ramdisk properties (AIK-mobile)

- add remount.sh script and README into unmounted ramdisk directory in case the ramdisk .img becomes unmounted (AIK-mobile)

- call cleanup.sh from unpackimg.sh for cleanup functions

- make --sudo functionality the only unpack/repack method to ensure proper full control of ramdisk properties (dummy switch remains for backwards compatibility) (AIK-Linux)

- create magisk.img if needed (e.g. clean recovery flash of Magisk 14+) (AIK-mobile)

- possible fix for stuck Magisk module update message on some devices by ensuring install is to magisk_merge.img (AIK-mobile)

- bump Magisk template version to 1400 (AIK-mobile)

- actually fix AVB signature detection in some scenarios (AIK-Linux)

- fix unpacking with relative filename in start directory when run from outside AIK directory

- add a silent run of cleanup.sh to aik --uninstall functionality to avoid any mount issues (AIK-mobile)

- add macOS (Darwin support), with readlink, dd, cpio, file and tail functions/substitutions as workarounds for poor/broken distro binaries (AIK-Linux)

- add the latest MacPorts binaries and libraries for dd, cpio, file, lzop, tail and xz functionality on macOS (AIK-Linux)

- add workaround to use the latest installed JRE on macOS since it still ships with JDK 7, too old for AVBv1 signing (AIK-Linux)

- fix to ensure the ramdisk root is always root:root ownership (AIK-Linux)

- update dumpimage and mkimage binaries (2017.11)

- update mkbootimg, unpackbootimg, pxa-mkbootimg, pxa-unpackbootimg, unpackelf, futility, mkmtkhdr and dhtbsign binaries from my repos

- fix --avbkey name without path

- clean up --level output (AIK-Linux)

- add current run directory to --avbkey name search list

More on my own build changes in the commits here: https://github.com/osm0sis/mkbootimg; https://github.com/osm0sis/pxa-mkbootimg; https://github.com/osm0sis/unpackelf; https://github.com/osm0sis/futility; https://github.com/osm0sis/mkmtkhdr; https://github.com/osm0sis/dhtbsign.

Installation information and details on each edition can be found in the OP for Win32 or the AIK-mobile and AIK-Linux initial release notes.

If you are reporting a problem with your device, please clearly state your device name and model/variant as well as provide a link to the image file.