Dev:Updating extensions for iOS 15/16

Let's collect knowledge like we did with iOS 14, iOS 13, iOS 12, iOS 11, iOS 10, iOS 9, iOS 8 and iOS 7 – paste in your notes and share what you've learned, and somebody else will organize it later. :) If you want to ask questions and share tips over chat with other developers, see How to use IRC for how to connect to #theos and #iphonedev.

Rootless
The big change with iOS 15/16 is a transition to rootless jailbreaks. Due to the introduction of Sealed System Volume in iOS 15, it is no longer feasible to continue installing packages to the system volume, located at. Starting with palera1n 2.0, packages are now expected to be installed with a prefix of  on all file paths. This also critically comes with a change to the deb  field, from   to , to differentiate "rootful" and "rootless" packages. (The architecture name is misleading - this does not change anything relating to arm64 packages prior to iOS 15.) If your package needs to support both, you can keep your existing package identifier. APT knows to install the latest version of your package that matches the device's architecture. Rootful packages will not install on rootless, and vice versa.

Current versions of Sileo and Zebra fully support installing rootless packages. Cydia will display duplicates of packages that are available in both architectures. However, installation will work as expected with either duplicate.

Community support for rootless is still actively in progress. Theos is working on support. Chariz and Havoc repos are yet to support uploading rootless packages.

Developing tweaks for the palera1n tethered iOS 15.x JB
This jailbreak is primarily a developer jailbreak and has certain restrictions.

Procursus: New Signing Requirements
iOS 15.0+ requires DER encoding of the entitlements, as such it is required that all tweaks are signed with an updated. iOS 15.1+ adds a requirement on hash agility, added in  version   which can be found here.

Low Power Mode
iOS 15.0+ introduced a new framework for handling Low Power Mode called LowPowerMode.framework. Toggling Low Power Mode can be done via the  class.

SBHIconGridSizeClassSizes
This class is responsible for icon grid constraints.

in all arguments of methods and functions is now passed via pointer, instead of being passed as a raw struct.

You can write code that supports both versions like so: