Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

LiveContainer FAQ #265

Closed
hugeBlack opened this issue Dec 18, 2024 · 3 comments
Closed

LiveContainer FAQ #265

hugeBlack opened this issue Dec 18, 2024 · 3 comments

Comments

@hugeBlack
Copy link
Collaborator

hugeBlack commented Dec 18, 2024

Note

This FAQ applies to the latest LiveContainer. if you encounter an issue, consider updating to the latest release.

1. Installing LiveContainer

1.1. LiveContainer won't open on iOS 18.2+

You must upgrade to LiveContainer 3.0.0+ to resolve this issue. If it still crashes, reboot your device.

1.2. The executable was signed with invalid entitlements

SideStore 0.6.0+/AltStore 2.0+ is required to install LiveContainer 3.2.58. Please consider upgrading.

2. JIT-Less Mode Setup

Please read the instruction about setting up JIT-Less mode carefully before submitting any issues about this.

2.1. Cannot Access App Group

There's something wrong with your SideStore/AltStore and LiveContainer setup. Please refer to Section 6

2.1. SideStore Crash After Applying the Patch

Please strictly follow SideStore installation guide before applying the patch. i.e. Sideload SideStore ipa in SideStore immediately after you Sideload SideStore from AltServer.

2.2. (SparseStore)Wrong SideStore Opened / SideStore is no Longer Available

  1. Patch SideStore -> Archive Only
  2. Patched SideStore is saved in LiveContainer's documents folder, you can see it in the "Files" app. Sideload it in the right SideStore to apply the patch.

3. Signing / App Installation Related

3.1. A wall of error including "Signature Invalid"

Please perform a test in LiveContainer settings -> Test JIT-Less Mode before submitting any issues about this.
Probably caused by certificate used to sign the app being revoked before expires.
Solution: Long press app -> Settings -> scroll down -> force re-sign

It is reported that some version of CydiaSubstrate cannot be signed by AltSign. So if the error message contains "CydiaSubstrate", please try switching to ZSign. See item 3.2 below.

3.2. /Users/runner/Library/Developer/Xcode/DerivedData/AltStore-dunvejkuqerofjghtqolpzgexuyv/SourcePackages/checkouts/AltSign/Sources/ldid/../ldid-core/ldid.cpp(1368): _assert(): end >= size - 0x10 (or something like that)

This is seen most on Flutter(Dart) apps and is caused by AltSign's strict check on app binaries.
Solution: Switch signer to ZSign.

  1. LiveContainer settings -> Default Signer -> Select ZSign
  2. Long press app -> Settings -> Signer -> Select ZSign

3.3. The bundle “OpenSSL” couldn’t be loaded.

We haven't pinpointed the root cause, but it is reported that SideStore/AltStore was accidentally expired before this happens, so please check whether SideStore/AltStore is expired or not.
If SideStore/AltStore is not expired, please switch to ZSign. See steps in item 3.2.

3.4. LiveContainer crash when installing app

The app you are installing might not be compatible with AltSign, please switch to ZSign and try again. See steps in item 3.2.

4. App Crash

4.1. could not register fairplay decryption, mremap_encrypted() => -1

The app is not decrypted. Please find a decrypted ipa.

4.2. App returned from its main function with code 0

The ipa is in an invalid format, please find another one. If you try to sideload this ipa in SideStore/AltStore, it will report a "This app is in an invalid format." error.

4.3. App show a black screen and crash after 10s

Note

This applies to LiveContainer 3.1.55+

The black screen fix is not automatically applied after 3.1.55. You can enable it by: Long press app -> Settings -> Enable "Black Screen Fix"

4.4. App still crashes

For other apps, please:

  1. Search through issues and see if there's a solution.
  2. Directly sideload the app in SideStore/AltStore and see if it works in Sideloading environment. If not, then please find another working ipa.

If you can't find a solution, feel free to submit a compatibility issue. Please make sure to include:

  1. App's exact name, please don't only say "app crashing" or "app made in X not working"
  2. Find crash report in iOS settings -> Privacy & Security -> Analytics & Improvements -> Analytics Data -> Search LiveContainer
  3. If the app is an open-source app please leave a link to its repo
  4. The exact build of LiveContainer, i.e. not "3.1.0" only, but "3.1.0 c586e79". You can find that at the bottom of LiveContainer settings tab.

Unfortunately, due to the fact that most apps are close-source, it's super hard for us to pinpoint the issue, so no eta.

5. Using Guest Apps

5.1. Why don't apps show up in the second LiveContainer?

You need to convert app to Shared App.
Long press app -> Settings -> Convert to Shared App

5.2. How can I open one app in both LiveContainers? / How can I use the multi-account feature?

  1. Create a new data folder: Long press app -> Settings -> Containers -> New data folder
  2. Long press app -> Settings -> Select a container -> Run

Note

You can create up to 128 containers per app after 3.2.58 and 3 before. You can run the same app with different Container in both LiveContainers at the same time.

5.3. How can I open a link/webpage/url in a guest app?

You can share a web page to LiveContainer using this shortcut. Be sure to add this shortcut to "Favorites" in share sheet actions.

5.4. Can't select file / File picker not working / App can't proceed without enabling notification

Long press app -> Settings -> Enable "Fix File Picker & Local Notification"

5.5. How to modify app settings that are supposed to be in iOS settings

Long press app -> Settings -> (container name) -> Container Preferences

5.6. "Safari cannot open this page because the address is invalid" when signing in through Safari

Please refer to this issue: #242.

5.7. How can I use widgets/plugins etc.?

No, you can't. They require extra app ids. You can integrate the plugin with LiveContainer if you really want to use that plugin, but doing so will cost 1 app id.

5.8 How can I enable JIT for guest apps?

LiveContainer has built-in support for popular JIT enablers. You can set it up in LiveContainer settings -> JIT section.
Mark an app as JIT needed by going to: long press app -> settings -> enable Launch with JIT. LiveContainer will wait for JIT to be enabled and try to contact the JIT enabler you configured.

For JitStreamer-EB (Recommended), choose JitStreamer-EB as your JIT enabler. If you use JitStreamer through a Wireguard VPN and you use the official server or you self-host and did not changed the WIREGUARD_SERVER_ADDRESS variable, you can leave "Address" blank. Otherwise, put the address to your server in "Address", including scheme (http/https) and port (9172).

For SideJITServer/JITStreamer 2.0, please input both your address and device UDID.

@hugeBlack
Copy link
Collaborator Author

hugeBlack commented Dec 22, 2024

6. About JIT-Less Diagnose Page

Image

Note

This page exists in LiveContainer 3.1.51+

If you successfully setup JIT-Less mode, your JIT-Less Mode Diagnose should look like the screenshot above. The most important indicator is "Certificate Last Up Date". This field should change if you reopens your store. If not, follow the following instructions to diagnose your setup.

6.1. App Group ID, App Group Accessible, Store

The "App Group ID" field should end with the exact same 10 characters as the "Bundle Identifier". "App Group Accessible" should be "Yes" and "Store" should correctly show your store.

For example, if your Bundle Identifier is com.kdt.livecontainer.A1B2C3D4E5 ,then your app group id should be group.com.SideStore.SideStore.A1B2C3D4E5 if you use SideStore, or group.com.rileytestut.AltStore.A1B2C3D4E5 if you use AltStore.

If it only say group.com.SideStore.SideStore or Unknown, then there's something wrong with your SideStore setup. Please check:

  • SideStore is installed through AltServer
  • LiveContainer is installed directly through SideStore/AltStore
  • Don't try to install LiveContainer through AltStore PAL
  • Account used to install SideStore and LiveContainer matches. This can be checked by going to iOS settings -> General -> VPN & Device Management -> (your account name). Check if both LiveContainer and SideStore are under the same account.

Note

"Entitlement File" exists in 3.2.51+

If you meet the above 4 criteria but App Group is still not accessible, tap "Entitlement File" and check the entitlement extracted form LiveContainer's main executable. A correct entitlement may look like this:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
 <key>application-identifier</key>
 <string>A1B2C3D4E5.com.kdt.livecontainer.A1B2C3D4E5</string>
 <key>com.apple.developer.team-identifier</key>
 <string>A1B2C3D4E5</string>
 <key>com.apple.security.application-groups</key>
 <array>
  <string>group.com.rileytestut.AltStore.A1B2C3D4E5</string>               <--- Important!
  <string>group.com.SideStore.SideStore.A1B2C3D4E5</string>               <--- Important!
 </array>
 <key>get-task-allow</key>
 <true/>
 <key>keychain-access-groups</key>
 <array>
  <string>A1B2C3D4E5.com.kdt.livecontainer.shared</string>
  <string>A1B2C3D4E5.com.kdt.livecontainer.shared.1</string>
  <string>A1B2C3D4E5.com.kdt.livecontainer.shared.2</string>
 </array>
</dict>
</plist>

The most important part is com.apple.security.application-groups, which determines whether LiveContainer can access SideStore's app group.
This item should exist and its content should look like group.com.rileytestut.AltStore.A1B2C3D4E5 and group.com.SideStore.SideStore.A1B2C3D4E5. If this item is missing or it looks like group.com.SideStore.SideStore.A1B2C3D4E5.A1B2C3D4E5, then this is an bug of SideStore, not LiveContainer. The only thing you can do is to remove both LiveContainer and SideStore, and then install them again and check if this issue is solved.

It is reported that if LiveContainer's entitlement is incorrect, you can't activate/deactivate apps in SideStore. Please do not submit issues about incorrect entitlement as it is not a LiveContainer issue.

6.2.Patch Detected

Note

Make sure App Group ID, App Group Accessible and Store are correct before proceeding.

It should say "Yes". If not, close your store from the app switcher, reopen it and refresh this diagnose page.
If still not, patch your store again.

6.3. Certificate Data / Password Found, Certificate Last Up Date

Note

Make sure 1 & 2 are correct before proceeding.

If you patched your store correctly, Certificate Data / Password Found should turn to "Yes" if you refresh the diagnose page, and "Certificate Last Up Date" should show the time when you last opens your store.

If Certificate Data / Password Found are "Yes", but "Certificate Last Up Date" is unknown, but apps are working correctly, you might have just updated from version prior to 3.1.51, patch your store again and this field should display correctly.

@hugeBlack
Copy link
Collaborator Author

hugeBlack commented Jan 4, 2025

7. Using Tweaks

LiveContainer provides a way to inject tweaks without injecting it to the app beforehand. Direct injection is still recommended as not all tweaks work correctly with LiveContainer's TweakLoader.

7.1 Adding Tweaks

Note

Managing tweaks is only available in the primary LiveContainer (Blue) and for private apps. If you want to load tweaks for a shared app, convert it to private app before adding tweaks to it. You can convert it back when you are done and the tweak will still work.

  1. Go to tweaks tab -> tap the plus button
  • if you want to inject the tweak (global tweak) to all apps in LiveContainer, tap import tweak.
  • If you want to inject the tweak to a specific app, tap create new folder
  1. For global tweak, you are done, you can launch the app and see if tweak is successfully loaded.
  2. For app-specific tweak, go to the folder you created, and tap the plus button -> import tweak
  3. For app-specific tweak, long press your app -> settings -> tap tweak folder -> select the folder you created

7.2 Removing Tweaks

Go to tweaks tab -> find your tweak/folder -> slide left -> delete

7.3 Renaming Tweaks

Go to tweaks tab -> find your tweak/folder -> long press -> rename

7.4 About Tweak Signing

Tweak Signing is handled automatically by LiveContainer. Tweaks will be re-sign when it is changed or when its signature is expired. You can still manually re-sign by pressing the sign button near the plus button.

@hugeBlack
Copy link
Collaborator Author

hugeBlack commented Jan 18, 2025

8. Will Feature X be Implemented? When will Feature X be Implemented?

8.1. Behavior Modifying Features

LiveContainer's primary goal is to run apps as if they were sideloaded, without altering their intended functionality. Therefore, feature requests that modify an app’s behavior (e.g., network monitoring, disabling functions) will not be considered. However, community contributions for these types of features are welcome.

8.2. App Crash / Malfunction Due to the Need of Entitlements Only Available to Paid Developer Account

LiveContainer is designed to somewhat bypass the 3 app limit set on free developer accounts. App crash / malfunction due to the need of entitlements only available to paid developer account (e.g., push notifications, Siri, iCloud) will not be fixed.

8.3. UI Beautifying / Customization Features

Requests for features like home page customization, changing app names/icons, and other visual adjustments are low priority since they are not quite useful and can potentially slow down app launch times. You can simply create a shortcut in your home screen and change how they are ordered and their name / icon.

8.4. Upcoming Features

The following features are likely to be added to LiveContainer.

  • Install app from URL & app install URL (eta 3.3.0)
  • 3+ containers for each app (eta when SideStore 0.6.0 release)
  • ADP certificate support (eat when I get an ADP certificate for free)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants
@hugeBlack and others