mirror of
https://github.com/LiveContainer/LiveContainer.git
synced 2026-04-25 09:05:53 +03:00
Labels
No labels
bug
compatibility
enhancement
multitasking
pull-request
safe area
status: broken
status: usable
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
starred/LiveContainer#1068
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
📋 Pull Request Information
Original PR: https://github.com/LiveContainer/LiveContainer/pull/153
Author: @hugeBlack
Created: 9/7/2024
Status: ✅ Merged
Merged: 9/20/2024
Merged by: @khanhduytran0
Base:
main← Head:main📝 Commits (10+)
b4d4575swift ui proof of conecpt33089d3install, uninstall, run690d45fCreate folder until app launchefa48dddata &tweak folder choosing19e7a47user can now input url scheme81a3bb6allow open url by universal links48a3085apps can be signed again if signature is invalid7065585Settings & JitLess setupbd2f05asubstitute async for all semaphorescbc1af0tweak view📊 Changes
60 files changed (+7463 additions, -75 deletions)
View changed files
📝
.gitignore(+3 -0)📝
LCSharedUtils.h(+9 -1)📝
LCSharedUtils.m(+251 -7)➕
LiveContainerSwiftUI/Assets.xcassets/AccentColor.colorset/Contents.json(+20 -0)➕
LiveContainerSwiftUI/Assets.xcassets/AppBannerBG.colorset/Contents.json(+38 -0)➕
LiveContainerSwiftUI/Assets.xcassets/AppIcon.appiconset/Contents.json(+13 -0)➕
LiveContainerSwiftUI/Assets.xcassets/BadgeColor.colorset/Contents.json(+20 -0)➕
LiveContainerSwiftUI/Assets.xcassets/Contents.json(+6 -0)➕
LiveContainerSwiftUI/Assets.xcassets/FontColor.colorset/Contents.json(+20 -0)➕
LiveContainerSwiftUI/Assets.xcassets/GitHub.imageset/Contents.json(+22 -0)📝
LiveContainerSwiftUI/Assets.xcassets/GitHub.imageset/GitHub@2x.png(+0 -0)📝
LiveContainerSwiftUI/Assets.xcassets/GitHub.imageset/GitHub@3x.png(+0 -0)➕
LiveContainerSwiftUI/Assets.xcassets/JITBadgeColor.colorset/Contents.json(+20 -0)➕
LiveContainerSwiftUI/Assets.xcassets/Twitter.imageset/Contents.json(+22 -0)📝
LiveContainerSwiftUI/Assets.xcassets/Twitter.imageset/Twitter@2x.png(+0 -0)📝
LiveContainerSwiftUI/Assets.xcassets/Twitter.imageset/Twitter@3x.png(+0 -0)➕
LiveContainerSwiftUI/LCAppBanner.swift(+321 -0)➕
LiveContainerSwiftUI/LCAppListView.swift(+533 -0)➕
LiveContainerSwiftUI/LCAppModel.swift(+136 -0)➕
LiveContainerSwiftUI/LCAppSettingsView.swift(+413 -0)...and 40 more files
📄 Description
Switch UI to SwiftUI
I migrated most of features to an AltStore-like UI written in SwiftUI.
LiveContainerSwiftUI looks like this:

Support for Multiple LiveContainer
Free development accounts can install 3 apps, so now we can install 1 SideStore and 2 LiveContainers, so people can run 2 apps at the same time. App and their data, Keychains and most NSUserDefaults can be shared between these 2 LiveContainers. If user open a app via URL Scheme or from My Apps screen, the LiveContainer that last ran that app will be switched to.
App's data and tweaks are stored in SideStore's or AltStore's app group. If a Shared App is launched, its data will be temporarily moved to the LiveContainer's document folder to prevent crash in background because of holding a file lock in the App Group folder. It data will be moved back in last launch of LiveContainer.
Apps can't be modified when in Shared state. The second LiveContainer cannot install or manage apps.
NSUserDefaultsare handled differently. Since it won't accept plists that moved to Library/Preferences after app launch, we have to manually read the plists and set it inNSUserDefaults. This solves #149Better Open in App Support
It turns out that some apps don't rely on URL Schemes and use Universal Links instead. So in the new LiveContainerSwiftUI, the web page's
apple-app-site-associationwill be checked and we will launch apps based on it. Then, aNSUserActivitywill be created with these URLs and passed toUIActivityContinuationManager, so apps will open these URLs they support.Impelement #112
Flutter apps share the bundle name of
Runner.app, so I use bundle identifier as app bundle's name during install to avoid conflicts. Also, users can select which bundle to replace if there are multiple bundles with the same bundle identifier.🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.