Releases: khanhduytran0/LiveContainer
3.2.0
This version focuses on compatibility issues, bug fixes, and QOL changes.
Note
This update introduces a change in how settings are stored. Downgrading after updating will result in the loss of all app-specific settings. Please remember to reinstall the second LiveContainer to prevent data conflict.
Additionally, some apps may display a black screen and crash after 10 seconds in v3.2.0. Please refer to the "Black Screen Fix" section below for more details.
New Features
Black Screen Fix
The Black Screen Fix is no longer applied automatically to prevent loading UIKit.framework
before the app’s main executable is opened, which could cause symbol binding issues. You can enable it in Long press app -> Settings -> enable Fix Black Screen
App Group Isolation
You can now isolate app groups for different containers, allowing multiple accounts (e.g., in SideStore) to be signed in within separate containers. You can find files inside app group in container folder -> LCAppGroup
You can enable this feature by: Long press app -> Settings -> (Container name) -> enable Isolate App Group
Fix #279
Open URL Automatically
You can now automatically open an URL in current app without being prompted.
Implement #285
Ignore Error During dlopen
This fixes errors like dlsym(xxxx, xxxx)
caused by app's initializers calling dlsym with a non-existing symbol
Fix issues like #124
Better App Signature Check
The team ID used in app signing is now considered when determining if an app needs re-signing. This allows apps to be re-signed if they are transferred between LiveContainers installed by different Apple IDs.
JIT-Less Mode Diagnose Page & LiveContainer Help
A new JIT-Less Mode Diagnose Page helps new users quickly identify configuration issues. Problematic items are highlighted in red for easy troubleshooting.
You can see this page in Settings -> JIT-Less Mode Diagnose.
You can see LiveContainer help in Apps -> ? Button
Bug Fixes & Compatibility
Separate App-Specific Settings from Info.plist
App-Specific Settings is now saved in a different file to prevent app from crashing due to reading it.
Fix #277
Hook dlsym(RTLD_MAIN_ONLY,xxx)
Redirect this call to the app's main executable instead of LiveContainer's to prevent issues.
Don't Link against UIKit.framework
This solution is provided by khanhduytran0
UIKit.framework
is now not linked by LiveContainer's main executable to prevent symbol binding issues. However this will prevent the black screen fix to be automatically applied.
App Hiding Without Device Password
App hiding now works even if the device doesn’t have a password set.
Fix #281
(Regression) Fix 2 Bugs in NSUserDefaultsHook in 3.1.0
Fix long press actions of last guest app remain
Fix #235
Fix Apps Unable to Open Their Own URL Schemes
Fix #44
Resolve Crash Loop with Blank Info.plist
Handles cases where Info.plist
is blank due to app corruption, which previously crashes LiveContainerSwiftUI.
Fix #293
Fix CallKit Unable to Initialize
Fix #258
Fix Crash when Patching Store
The cause of this issue is that LiveContainer cannot access App Group due to incorrect setup.
3.1.0
New Features
New Signer: ZSign
ZSign is now added as one of LiveContainer's signers.
- ZSign has less format check comparing to AltSign, the signer used by SideStore/AltStore/LiveContainer, so it potentially signs apps then AltSign, solving issues like #222 and #134.
- Its caching feature allows it to sign faster than AltSign.
AltSign remains the default signer for competibility reasons. You can switch signer in Settings and app-specific settings for one specific app.
Re-Sign Only on Expiration
LiveContainer now keeps track of the date of expiration of each app's code signature and only signs when its signature is expired. So re-signing happens less frequent than before.
Automatic Tweak Re-Sign
LiveContainer now keeps track of the tweaks you added and re-signs it if it is changed or its code signature expires, which makes tweak development with LiveContainer more convenient.
Implement #175.
Multiple Container Support
You can now create up to 3 containers for each app, so you can log in multiple accounts in different containers(data folders).
Keychains are now semi-separated between app containers. Note that keychains will be removed if you delete a container in LiveContainer.
keychains created in older version will remain untouched so you can continue using your apps like before. To use this feature, clean up your keychain in LiveContainer settings.
This feature, along with the following fix of NSUserDefault leak impelements #218 #176.
Language Selection for Each App
You can now choose an language for an app in app-specific settings.
Implement #171
App Preferences
You can now modify app preferences in LiveContainer like in iOS Settings. To change app preferences, go to app-specific settings -> (container name) -> Container Preferences
Implement #252
Force Orientation Lock
This option can be used to solve some game having stretched/mal-functioning UI when launched in portrait mode
Implement #251
JITLess Support for Multiple SideStores
If you use Multiple SideStores with SparseRestore, you can now export the tweaked SideStore IPA and install it manually to enable JITLess mode.
Implement #219
Bug Fixes
- NSUserDefault Leak & Random Signing out: NSUserDefault(app preferences) are now almost separated and properly placed in app's data folder. Solve #149 #163 #215
- Game Controller Support: You can now use game controllers in LiveContainer
- Hook
-[VSSubscriptionRegistrationCenter setCurrentSubscription:]
: Solve #227 - New file picker & local notification fix
- App receiving LiveContainer's launch URL after launch: Solve #243
3.0.0
Features
iOS 18.2+ Support
SwiftUI rewrite (#153)
LiveContainer now has a AltStore-like UI.
- Main page is colorful now (#192) by @slds1
- SideJITServer/JITStreamer 2.0 support
- AltStore support
- New JITLess mode that patch your store, so no jitless renew is required
- Locking(#164) apps by @fkunn1326 & hiding apps
Multiple LiveContainer (#153)
Now you can install 2 LiveContainers to run 2 apps at the same time. App and their data, Keychains and most preferences can be shared between these two. If user open an app via URL Scheme or from My Apps screen, the LiveContainer that last ran that app will be switched to.
Better Open in App Support (#153)
It turns out that some apps don't rely on URL Schemes and use Universal Links instead. In this update, the web page's apple-app-site-association
will be checked and LiveContainer will launch app based on it.
Localization (#153)
Localization is now supported. You can add a language in LiveContainerSwiftUI project and add your translation in Localizable.xcstrings
, then submit your translation as PR. We may consider adding something like a Crowdin page if it’s large enough (?)
Dedicated AltStore/SideStore source (#156)
Fixes
iOS file picker issue (#153): #68, #123, #142
Duplicated Flutter-based app bundle name (#153): #112
2.1.2
⚠️ This build is OUTDATED. Please use builds from the Actions tab or nightly.link.
Feature: AltStore support
(untested)
Bug fixes
- JIT-less setup may fail to find the signing certificate. This is worked around by re-adding the glob keychain group entitlement. (not guaranteed to work, as I couldn’t reproduce the issue in the first place)
- Switches in settings not working. Apparently using the private Preference framework causing changes to be saved to the wrong preference file.
- Some apps may get stuck on a black screen caused by an unknown deadlock. This is worked around by pre-initializing
UIScreen
. - Some apps may fail to create temporary files. This is fixed by redirecting guest app’s temporary directory to that of LiveContainer using symlink instead of creating its own. (thanks @hugeBlack for hinting me the issue)
2.1.1
2.1
I skipped 2.0 full release since this also introduces new features.
Features
Add app shortcuts to Home Screen
This was suggested by some people, and there was also a PR (#62, thanks @Vishram1123) trying to implement this as half app and half shortcuts.
I eventually implemented the entire functionality into LiveContainer.
Tweak injection support for JIT-less
Tweak injection has been there since early builds, but it wasn’t useful due to lack of user interface and JIT requirement. Now with support for JIT-less and a basic UI will make things more fun.
See this for more info.
- Includes MobileSubstrate.framework
More options in settings page
- Some toggles of newly added features
- About me
Bug fixes
- The
code signature invalid
error is very annoying. It can happen to anyone but me (it works on my machine). I tried to mitigate this error by supplying additional certificate sourceALTCertificate.p12
but it was not present on some installations. Eventually, I made it use both sources, preferALTCertificate.p12
if available. - Between 2.0-pre and 2.1, a regression caused weird issues on iOS 18 (it started with crashing (#69), “fixed”, then wrong resolution (#93)).
- (Hopefully) Broader app compatibility
2.0 pre-release
Feature: JIT-less mode
- JIT-less mode allows you to run app inside LiveContainer without having to enable JIT, which is best suited for iOS 17 as enabling JIT on device is no longer possible.
- It works by directly loading signed Mach-O from Documents directory which is only allowed if host app has
get-task-allow
entitlement.
Known issues
- App compatibility: some apps (Provenance) will not work yet; some tweaked apps (uYou+) will crash because of CydiaSubstrate.
Failed to find certificate
issue may occur for some users.
See Issues tab for more info.