From 6e6f20144afcaf12586f6ed080052c863dea2241 Mon Sep 17 00:00:00 2001 From: Starbroke Date: Wed, 16 Sep 2026 22:58:01 +0800 Subject: [PATCH] Update Chinese (zh) translations with new docs, the first version. --- i18n/zh/code.json | 356 ++++++++++++++++++ .../options.json | 14 + .../current.json | 22 ++ .../current/advanced/alternative.mdx | 261 +++++++++++-- .../current/advanced/anisette.mdx | 120 +++--- .../current/advanced/app-sources.mdx | 22 +- .../current/advanced/jit.mdx | 55 +-- .../current/advanced/pairing-file.mdx | 19 +- .../current/advanced/url-schema.mdx | 14 +- .../contributing/advanced-formatting.mdx | 111 +++--- .../current/contributing/contributing.mdx | 212 +++++------ .../current/contributing/formatting.mdx | 150 ++++---- .../current/faq.mdx | 134 +++---- .../current/installation/install.mdx | 89 +++-- .../current/installation/prerequisites.mdx | 131 ++++--- .../current/intro.mdx | 9 +- .../current/release-notes.mdx | 111 +++--- .../current/troubleshooting/common-issues.mdx | 80 ++-- .../current/troubleshooting/error-codes.mdx | 321 +++++++--------- .../troubleshooting/troubleshooting.mdx | 135 +++---- i18n/zh/docusaurus-theme-classic/footer.json | 46 +++ i18n/zh/docusaurus-theme-classic/navbar.json | 26 ++ 22 files changed, 1568 insertions(+), 870 deletions(-) create mode 100644 i18n/zh/code.json create mode 100644 i18n/zh/docusaurus-plugin-content-blog/options.json create mode 100644 i18n/zh/docusaurus-plugin-content-docs/current.json create mode 100644 i18n/zh/docusaurus-theme-classic/footer.json create mode 100644 i18n/zh/docusaurus-theme-classic/navbar.json diff --git a/i18n/zh/code.json b/i18n/zh/code.json new file mode 100644 index 00000000..94eff22d --- /dev/null +++ b/i18n/zh/code.json @@ -0,0 +1,356 @@ +{ + "home.heroTitle": { + "message": "SideStore" + }, + "home.heroSubtitle": { + "message": "获取 SideStore 使用说明的最佳来源。" + }, + "home.getStartedButton": { + "message": "开始使用" + }, + "home.feature.FES.title": { + "message": "快速、简单、精美" + }, + "home.feature.FES.description": { + "message": "SideStore 是一个追求实用的应用,在实用的同时保持美观,而不过于复杂。" + }, + "home.feature.power.title": { + "message": "性能为王" + }, + "home.feature.power.description": { + "message": "能够安装 Apple App Store 里没有的应用并不常见,而 SideStore 正好填补了侧载领域的一大空白。" + }, + "home.feature.openSource.title": { + "message": "开源" + }, + "home.feature.openSource.description": { + "message": "我们认为开源软件非常重要,因为 SideStore 本身就是开源的。欢迎任何人在 GitHub 上为任何 SideStore 项目贡献力量。" + }, + "theme.ErrorPageContent.title": { + "message": "页面已崩溃。", + "description": "The title of the fallback page when the page crashed" + }, + "theme.BackToTopButton.buttonAriaLabel": { + "message": "回到顶部", + "description": "The ARIA label for the back to top button" + }, + "theme.blog.archive.title": { + "message": "历史博文", + "description": "The page & hero title of the blog archive page" + }, + "theme.blog.archive.description": { + "message": "历史博文", + "description": "The page & hero description of the blog archive page" + }, + "theme.blog.paginator.navAriaLabel": { + "message": "博文列表分页导航", + "description": "The ARIA label for the blog pagination" + }, + "theme.blog.paginator.newerEntries": { + "message": "较新的博文", + "description": "The label used to navigate to the newer blog posts page (previous page)" + }, + "theme.blog.paginator.olderEntries": { + "message": "较旧的博文", + "description": "The label used to navigate to the older blog posts page (next page)" + }, + "theme.blog.post.paginator.navAriaLabel": { + "message": "博文分页导航", + "description": "The ARIA label for the blog posts pagination" + }, + "theme.blog.post.paginator.newerPost": { + "message": "较新一篇", + "description": "The blog post button label to navigate to the newer/previous post" + }, + "theme.blog.post.paginator.olderPost": { + "message": "较旧一篇", + "description": "The blog post button label to navigate to the older/next post" + }, + "theme.tags.tagsPageLink": { + "message": "查看所有标签", + "description": "The label of the link targeting the tag list page" + }, + "theme.colorToggle.ariaLabel.mode.system": { + "message": "跟随系统", + "description": "The name for the system color mode" + }, + "theme.colorToggle.ariaLabel.mode.light": { + "message": "浅色模式", + "description": "The name for the light color mode" + }, + "theme.colorToggle.ariaLabel.mode.dark": { + "message": "暗黑模式", + "description": "The name for the dark color mode" + }, + "theme.colorToggle.ariaLabel": { + "message": "切换浅色/暗黑模式(当前为{mode})", + "description": "The ARIA label for the color mode toggle" + }, + "theme.docs.breadcrumbs.navAriaLabel": { + "message": "页面路径", + "description": "The ARIA label for the breadcrumbs" + }, + "theme.docs.DocCard.categoryDescription.plurals": { + "message": "{count} 个项目", + "description": "The default description for a category card in the generated index about how many items this category includes" + }, + "theme.docs.paginator.navAriaLabel": { + "message": "文件选项卡", + "description": "The ARIA label for the docs pagination" + }, + "theme.docs.paginator.previous": { + "message": "上一页", + "description": "The label used to navigate to the previous doc" + }, + "theme.docs.paginator.next": { + "message": "下一页", + "description": "The label used to navigate to the next doc" + }, + "theme.docs.tagDocListPageTitle.nDocsTagged": { + "message": "{count} 篇文档带有标签", + "description": "Pluralized label for \"{count} docs tagged\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)" + }, + "theme.docs.tagDocListPageTitle": { + "message": "{nDocsTagged}「{tagName}」", + "description": "The title of the page for a docs tag" + }, + "theme.docs.versionBadge.label": { + "message": "版本:{versionLabel}" + }, + "theme.docs.versions.unreleasedVersionLabel": { + "message": "此为 {siteTitle} {versionLabel} 版尚未发行的文档。", + "description": "The label used to tell the user that he's browsing an unreleased doc version" + }, + "theme.docs.versions.unmaintainedVersionLabel": { + "message": "此为 {siteTitle} {versionLabel} 版的文档,现已不再积极维护。", + "description": "The label used to tell the user that he's browsing an unmaintained doc version" + }, + "theme.docs.versions.latestVersionSuggestionLabel": { + "message": "最新的文档请参阅 {latestVersionLink} ({versionLabel})。", + "description": "The label used to tell the user to check the latest version" + }, + "theme.docs.versions.latestVersionLinkLabel": { + "message": "最新版本", + "description": "The label used for the latest version suggestion link label" + }, + "theme.common.editThisPage": { + "message": "编辑此页", + "description": "The link label to edit the current page" + }, + "theme.common.headingLinkTitle": { + "message": "{heading}的直接链接", + "description": "Title for link to heading" + }, + "theme.lastUpdated.atDate": { + "message": "于 {date} ", + "description": "The words used to describe on which date a page has been last updated" + }, + "theme.lastUpdated.byUser": { + "message": "由 {user} ", + "description": "The words used to describe by who the page has been last updated" + }, + "theme.lastUpdated.lastUpdatedAtBy": { + "message": "最后{byUser}{atDate}更新", + "description": "The sentence used to display when a page has been last updated, and by who" + }, + "theme.navbar.mobileVersionsDropdown.label": { + "message": "选择版本", + "description": "The label for the navbar versions dropdown on mobile view" + }, + "theme.NotFound.title": { + "message": "找不到页面", + "description": "The title of the 404 page" + }, + "theme.tags.tagsListLabel": { + "message": "标签:", + "description": "The label alongside a tag list" + }, + "theme.admonition.caution": { + "message": "警告", + "description": "The default label used for the Caution admonition (:::caution)" + }, + "theme.admonition.danger": { + "message": "危险", + "description": "The default label used for the Danger admonition (:::danger)" + }, + "theme.admonition.info": { + "message": "信息", + "description": "The default label used for the Info admonition (:::info)" + }, + "theme.admonition.note": { + "message": "备注", + "description": "The default label used for the Note admonition (:::note)" + }, + "theme.admonition.tip": { + "message": "提示", + "description": "The default label used for the Tip admonition (:::tip)" + }, + "theme.admonition.warning": { + "message": "注意", + "description": "The default label used for the Warning admonition (:::warning)" + }, + "theme.AnnouncementBar.closeButtonAriaLabel": { + "message": "关闭", + "description": "The ARIA label for close button of announcement bar" + }, + "theme.blog.sidebar.navAriaLabel": { + "message": "最近博文导航", + "description": "The ARIA label for recent posts in the blog sidebar" + }, + "theme.DocSidebarItem.expandCategoryAriaLabel": { + "message": "展开侧边栏分类 '{label}'", + "description": "The ARIA label to expand the sidebar category" + }, + "theme.DocSidebarItem.collapseCategoryAriaLabel": { + "message": "折叠侧边栏分类 '{label}'", + "description": "The ARIA label to collapse the sidebar category" + }, + "theme.IconExternalLink.ariaLabel": { + "message": "(在新标签页中打开)", + "description": "The ARIA label for the external link icon" + }, + "theme.NavBar.navAriaLabel": { + "message": "主导航", + "description": "The ARIA label for the main navigation" + }, + "theme.navbar.mobileLanguageDropdown.label": { + "message": "选择语言", + "description": "The label for the mobile language switcher dropdown" + }, + "theme.NotFound.p1": { + "message": "我们找不到您要找的页面。", + "description": "The first paragraph of the 404 page" + }, + "theme.NotFound.p2": { + "message": "请联系原始链接来源网站的所有者,并告知他们链接已损坏。", + "description": "The 2nd paragraph of the 404 page" + }, + "theme.TOCCollapsible.toggleButtonLabel": { + "message": "本页总览", + "description": "The label used by the button on the collapsible TOC component" + }, + "theme.blog.post.readMore": { + "message": "阅读更多", + "description": "The label used in blog post item excerpts to link to full blog posts" + }, + "theme.blog.post.readMoreLabel": { + "message": "阅读 {title} 的全文", + "description": "The ARIA label for the link to full blog posts from excerpts" + }, + "theme.blog.post.readingTime.plurals": { + "message": "阅读需 {readingTime} 分钟", + "description": "Pluralized label for \"{readingTime} min read\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)" + }, + "theme.CodeBlock.copy": { + "message": "复制", + "description": "The copy button label on code blocks" + }, + "theme.CodeBlock.copied": { + "message": "复制成功", + "description": "The copied button label on code blocks" + }, + "theme.CodeBlock.copyButtonAriaLabel": { + "message": "复制代码到剪贴板", + "description": "The ARIA label for copy code blocks button" + }, + "theme.CodeBlock.wordWrapToggle": { + "message": "切换自动换行", + "description": "The title attribute for toggle word wrapping button of code block lines" + }, + "theme.docs.breadcrumbs.home": { + "message": "主页面", + "description": "The ARIA label for the home page in the breadcrumbs" + }, + "theme.docs.sidebar.collapseButtonTitle": { + "message": "收起侧边栏", + "description": "The title attribute for collapse button of doc sidebar" + }, + "theme.docs.sidebar.collapseButtonAriaLabel": { + "message": "收起侧边栏", + "description": "The title attribute for collapse button of doc sidebar" + }, + "theme.docs.sidebar.navAriaLabel": { + "message": "文档侧边栏", + "description": "The ARIA label for the sidebar navigation" + }, + "theme.docs.sidebar.closeSidebarButtonAriaLabel": { + "message": "关闭导航栏", + "description": "The ARIA label for close button of mobile sidebar" + }, + "theme.navbar.mobileSidebarSecondaryMenu.backButtonLabel": { + "message": "← 回到主菜单", + "description": "The label of the back button to return to main menu, inside the mobile navbar sidebar secondary menu (notably used to display the docs sidebar)" + }, + "theme.docs.sidebar.toggleSidebarButtonAriaLabel": { + "message": "切换导航栏", + "description": "The ARIA label for hamburger menu button of mobile navigation" + }, + "theme.navbar.mobileDropdown.collapseButton.expandAriaLabel": { + "message": "展开下拉菜单", + "description": "The ARIA label of the button to expand the mobile dropdown navbar item" + }, + "theme.navbar.mobileDropdown.collapseButton.collapseAriaLabel": { + "message": "收起下拉菜单", + "description": "The ARIA label of the button to collapse the mobile dropdown navbar item" + }, + "theme.docs.sidebar.expandButtonTitle": { + "message": "展开侧边栏", + "description": "The ARIA label and title attribute for expand button of doc sidebar" + }, + "theme.docs.sidebar.expandButtonAriaLabel": { + "message": "展开侧边栏", + "description": "The ARIA label and title attribute for expand button of doc sidebar" + }, + "theme.blog.post.plurals": { + "message": "{count} 篇博文", + "description": "Pluralized label for \"{count} posts\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)" + }, + "theme.blog.tagTitle": { + "message": "{nPosts} 含有标签「{tagName}」", + "description": "The title of the page for a blog tag" + }, + "theme.blog.author.pageTitle": { + "message": "{authorName} - {nPosts}", + "description": "The title of the page for a blog author" + }, + "theme.blog.authorsList.pageTitle": { + "message": "作者", + "description": "The title of the authors page" + }, + "theme.blog.authorsList.viewAll": { + "message": "查看所有作者", + "description": "The label of the link targeting the blog authors page" + }, + "theme.blog.author.noPosts": { + "message": "该作者尚未撰写任何文章。", + "description": "The text for authors with 0 blog post" + }, + "theme.contentVisibility.unlistedBanner.title": { + "message": "未列出页", + "description": "The unlisted content banner title" + }, + "theme.contentVisibility.unlistedBanner.message": { + "message": "此页面未列出。搜索引擎不会对其索引,只有拥有直接链接的用户才能访问。", + "description": "The unlisted content banner message" + }, + "theme.contentVisibility.draftBanner.title": { + "message": "草稿页", + "description": "The draft content banner title" + }, + "theme.contentVisibility.draftBanner.message": { + "message": "此页面是草稿,仅在开发环境中可见,不会包含在正式版本中。", + "description": "The draft content banner message" + }, + "theme.ErrorPageContent.tryAgain": { + "message": "重试", + "description": "The label of the button to try again rendering when the React error boundary captures an error" + }, + "theme.common.skipToMainContent": { + "message": "跳到主要内容", + "description": "The skip to content label used for accessibility, allowing to rapidly navigate to main content with keyboard tab/enter navigation" + }, + "theme.tags.tagsPageTitle": { + "message": "标签", + "description": "The title of the tag list page" + } +} diff --git a/i18n/zh/docusaurus-plugin-content-blog/options.json b/i18n/zh/docusaurus-plugin-content-blog/options.json new file mode 100644 index 00000000..f8be327c --- /dev/null +++ b/i18n/zh/docusaurus-plugin-content-blog/options.json @@ -0,0 +1,14 @@ +{ + "title": { + "message": "博客", + "description": "The title for the blog used in SEO" + }, + "description": { + "message": "博客", + "description": "The description for the blog used in SEO" + }, + "sidebar.title": { + "message": "最近更新", + "description": "The label for the left sidebar" + } +} diff --git a/i18n/zh/docusaurus-plugin-content-docs/current.json b/i18n/zh/docusaurus-plugin-content-docs/current.json new file mode 100644 index 00000000..3870f12f --- /dev/null +++ b/i18n/zh/docusaurus-plugin-content-docs/current.json @@ -0,0 +1,22 @@ +{ + "version.label": { + "message": "Next", + "description": "The label for version current" + }, + "sidebar.tutorialSidebar.category.Installation": { + "message": "安装", + "description": "The label for category 'Installation' in sidebar 'tutorialSidebar'" + }, + "sidebar.tutorialSidebar.category.Troubleshooting": { + "message": "故障排除指南", + "description": "The label for category 'Troubleshooting' in sidebar 'tutorialSidebar'" + }, + "sidebar.tutorialSidebar.category.Advanced": { + "message": "高级", + "description": "The label for category 'Advanced' in sidebar 'tutorialSidebar'" + }, + "sidebar.tutorialSidebar.category.Contributing": { + "message": "提供贡献", + "description": "The label for category 'Contributing' in sidebar 'tutorialSidebar'" + } +} diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/advanced/alternative.mdx b/i18n/zh/docusaurus-plugin-content-docs/current/advanced/alternative.mdx index 46cffb06..69b594b2 100644 --- a/i18n/zh/docusaurus-plugin-content-docs/current/advanced/alternative.mdx +++ b/i18n/zh/docusaurus-plugin-content-docs/current/advanced/alternative.mdx @@ -1,43 +1,252 @@ --- -title: 绕过3-App限制 -description: 一个关于如何通过SparseRestore安装多于3个应用的教程。 +title: 替代/过时的说明 +description: "存放替代/过时的 SideStore 设置说明。注意:其中许多教程可能与最新的 iOS 或 SideStore 版本不兼容。" --- +```mdx-code-block +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +``` + +## 安装 +### AltServer + + + + 请按照[此处](https://faq.altstore.io/altstore-classic/how-to-install-altstore-macos)的说明(第 1-3 步)设置 AltServer + + + 请按照[此处](https://faq.altstore.io/altstore-classic/how-to-install-altstore-windows)的说明(第 1-3 步)设置 AltServer + + + 开始之前,请确保您已安装 usbmuxd。 + 1. 在 Linux 终端中运行 `sudo apt install -y usbmuxd`,当然,请确保您已安装并更新了 usbmuxd。 + 2. 在您的机器上安装 Docker 或 Podman。 + 3. 插入您的备用 iPhone、iPad 或 iPod touch。如果收到提示,请选择 "信任" 并输入您的密码。 + 4. 现在,使用以下命令以通过 Docker 或 Podman 运行 Altcon(可能需要 `sudo`): + + Docker 设置: + ```bash + docker run --rm -it -v ${PWD}/:/mnt/ -v /var/run/usbmuxd:/var/run/usbmuxd -v /var/lib/lockdown:/tmp/lockdown ghcr.io/sidestore/altcon + ``` + + Podman 设置: + ```bash + podman run --rm -it -v ${PWD}/:/mnt/ -v /var/run/usbmuxd:/var/run/usbmuxd -v /var/lib/lockdown:/tmp/lockdown ghcr.io/sidestore/altcon + ``` + + 5. Altcon 将与您的设备配对。当您收到另一个弹窗提示时,请再次选择 "信任" 并输入您的密码。 + + + +#### 使用 AltServer 为同一账户上的多个设备配置 SideStore(仅适用于 macOS/Windows) +步骤: +1. 使用上述说明在 macOS/Windows 上设置 AltServer +2. 使用 AltServer 在其中一台设备上安装 AltStore +3. 在 AltStore 中登录您的 Apple 账户 +4. 导出证书 +5. 删除 AltStore + +然后在每台设备上执行以下操作: +1. 在 AltServer 使用同一个 Apple 账户安装 SideStore(点击 AltServer 时按住 [Option/Mac、Shift/Windows] -> Install IPA -> 选择 SideStore.ipa) +2. 导入证书 +3. 在 SideStore 中登录 Apple 账户(我们需要在导入证书后登录,否则在未撤销 AltStore 证书的情况下,它将不允许您登录) +4. 执行侧载 + +当旧证书过期时: +1. SideStore 将在其中一台设备上提示您重新安装 Sidestore +2. 重新安装后,导出证书 + +然后在其余的每台设备上执行以下操作: +1. 导入新证书 +2. 从 SideStore 中 侧载 SideStore ipa + +## VPN +### WireGuard :::note +SideStore WireGuard VPN **仅适用于 0.3.1-0.6.1 之间以及(含) 0.6.3-nightly.4e6756d 之后的 SideStore 版本**,我们不推荐您使用替代方案(如 LocalDevVPN)。当然如果您的版本不在这些范围内且该方案不起作用,**请不要寻求社区支持**。 +::: + +SideStore 利用设备上的 WireGuard VPN 以实现 SideStore 与内部服务的通信。 + +1. 从 [Apple App Store](https://apps.apple.com/app/wireguard/id1441195209) 下载 WireGuard 应用。 +2. 在[此处](https://github.com/SideStore/SideStore/releases/download/0.3.1/SideStore.conf)下载 WireGuard 配置。 +3. 打开 WireGuard,并按下 'Add a Tunnel' 或 '+' 按钮。 +4. 选择 'Create from file or archive',并选择 SideStore.conf 文件。 +5. 您的设备可能会弹出 '允许添加 VPN 配置',请选择 '允许' 并进行身份验证。 +6. 打开 SideStore VPN 选项的开关。 + +只要您使用 SideStore,就必须开启 WireGuard VPN,因为没有它,大部分功能将无法工作。 + +## 配对 +### idevice_pair +#### 安装说明 + + + + 1. 下载 [idevice pair for macOS](https://github.com/jkcoxson/idevice_pair/releases/latest/download/idevice_pair--macos-universal.dmg)。 + 2. 打开磁盘映像,并将 `idevice pair` 拖到 `Applications` 中。 + + + 1. 确保已从 Apple 网站安装了([64-bit](https://apple.com/itunes/download/win64) 或 [32-bit](https://apple.com/itunes/download/win32))的 iTunes (应该在设置 AltServer 的过程中就已经安装好了)。 + 2. 下载 [idevice pair for Windows](https://github.com/jkcoxson/idevice_pair/releases/latest/download/idevice_pair--windows-x86_64.exe),并将其移动到您能记住的位置。 + + + 1. 在 Linux 终端中运行 `sudo apt install -y usbmuxd`,请确保您的机器上已安装 usbmuxd。 + 2. 下载与您的电脑架构选择下载可适用的 idevice_pair ([x86_64](https://github.com/jkcoxson/idevice_pair/releases/latest/download/idevice_pair--linux-x86_64.AppImage) / [AArch64](https://github.com/jkcoxson/idevice_pair/releases/latest/download/idevice_pair--linux-aarch64.AppImage))。将其移动到您能记住,并可执行的位置。 + + + +#### 配对说明 + +1. 用数据线将您的备用设备连接到电脑。如果出现提示,请选择 `信任` 并输入您的密码。 +2. 解锁您的设备,然后打开 `idevice pair`,并在下拉菜单中选择您的设备。 +3. 确保您的设备已解锁并打开到主屏幕,然后选择 `load`。如果您的设备上出现提示,请点按 `信任`。您的配对文件应该会出现。 +4. 确保您的设备仍处于主屏幕,然后向下滚动并选择 "SideStore" 下方的 `install`。应该会显示绿色的 `Success`。 + +### JitterbugPair +JitterbugPair(*不是* Jitterbug 这个应用)允许我们能够创建为 SideStore 等程序所用的配对文件,以便应用远程与您的设备通信。这是使用 SideStore 所必需的,否则应用将无法运行。 + +您可以在此处下载适用于 [Windows (64-bit)](https://github.com/osy/Jitterbug/releases/download/v1.3.1/jitterbugpair-win64.zip)、[macOS](https://github.com/osy/Jitterbug/releases/download/v1.3.1/jitterbugpair-macos.zip)或 [Linux](https://github.com/osy/Jitterbug/releases/download/v1.3.1/jitterbugpair-linux.zip) 的 JitterbugPair。 + +#### 配对说明 + +:::tip + +在传输您的 .mobiledevicepariring 文件时,文件扩展名可能会改变(通常会变成 .txt 或变成被去掉 "ing" 结尾的格式)。这取决于您使用的文件传输方式。我们始终建议您在传输之前先将文件压缩为 zip 文件。以及SideStore 只接受 .mobiledevicepairing 文件(旧版本中为 .plist 文件)。 +::: + + + + 1. 下载适用于 [macOS](https://github.com/osy/Jitterbug/releases/download/v1.3.1/jitterbugpair-macos.zip) 的 JitterbugPair。 + 2. **解压** `jitterbugpair-macos.zip`。 + 3. 解锁您的设备并用数据线将其连接到电脑。如果出现弹窗提示,请点按 "信任" 并输入您的密码。如果您还未设置,请**为您的设备设置密码**。 + 4. 将您的设备打开到主屏幕。 + 5. 找到并打开解压后的 `jitterbugpair` 文件(它应该有一个黑绿相间的图标),打开方式为双击它或右键单击它并选择 "open"。首次运行该工具时,您的备用设备上会出现输入密码的提示。输入密码,然后保持屏幕开启且解锁状态,再次运行该工具。 + 6. 如果您收到消息" "macOS cannot verify that this app is free from malware": + - 前往 System Settings > Privacy & Security + - 向下滚动到关于该应用的消息 + - 点击 "Open Anyway,";如果程序没有自动运行,请尝试手动再次运行它 + 7. JitterbugPair 将在您的用户主文件夹中生成一个扩展名为 `.mobiledevicepairing` 的**配对文件**。 + 8. 如果您找不到配对文件: + - 复制生成的配对文件的名称 + - 将其粘贴到 Finder 中 + - 如果您不止一次地运行了该程序,则您设备的所有配对文件应该都会出现,因为所有的配对文件共用同一个名称 + 9. 为了获得最佳效果,请将该文件压缩为 .zip 文件。然后通过 AirDrop、iCloud/One/Google Drive、电子邮件或其他您偏好的方式,将**配对文件传输**到您的 iOS 设备上。 + + + 1. 下载适用于 [Windows (64-bit)](https://github.com/osy/Jitterbug/releases/download/v1.3.1/jitterbugpair-win64.zip) 的 JitterbugPair。 + 2. **解压** `jitterbugpair-win64.zip`。 + 3. 解锁您的设备并用数据线将其连接到电脑。如果出现弹窗提示,请点按 "信任" 并输入您的密码。如果您还未设置,请**为您的设备设置密码**。 + 4. 将您的设备打开到主屏幕。 + 5. 在文件资源管理器中,找到 `jitterbugpair.exe`,通过双击或右键单击并选择 "open" 来运行它。首次运行该工具时,您的备用设备上会出现输入密码的提示。输入密码,然后保持屏幕开启且解锁状态,再次运行该工具。 + 6. JitterbugPair 将在同一文件夹中生成一个**配对文件**。该文件的扩展名为 `.mobiledevicepairing`。 + 7. 为了获得最佳效果,请将该文件压缩为 .zip 文件。然后通过 One/iCloud/Google Drive、电子邮件或其他您偏好的方式,将**配对文件传输**到您的 iOS 设备上。 + + 在 Windows 上,您可能需要使用命令提示符或 Powershell 来执行该程序,因为双击 `.exe` 文件并不能稳定地打开它。 -SparseRestore的"绕过3个应用的限制"**仅在iOS/iPadOS 17.0 到 18.1 beta 4 (不包括 17.7.1)中生效**。如果您没有使用这些版本的话,这些操作是没有用的,**请不要因此寻求帮助**。 + 8. 在文件资源管理器中,导航到 jitterbugpair 所在的文件夹。 + 9. 在显示文件夹位置的位置栏中,点击空白处并输入 `powershell`。它应该会打开一个(可能为蓝色背景的)名为 PowerShell 的窗口。 + 10. 在设备已连接的情况下,输入 `./jitterbugpair.exe` 并按回车。 + + + 提醒:这些步骤默认您熟悉 Linux 命令行的使用 + 1. 下载适用于 [Linux](https://github.com/osy/Jitterbug/releases/download/v1.3.1/jitterbugpair-linux.zip) 的 JitterbugPair。 + 2. **解压** `jitterbugpair-linux.zip`。 + 3. 在解压后的目录中打开终端。 + 4. 给程序可执行的权限: + ```bash + chmod +x ./jitterbugpair + ``` + 5. 解锁您的设备并用数据线将其连接到电脑。如果出现提示,请点按 "信任" 并输入您的密码。如果您还未设置,请**为您的设备设置密码**。 + 6. 将您的设备打开到主屏幕。 + 7. 执行程序: + ```bash + ./jitterbugpair + ``` + 8. 首次运行该工具时,您的设备上会出现输入密码的提示。输入密码,然后保持屏幕开启且解锁状态,再次运行该工具。 + 9. JitterbugPair 将生成一个扩展名为 `.mobiledevicepairing` 的**配对文件**。 + 10. 为了获得最佳效果,请将该文件压缩为 .zip 文件夹。然后,通过电子邮件、云存储或其他您偏好的方式,将**配对文件传输**到您的 iOS 设备上。 + + + +## SideStore 利用的漏洞 +### SparseRestore(3 应用限制) +:::note +SparseRestore 的 "Bypass 3 app limit" 漏洞**仅适用于 17.0 到 18.1 beta 4(不含 17.7.1)之间的 iOS/iPadOS 版本**。如果您的版本不在这些范围内且该功能不起作用,**请不要寻求支持**。 ::: -## 必要准备 -* 一台运行了SparseRestore支持的系统版本的苹果设备(请参考上面的描述). -* 至少一个空闲的应用槽位。 -* SideStore 0.5.9或更高版本。您可以[在此](https://github.com/SideStore/SideStore/releases)找到最新版。 -* 为了执行漏洞,您**必须**在流程进行中,在您的苹果设备上关闭**查找网络**。否则执行不会成功。您可以参考以下的流程关闭: - - 打开“设置”。 - - 点击最上面您的名字。 - - 点击“查找”。 - - 点击查找我的iPhone/iPad. - - 关闭查找我的iPhone/iPad. - - 您可能需要输入您的Apple ID密码以继续。 +#### 前置条件 +* 一台运行 SparseRestore 漏洞所支持版本的 iPhone 或 iPad(见上方注释)。 +* 至少 1 个空闲的应用位。 +* SideStore 0.5.9 或更高版本。您可以[此处](https://github.com/SideStore/SideStore/releases)找到最新版本。 +* 要执行此漏洞,您的 iPhone 或 iPad 在该过程中必须**关闭查找网络**。否则它将无法工作。以下是关闭方法: + - 打开设置应用。 + - 点按顶部的您的姓名。 + - 点按 查找网络。 + - 点按 查找我的 iPhone/iPad。 + - 关闭 查找我的 iPhone/iPad。 + - 可能需要输入您的 Apple 账户密码进行确认。 - > **提醒:**您仍可能无法关闭"查找我的设备",因为"失窃设备保护"可能避免您关闭它。请在尝试关闭查找设备前关闭失窃设备保护。 + > **注意:**您仍然可能无法关闭查找网络,因为"失窃设备保护"(Stolen Device Protection)设置可能会阻止您将其关闭。请先关闭失窃设备保护,再尝试关闭查找网络。 + +#### 步骤 +1. 安装 SparseBox。这可以通过多种方法完成,但出于本说明的目的,请使用 SideStore 安装它。最新版本可在[此处](https://github.com/khanhduytran0/SparseBox/releases/download/0.0.1/com.kdt.sparsebox_0.0.1.ipa)找到。 -## 步骤 -1. 安装SparseBox。有很多种方式可以安装SparseBox,但如果是这种需求的话,请使用SideStore进行安装。您可以[在这里](https://github.com/khanhduytran0/SparseBox/releases/download/0.0.1/com.kdt.sparsebox_0.0.1.ipa)找到最新版。 +2. 在 SideStore 中勾选 "Disable App Limit",并确保 SideStore 已**关闭**(而非在后台运行),然后打开 SparseBox。 -2. 在SideStore内打开"Disable App Limit"开关,确保SideStore是**关闭的** (不在后台),然后打开SparseBox。 +3. 启用 LocalDevVPN,选择您的配对文件并点按 'Bypass 3-app limit'。这应该会弹出日志输出。等待它显示 `idevicebackup2 exited with code -18` 或 `idevicebackup2 exited with code 2`,然后关闭应用。无需点击 apply。 -3. 启用StosVPN,选择您的配对文件并点击'绕过3个应用的限制'。你将会看到一段很长的输出。请等待直到输出`idevicebackup2 exited with code -18`或者`idevicebackup2 exited with code 2`,关闭应用,无需点击“应用”。 +4. 重新打开 SideStore,并在 SideStore 设置中向下滚动。按 "clear cache",这将使 SideStore 能够识别该漏洞。 -4. 重新打开SideStore在SideStore设置界面下滑。点击"清理缓存",这允许绕过结果被SideStore使用。 +5. 测试该漏洞是否已生效(根据您有多少个空闲位,您可能需要安装不止一个应用来测试)。如果它抛出有关限制的错误,请重新打开 SideStore 或重试该漏洞。如果它成功安装了应用,恭喜您!您现在可以同时安装超过 3 个应用了。 -5. 测试绕过成功(您可能需要安装多于一个app以测试,这取决于您剩余多少槽位)。如果应用弹出了和限制相关的错误,重新启动SideStore或者重试执行漏洞利用。如果安装应用成功,恭喜!您现在可以一次安装多于3个应用了! +#### 注意事项 +由于某些限制,每额外侧载 3 个应用,就必须重新执行一次此漏洞。 -## 提醒 -由于某些限制,每当您侧载额外3个应用程序时,都必须执行此漏洞利用。 +如果您出于其他目的需要查找网络的话,现在就可以重新打开它。但如果您想安装或刷新更多应用,则需要再次将其关闭。 -如果您想/需要使用查找网络的话,您现在就可以打开它了。然而,如果您想安装或者刷新更多应用,您仍需再次关闭查找网络。 +### MacDirtyCow(3 应用限制) +:::note +MacDirtyCow "Bypass 3 app limit" 漏洞**仅适用于 15.0 到 16.1.2 之间的 iOS/iPadOS **。如果您的版本不在这些范围内且不起作用,**请不要寻求支持**。 +::: +[MDC-Compatible IPA](https://cdn.discordapp.com/attachments/949183273827983370/1074037820328521829/SideStore_MDC_14.ipa) + +如果您想要这个功能,我们建议您加入我们的 Discord,并前往 [sidestore-downloads](https://discord.com/channels/949183273383395328/1126118099930861638) 频道,该频道会包含兼容 MDC 的 SideStore 构建版本。然后,[separately install WDBRemoveThreeAppLimit with SideStore](https://github.com/zhuowei/WDBRemoveThreeAppLimit/releases/tag/v1.0) 来应用补丁。 + +## Lara(3 应用限制绕过) + +:::note +"Lara" 绕过使用了 **Darksword 漏洞**,该漏洞仅适用于 **iOS 17.0 - iOS 18.7.1 和 iOS 26.0.x**,**M5 和 A19 设备**除外。 +它也被确认可在 **iOS 16.7.2** 上运行。 + +如果您不在受支持的版本上,**请不要寻求支持**。 +::: + +要使用此方法,请确保您运行的是最新的 **SideStore Nightly**,然后安装 **Lara**: +https://github.com/rooootdev/lara/releases/ +(Lara 也可以在 LiveContainer 内部运行。) + +### 步骤 + +1. 打开 Lara 并点按 **Run Exploit** +2. *(仅首次)*点按 **Fetch Kernel Cache** +3. 点按 **Initialize System** +4. 点按屏幕底部中央的 Lara 徽标 +5. 前往 **Apps** +6. 选择 **3-App Bypass** +7. 点按 **Bypass** + +:::warning +在完成所有步骤之前,**不要**从应用切换器中关闭 Lara。 +::: + +8. 打开 SideStore,并像往常一样安装您的 IPA +9. 完成 + +:::note +这**不会**增加 10 个应用的 Apple ID 限制。 +::: -## 备选方案 -如果该漏洞利用对您来说没起作用,或者您的苹果设备是不支持的版本,也有其他的备选方案允许您同时使用多于3个应用。由Duy Tran Khanh ([khanhduytran0](https://github.com/khanhduytran0)) (也是SparseBox的开发者) 开发的Live Container允许iOS应用运行在应用内容器内,而不是分别独立的运行。这在某种意义上比SparseRestore更实用。[点此访问GitHub页面](https://github.com/khanhduytran0/LiveContainer)。 +每次新侧载一个应用,您**必须**重复此过程。 \ No newline at end of file diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/advanced/anisette.mdx b/i18n/zh/docusaurus-plugin-content-docs/current/advanced/anisette.mdx index d304d314..42ae55d4 100644 --- a/i18n/zh/docusaurus-plugin-content-docs/current/advanced/anisette.mdx +++ b/i18n/zh/docusaurus-plugin-content-docs/current/advanced/anisette.mdx @@ -1,107 +1,107 @@ --- -title: 自定义Anisette服务器 -description: 关于anisette服务器的指南 +title: 自定义 Anisette 服务器 +description: 关于 anisette 服务器的指南。 --- :::note -当我们添加了对v3 anisette服务器的支持后,您在使用任何0.4.0以后版本的SideStore时,不太可能出现导致您的帐户被锁定的情况。 +使用 0.4.0 之后的任何 SideStore 版本都不太可能导致您的账户锁定,因为此时我们已加入了对 v3 anisette 服务器的支持。 -因此,如果您的系统版本支持,**强烈建议**使用v3服务器以正常使用SideStore。 +因此,如果您的版本支持,**强烈建议**在日常使用 SideStore 时使用 v3 服务器。 ::: -Anisette数据是在每次安装或刷新应用程序时,进行应用程序签名过程中所使用到的信息。SideStore从一个模拟的Mac的服务器中获取此信息,并将Anisette数据发回给您。在此过程中,任何的帐户信息都不会发送到服务器。 +Anisette 数据是应用签名过程中使用的信息,每次安装或刷新应用时都需要生成。SideStore 从一台伪装成 Mac 的服务器获取这些信息,然后该服务器将 anisette 数据返回给您。在此过程中,任何账户信息都不会发送到服务器。 -当很多人使用同一台Anisette服务器(尤其是v1服务器)的时候,它会触发苹果的安全机制,并锁定使用该机器的帐户。这就是为什么我们建议使用单独的临时Apple ID而不是您的主ID。 +当许多人使用同一台 Anisette 服务器时(尤其是 v1 服务器),会触发 Apple 的安全机制,并锁定使用该机器的账户。这就是我们建议您使用单独的备用 Apple 账户而非主账户的原因。 -我们的团队一直在研究更好的方法以避免您帐户被锁定(以_anisette-v3_的形式)。但如果您使用的是旧版本的SideStore,那么部署您自己的Anisette服务器是避免锁定帐户的好方法。得益于我们当前的服务器是开源的,且专为 Docker 环境设计,这使得操作变得异常简单。这意味着我们可以仅通过一个GitHub链接来部署服务器。 +我们的团队一直在研究更好的方法来避免账户被锁定(以 _anisette-v3_ 的形式)。不过,如果您使用的是旧版本的 SideStore,自行托管 anisette 服务器是避免账户被锁定的绝佳方式。由于我们当前的服务器是开源的,且为 Docker 环境而设计,部署变得非常容易。这意味着我们只需 GitHub 链接即可部署一台服务器。 -## 在Render上部署 +## 在 Render 上部署 -[Render](https://render.com/) 是一个提供轻松创建服务器的服务。它支持从GitHub加载服务器源代码。虽然免费版提供的资源非常有限,但服务器可以在上面舒适地运行,且不会出现问题。(仅供参考————它确实需要信用卡/借记卡以进行身份验证,但它完全免费) +[Render](https://render.com/) 是一项便于创建服务器的服务。它支持从 GitHub 加载服务器源码。虽然说免费套餐提供的资源相当有限,但服务器可以在上面毫无问题地流畅运行。(顺便一提——它确实需要信用卡/借记卡进行身份验证,但过程完全免费) -由于太多人使用同一个GitHub链接,您需要亲自fork Git库。 +由于有太多人使用同一个 GitHub URL,您需要自己 fork 一份 Git 仓库。 -1. 如果您没有Github账户,请[注册](https://github.com/signup)一个GitHub账户。 -2. [打开](https://github.com/Dadoum/anisette-v3-server)Git库。 -3. 点击右上角的“fork”,将库fork到您的帐户。 -4. 一旦fork的库建立完毕,点击右上角绿色的“code”下拉菜单,复制.git链接。 +1. 如果您还没有 GitHub 账户,请先[注册](https://github.com/signup)一个。 +2. [打开](https://github.com/Dadoum/anisette-v3-server) Git 仓库。 +3. 点击右上角的 "Fork",将该仓库 fork 到您的账户下。 +4. fork 的仓库创建完成后,点击右上角的绿色 "Code" 下拉菜单,并复制 .git URL。 -* 稍后会用到这个链接,请好好保留。 +* 保存好这个以备后用。 -完成以上操作后,您就可以创建Render服务器了。 +完成这些后,您就可以创建 Render 服务器了。 1. [注册](https://dashboard.render.com/register/)一个账户。 -2. 创建一个[新的Web服务](https://dashboard.render.com/select-repo?type=web). -3. 下滑到**Public Git repository**,并输入您前面复制的链接。 -4. 点击"Continue"并填写表格: - * **Name** - 名字,"不会造成任何影响" - * **Region** - 选择距离您最近的地区 - * **Branch** - main (默认) - * **Root Directory** - blank (默认) - * **Environment** - Docker (默认) - * **Instance Type** - Free - -5. 等待服务器构建。完成后,您将看到以下内容: +2. 创建一个[新的网络服务](https://dashboard.render.com/select-repo?type=web)。 +3. 向下滚动到 **公开 Git 仓库**,并输入您之前复制的 URL。 +4. 点击 "Continue" 并填写表单: + * **名称** - 无所谓 + * **区域** - 离您最近 + * **分支** - main(默认) + * **根目录** - 留空(默认) + * **环境** - Docker(默认) + * **实例类型** - 免费 + +5. 等待服务器构建。构建完成时您会看到以下内容: ``` Machine requires provisioning... done ! Your service is live 🎉 ``` -*如果构建因任何原因失败,请单击**Manual Deploy**,然后**Deploy latest commit**。* +*如果构建因任何原因失败,请点击 **Manual Deploy**,然后点击 **Deploy latest commit**。* -6. 在页面顶部找到新服务器的链接: +6. 在页面顶部找到您的新服务器的链接: ``` https://[your-server-name].onrender.com ``` -## 创建自定义anisette服务器列表 - -自0.5.8版本发布以来,SideStore使用了anisette服务器列表系统,因此您可以更容易地添加官方认可的anisette服务器。这意味着,要使用自己的服务器,同时不要求将您的服务器添加到官方列表中,还需要做一些额外的工作。 - -如果您想保留使用列表提供的服务器的选项,请按照以下步骤操作: -1. 点击[这里](https://servers.sidestore.io/servers.json)以获取当前的服务器列表。 -2. 请前往您选择的文件托管服务,将文件托管到互联网上。我们建议使用GitHub Pages,因为它更容易在未来进行编辑,并且本指南也将按照Github Pages的操作作为参考。如果您有自己的托管方式,请根据您的设置调整以下内容。 -3. 如果您已经设置了Github Pages网站,请跳到第六个子步骤。否则,请执行以下操作: -* 通过桌面端右上角的加号(+)按钮,或者移动端的个人资料图标 > Create new,或者[这个页面](https://github.com/new)以添加新的GitHub存储库。 -* 将名称设置为[您的GitHub用户名].GitHub.io,选中'Initialize this repository with a README',并将其余设置设置为您所希望的方式。 -* 创建后,转到“Settings”选项卡,导航到“Code and automation”下的“Pages”部分。 -* 将Build and deployment下的Source切换成'Deploy from branch' -* 如果没有自动选择的话,将Branch切换到'main' -* 返回代码选项卡,点击'Add files',然后点击'Upload files',再选择您之前下载的'servers.json'文件。 -* 上传后,单击文件并点击编辑(Edit)按钮。 -* 向下滚动到列表中的最后一个服务器,并在最后一个服务器的结束花括号('}')后添加逗号,然后按照以下格式添加您自己的服务器: +## 创建自定义 anisette 服务器列表 + +自 0.5.8 版本发布以来,SideStore 使用 anisette 服务器列表系统,以便官方认可的 anisette 服务器可以更容易地添加。这意味着如果您不想将自己的服务器加入官方的列表,而是独立地使用自己的服务器,就需要多做一点额外的工作。 + +如果您想保留使用内置服务器的选项,请按照以下步骤操作: +1. 前往[此处](https://servers.sidestore.io/servers.json)获取当前的服务器列表。 +2. 前往您选择的文件托管服务并将该文件托管到互联网上。我们建议使用 GitHub Pages,因为z将来更容易编辑,并且本指南将以该服务作为示例。如果您有自己的托管方式,请根据您的设置调整以下步骤。 +3. 如果您已经搭建了 GitHub Pages 站点,请跳到第六个子步骤。否则,请执行以下操作: +* 通过桌面端右上角的加号 (+) 按钮、移动端的配置文件图标 > 新建,或[这个页面](https://github.com/new)创建一个新的 GitHub 仓库。 +* 将名称设置为 [您的 GitHub 用户名].github.io,勾选 'Initialize this repository with a README',其余设置按您的意愿进行。 +* 创建完成后,前往 Settings 选项卡,并在 Code and automation 下进入 Pages 部分。 +* 将 Source 下的 Build and deployment 设置为 'Deploy from branch' +* 如果未自动选中,将 Branch 设置为 'main' +* 返回代码选项卡,点击 'Add files',然后点击 'Upload files',接着选择您之前下载的 'servers.json' 文件。 +* 上传完成后,点击该文件并按 Edit 按钮。 +* 向下滚动到列表中的最后一个服务器,在最后一个服务器的右花括号 ('}') 后面添加一个逗号,然后按照以下格式在其后添加您自己的服务器: ``` { - "name": "[一些可识别的东西,比如说用户名]", //除非你与其他人共享此服务器列表,否则这并不重要 - "address": "[您的服务器链接]" + "name": "[something identifiable like a username]", //doesn't really matter unless you're sharing this server list with someone else + "address": "[your server's url]" } ``` -*提交更改,然后前往https://[您的GitHub用户名].GitHub.io/[您放置文件的位置]/servers.json。如果文件成功加载了,那么您就可以继续下一节了。否则,您可能需要等待10分钟才能正确设置您的网站,然后再试一次。 +* 提交更改,然后前往 https://[您的 GitHub 用户名].github.io/[您放置文件的位置]/servers.json。如果文件能正常加载,您就可以继续下一部分了。否则,您可能需要等待最多 10 分钟,让您的站点正确配置好之后再重试。 -如果您只想使用自己的服务器,请按照上述步骤操作,但不要复制官方servers.json,而是使用此格式创建自己的服务器; +如果您只想使用自己的服务器,请按照上述步骤操作,但不要复制官方的 servers.json,而是使用以下格式创建您自己的: ``` { "servers": [ { - "name": "[同上]", - "address": "[同上]" + "name": "[as above]", + "address": "[also as above]" } ] } ``` -并继续进行。 +然后像往常一样继续。 -## 通过SideStore使用您的服务器 +## 将您的服务器与 SideStore 一起使用 -要在SideStore应用程序中使用新创建的服务器列表,请执行以下操作: +要在 SideStore 应用中使用您新创建的服务器列表,请执行以下操作: -1. 打开SideStore中的“设置”选项卡。 -2. 向下滚动到底部,然后点击“Anisette服务器”。 -3. 点击输入框中的链接,并将其替换为您的服务器列表的链接。 -4. 点击“刷新服务器”,然后从更新的列表中选择您自己的服务器。 +1. 打开 SideStore 中的 Settings 选项卡。 +2. 向下滚动到底部,点击 'Anisette Servers'。 +3. 点击列表 URL,并将其替换为您服务器列表的 URL。 +4. 点击 'Refresh Servers',然后从更新后的列表中选择您自己的服务器。 -## 完毕! +## 完成! -SideStore将会使用您的新自定义anisette服务器。 +SideStore 现在将使用您的新自定义 anisette 服务器。 \ No newline at end of file diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/advanced/app-sources.mdx b/i18n/zh/docusaurus-plugin-content-docs/current/advanced/app-sources.mdx index 5761bf13..534a41bf 100644 --- a/i18n/zh/docusaurus-plugin-content-docs/current/advanced/app-sources.mdx +++ b/i18n/zh/docusaurus-plugin-content-docs/current/advanced/app-sources.mdx @@ -1,24 +1,24 @@ --- -title: 应用源 -description: 自定义应用源的指南 +title: App 源 +description: 一篇关于自定义应用源的指南。 --- -# 创建应用源 +# 制作一个源 -SideStore与AltStore源(或AltSources)完全兼容。官方AltSource[文档](https://faq.altstore.io/developers/make-a-source)提供了制作自己的AltSource所需的所有详细信息。AltSources允许您的受众轻松查看、安装和更新所有可用的应用程序。 +SideStore 与 AltStore 源(或 AltSource)完全兼容。官方 AltSource [documentation](https://faq.altstore.io/developers/make-a-source) 提供了制作你自己的 AltSource 所需的全部细节。AltSource 让你的受众可以轻松地查看、安装和更新你所有可用的应用。 -以下是一些推荐的第三方工具,可以帮助您创建查看AltSources: --您可以使用社区构建的[AltStudio](https://altstudio.app/)(开发中)来使用IPA文件自动为您生成AltSource!(注意:在使用AltStudio创建源后,您必须移除默认自动生成的`marketplaceID`和`Build`字段,否则SideStore会误认它是经过公证的源,并阻止添加该源) --您可以在完成更改之前,使用社区构建的[AltSource浏览器](https://altsource.by.lao.sb/browse/)以可视化方式查看您对AltSource草稿的更新,从而在发布之前更正任何错误! +以下是一些推荐的第三方工具,可以帮助你创建和查看你的 AltSource: +- 你可以使用社区构建的 [AltStudio](https://altstudio.app/)(WIP)通过一个 IPA 自动为你生成一个 AltSource!(注意 —— 使用 AltStudio 创建源后,你必须移除默认自动生成的 marketplaceID 和 Build 字段,否则 SideStore 会认为它是由 notarized 认证的源,从而阻止你的源被添加) +- 你可以使用社区构建的 [AltSource Browser](https://altsource.by.lao.sb/browse/) 在最终确定你的更改之前可视化查看你对 AltSource 草稿的更新,从而让你在发布前纠正任何错误! -# 分发您的应用源 +# 分发你的源 -您可以用此模板创建一个链接,以便自动的添加您的AltSource: +你可以使用这个模板创建一个自动添加你的 AltSource 的链接: ``` sidestore://source?url=[source url] ``` -欲了解更多信息,请参阅[URL Schema](/docs/advanced/url-schema)。将您的AltSource链接以这种格式创建后,通常会将其放入 tinyurl.com 等链接缩短服务中,会很有帮助。然而,如果用户在未安装SideStore的情况下尝试使用 sidestore:// 链接,应用将会崩溃,因此提供一些说明文档可能会有帮助。 +更多信息,请参阅 [URL Schema](/docs/advanced/url-schema)。通常以这种格式创建指向你 AltSource 的链接会很有帮助,然后把它放入诸如 `tinyurl.com` 的短链接服务中。然而,如果用户在没有预先安装 SideStore 的情况下尝试使用 `sidestore://` 链接,它会崩溃,所以一些文档可能会有所帮助。 ## 就是这样! -以下是一些不错的现有AltSource,您可以复制并粘贴到SideStore中使用:[SideStore 社区源](https://github.com/SideStore/Community-Source)、[官方 AltStore 源](https://apps.altstore.io)、[LiveContainer 源](https://raw.githubusercontent.com/LiveContainer/LiveContainer/refs/heads/main/apps.json)和[DolphiniOS 源](https://altstore.oatmealdome.me). +这里有一些很好的现有 AltSource,你可以复制粘贴到 SideStore 中:[SideStore Community Source](https://github.com/SideStore/Community-Source)、[official AltStore Source](https://apps.altstore.io)、[LiveContainer Source](https://raw.githubusercontent.com/LiveContainer/LiveContainer/refs/heads/main/apps.json) 和 [DolphiniOS Source](https://altstore.oatmealdome.me)。 diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/advanced/jit.mdx b/i18n/zh/docusaurus-plugin-content-docs/current/advanced/jit.mdx index e017f069..0f63537e 100644 --- a/i18n/zh/docusaurus-plugin-content-docs/current/advanced/jit.mdx +++ b/i18n/zh/docusaurus-plugin-content-docs/current/advanced/jit.mdx @@ -1,50 +1,51 @@ --- -title: 启用JIT -description: 关于如何为需要即时编译(JIT)的应用程序启用JIT编译的教程。 +title: 启用 JIT +description: 一篇关于如何为需要它的应用启用即时(JIT)编译的教程。 --- :::note -iOS 26再次破坏了JIT。StikDebug发布了一个新版本尝试解决,但是目前支持仍处于受限阶段。截止本指南编写时(11月10日)支持的应用如下: +iOS 26 再次破坏了 JIT,而 26.6 和 27 仅对少数应用可用。StikDebug 已发布一个带修复的更新,但支持有限。截至撰写本文时(2026 年 6 月 17 日),仅支持以下应用: * UTM * Amethyst * MeloNX * maciOS -* DolphiniOS +* DolphiniOS(最高支持至 26.6) * Geode +* Manic EMU +* Flycast(iOS 26 分支) +* MeloCafe +* ARMSX2 +* DukeX(A13/A14/M1 芯片上最高支持至 27) -请留意我们在Discord服务器的公告频道以及[idevice服务器](https://discord.gg/mACqxMxP3X)的公告和兼容性频道以获取未来的进展。 +请持续关注我们 Discord 服务器中的公告频道,以及 [idevice server](https://discord.gg/mACqxMxP3X) 的公告和兼容性频道以获取进一步更新。 -启用JIT的方法有很多,如AltJIT、SideJITServer等。本教程将介绍StikDebug(旧称StikJIT)的使用,因为它是我们目前推荐的方法。有关更多信息,请参阅[官方StikDebug配对指南](https://github.com/StephenDev0/StikDebug-Guide/blob/main/pairing_file.md)。 +根据你的 iOS 版本,有许多启用 JIT 的方法。本教程将介绍 StikDebug(原 StikJIT)的使用,因为这是目前我们推荐的方法。如需更多信息,请参阅[official StikDebug pairing guide](https://github.com/StephenDev0/StikDebug-Guide/blob/main/pairing_file.md)。 -作为替代方案,SideStore 0.6.2更新了minimuxer,允许了类似于StikDebug的内置JIT功能。要使用此功能,只需确保您已连接到StosVPN,并启用了Wi-Fi或飞行模式,然后点击“我的应用程序”,长按您要启用JIT的应用程序,点击“启用JIT”。 +作为替代方案,SideStore 0.6.2 包含了对 minimuxer 的更新,可在 iOS 16 及以下版本或非 TXM 支持(4 年以上)的设备上提供类似 StikDebug 的内置 JIT 功能。要使用此功能,只需确保你通过 Wi-Fi 或启用飞行模式连接到 LocalDevVPN,然后前往“My Apps”,长按你想要启用 JIT 的应用,并点击“enable JIT”。 ::: -## 使用前提 -* 一台运行了iOS/iPadOS 17.4-18.x的苹果设备(包括18.4b1)。如果您正在使用iOS/iPadOS17.0-17.3, 您必须使用诸如[SideJITServer](https://github.com/nythepegasus/SideJITServer)之类的替代方案。如果您的设备已经发布4年以上(且不支持TXM)的话,SideStore的JIT启用工具仅在iOS26可用。 +## 前提条件 +* 一台运行 iOS/iPadOS 17.4 至所有 iOS 18 版本(不含 18.4b1)的 iPhone 或 iPad。如果你使用的是 17.0-17.3,你必须使用替代方案,例如 [SideJITServer](https://github.com/nythepegasus/SideJITServer)。 -## 使用App Store安装StikDebug +## StikDebug 安装步骤: -1. **安装StikDebug** - 从[App Store](https://apps.apple.com/us/app/stikdebug/id6744045754)安装StikDebug。 -:::note 不错的是,目前StikDebug中使用的VPN与SideStore中使用的VPN类似,这意味着您也可以使用它在SideStore中安装和刷新应用程序,类似于StosVPN。 -::: +1. **安装 StikDebug** + 从[Official AltStore Source](https://intradeus.github.io/http-protocol-redirector?r=sidestore://https://stikdebug.xyz/index.json)安装 StikDebug。 -2. **安装步骤:** - 遵循下面的标准安装步骤以安装程序。 +2. **放置配对文件:** +使用 iloader 导入你用于 SideStore 的同一个**配对文件**。有关此过程的更多信息,请参阅[here](https://github.com/StephenDev0/StikDebug-Guide/blob/main/pairing_file.md)。 -### 标准安装步骤: -1. **上传配对用文件:** - 打开并关闭StikDebug以在文件中构建应用程序需求的文件夹,然后导入您使用idevice pair生成的,导入到SideStore的**同一个配对文件**。有关此过程的更多信息,请参阅[此处](https://github.com/StephenDev0/StikDebug-Guide/blob/main/pairing_file.md)。 +### 标准设置流程(首次必须执行,且每次重启设备后都需再次执行) -2. **挂载DDI:** - 请确保您已经连接了Wi-Fi和VPN,并且导入了配对文件后,打开StikDebug,关闭并重新打开。这会挂载DDI,每次重新启动设备时都必须执行。 - -## 启用JIT: +1. **挂载 DDI:** + 打开 StikDebug,确保 Wi-Fi 和 VPN 已连接且配对文件已放置,然后强制关闭它并重新打开。这将会挂载 DDI。 -1. **启用VPN:** - 首先,在Wi-Fi上打开StikDebug或启用蜂窝数据以激活内置的VPN。现在,如果您正在使用蜂窝数据,请启用飞行模式,并在VPN启用的情况下重新打开应用程序。 +## 要启用 JIT: -2. **激活JIT:** - 选择“按应用程序连接”按钮,然后从列表中选择一个应用程序(必须带有正确的权限侧载的应用才能显示在列表中)以附加调试器并激活JIT功能。 +1. **启用 VPN:** + 首先在 Wi-Fi 或飞行模式下打开 LocalDevVPN。现在,如果使用蜂窝数据,先启动 VPN,再启用飞行模式,然后切换回蜂窝数据。 + +2. **激活 JIT:** + 从列表中选择一个应用(必须使用 get-task-allow 旁加载才会出现在列表中)以附加调试器并激活 JIT 功能。 diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/advanced/pairing-file.mdx b/i18n/zh/docusaurus-plugin-content-docs/current/advanced/pairing-file.mdx index 0e2cd54e..fa3b5caa 100644 --- a/i18n/zh/docusaurus-plugin-content-docs/current/advanced/pairing-file.mdx +++ b/i18n/zh/docusaurus-plugin-content-docs/current/advanced/pairing-file.mdx @@ -1,13 +1,18 @@ --- title: 配对文件 -description: 重新导入配对文件的指南 +description: 一篇关于手动重新导入配对文件的指南。 --- :::warning -注意,如果您更新或重置了您的苹果设备,您的配对文件将过期,您需要生成一个新的配对文件。当然,由于苹果的软件运行方式,这可能会随时发生,目前我们无法修复它。这是一个关于如何使用 iloader重新导入配对文件到您的设备上的指南。 +如果你更新或重置了你的 iPhone、iPad 或 iPod touch,你的配对文件可能会过期并需要重新导入。这种情况也会随机发生。这是 Apple 的问题,我们对此无能为力。本指南将教你如何使用 iloader 手动替换配对文件。 ::: -## 重新导入您的配对文件 -1. 请确保您已经按照[安装指引](/docs/installation/prerequisites)中的步骤安装并配置好iloader和SideStore。 -2. 为获得最佳效果,请用USB数据线将您的苹果设备连接到电脑上,但是如果您的设备通过无线方式连接到了您的电脑上,这同样可行。 -3. 点击"Manage Pairing File" -4. 在"SideStore"和您需要导入的其他应用的右侧,点击"Place Pairing File",当绿色的"Pairing file placed successfully!"出现的时候,说明导入成功了。 +## 替换你的配对文件 +1. 确保你已经按照[install guide](/docs/installation/prerequisites)中的步骤安装并设置了 iloader 和 SideStore。如果 iloader 提示你更新它,请点击 'Yes'。 +2. 为了获得最可靠的结果,请通过 USB 数据线将你的 iPhone、iPad 或 iPod touch 连接到电脑。如果你的设备仅以无线方式出现,那也应该可以正常工作。 +3. 点击“Delete Stored Pairing”按钮以丢弃你旧的配对文件。 +4. 在设备列表中点击你的设备,并在提示时按下你 iDevice 上的“Trust”按钮。 +5. 回到 iLoader,点击“Manage Pairing File”。 +6. 在“SideStore”及任何其他你想要的应用右侧,点击“Place”。“Pairing file placed successfully!” 应以绿色显示。 +:::note +如果你在 SideStore 中仍然收到错误,请尝试重启你的 iDevice 和电脑,然后重复上述步骤。如果仍有问题,请在 [Discord](https://dis.sidestore.io/) 上联系我们。 +::: \ No newline at end of file diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/advanced/url-schema.mdx b/i18n/zh/docusaurus-plugin-content-docs/current/advanced/url-schema.mdx index 0ea65478..f7a973de 100644 --- a/i18n/zh/docusaurus-plugin-content-docs/current/advanced/url-schema.mdx +++ b/i18n/zh/docusaurus-plugin-content-docs/current/advanced/url-schema.mdx @@ -1,21 +1,21 @@ --- -title: URL Schemes -description: URL Schemes的操作指南 +title: URL Schema +description: 一篇关于 url schema 的指南。 --- -# URL Schemes +# URL Schema -以下是可用于与SideStore交互的URL Schemes的列表。这些URL Schemes非常有用,因为它们让开发人员只需在他们的社交媒体或网站上放置一个一键链接,iOS就会直接在SideStore中打开此链接,并执行对应的操作。 +以下是可用于与 SideStore 交互的不同 URL Scheme 列表。这些方案非常有用,因为它们允许开发者简单地在他们的社交媒体或网站上放置一个一键链接,然后 iOS 将直接在 SideStore 中打开该链接,执行所指定的操作。 -目前使用URL Schemes可以做的事情仅限于安装应用程序和添加源,但将来会扩展到接受多个输入并执行各种其他任务。 +目前可以使用 URL Scheme 执行的操作仅限于安装应用和源,但未来将扩展为接收多个输入并执行各种其他任务。 -## 侧载远程托管的app +## 安装远程托管的应用 ``` sidestore://install?url=[download url] ``` -## 添加一个AltSource +## 添加 AltSource ``` sidestore://source?url=[source url] diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/contributing/advanced-formatting.mdx b/i18n/zh/docusaurus-plugin-content-docs/current/contributing/advanced-formatting.mdx index 0324378d..e05cb486 100644 --- a/i18n/zh/docusaurus-plugin-content-docs/current/contributing/advanced-formatting.mdx +++ b/i18n/zh/docusaurus-plugin-content-docs/current/contributing/advanced-formatting.mdx @@ -2,18 +2,18 @@ sidebar_position: 3 --- -# 高级格式指南 +# 进阶格式化规范 -我们将介绍 SideStore 项目中的高级格式化场景、架构模式以及复杂的 Swift/Objective-C 特性。 +我们将介绍 SideStore 项目中的进阶格式化场景、架构模式以及复杂的 Swift/Objective-C 特性。 -## 高级 Swift 模式 +## 进阶 Swift 模式 -### 协议导向编程 +### 面向协议编程 #### 协议定义 -- 保持协议专注和内聚 -- 为泛型协议使用关联类型 -- 在扩展中提供适当的默认实现 +- 保持协议专注且内聚 +- 对泛型协议使用关联类型 +- 在适当的情况下,在扩展中提供默认实现 ```swift // ✅ Good @@ -37,13 +37,13 @@ protocol AppManager { func update(_ app: Any) -> Bool func backup(_ app: Any) -> Bool func restore(_ app: Any) -> Bool - // 指责过多 + // Too many responsibilities } ``` #### 协议组合 -- 为复杂需求使用协议组合 -- 保持单个协议小巧和专注 +- 对复杂需求使用协议组合 +- 保持单个协议小而专注 ```swift // ✅ Good @@ -67,12 +67,12 @@ class AppDeployer { } ``` -### 泛型和类型约束 +### 泛型与类型约束 #### 泛型类型定义 - 使用有意义的约束名称 -- 优先选择协议约束而不是类约束 -- 为复杂约束使用 `where` 子句 +- 优先使用协议约束,而非类约束 +- 对复杂约束使用 `where` 子句 ```swift // ✅ Good @@ -95,8 +95,8 @@ struct Repository { } ``` -#### 高级泛型约束 -- 适当使用条件一致性 +#### 进阶泛型约束 +- 恰当使用条件遵循 - 在需要时利用幻影类型 ```swift @@ -128,7 +128,7 @@ typealias InstalledApp = AppState #### 异步函数设计 - 一致地使用 async/await - 清晰地组织并发操作 -- 适当处理取消 +- 恰当处理取消操作 ```swift // ✅ Good @@ -179,8 +179,8 @@ func installApp(_ app: App, completion: @escaping (Error?) -> Void) { ``` #### 结构化并发 -- 使用任务组进行相关的并发操作 -- 优先选择结构化并发而不是非结构化任务 +- 对相关并发操作使用任务组 +- 优先使用结构化并发,而非非结构化任务 ```swift // ✅ Good @@ -216,10 +216,10 @@ func downloadMultipleApps(_ apps: [App]) async throws -> [App: Data] { } ``` -### Result Builders 和 DSL +### 结果构建器与 DSL -#### 自定义 Result Builders -- 创建专注、单一用途的 Result Builders +#### 自定义结果构建器 +- 创建专注单一用途的结果构建器 - 为领域特定操作提供清晰的语法 ```swift @@ -262,11 +262,11 @@ let app = configureApp { } ``` -## 高级 Objective-C 模式 +## 进阶 Objective-C 模式 -### 分类组织 -- 使用分类(Categories)来组织相关功能 -- 保持分类名称具有描述性和特异性 +### Category 组织 +- 使用 category 组织相关的功能 +- 保持 category 名称描述性强且具体 ```objc // ✅ Good @@ -287,8 +287,8 @@ let app = configureApp { @end ``` -### 高级内存管理 -- 为委托关系使用正确的模式 +### 进阶内存管理 +- 对委托关系使用合适的模式 - 正确处理复杂的对象图 ```objc @@ -331,8 +331,8 @@ let app = configureApp { ``` ### Block 使用模式 -- 为异步操作使用正确的 Block 模式 -- 在 Block 中正确处理内存管理 +- 对异步操作使用合适的 block 模式 +- 在 block 中正确处理内存管理 ```objc // ✅ Good @@ -383,8 +383,8 @@ typedef void (^SSInstallationCompletionBlock)(SSApp *app, NSError *error); ## 架构模式 ### MVVM 实现 -- 明确分离模型(Model)、视图(View)和视图模型(ViewModel)的职责 -- 使用正确的数据绑定模式 +- 在 Model、View 和 ViewModel 之间清晰分离关注点 +- 使用合适的数据绑定模式 ```swift // ✅ Good @@ -471,8 +471,8 @@ struct AppListView: View { ``` ### 依赖注入 -- 使用依赖注入进行可测试性和灵活性 -- 对于复杂应用程序,考虑使用 DI 容器 +- 使用依赖注入以提高可测试性和灵活性 +- 对复杂应用可考虑使用 DI 容器 ```swift // ✅ Good @@ -525,8 +525,8 @@ class ServiceContainer { ``` ### 错误处理架构 -- 创建全面的错误处理策略 -- 使用类型化错误以更好地处理错误 +- 制定全面的错误处理策略 +- 使用类型化错误以改进错误处理 ```swift // ✅ Good @@ -589,8 +589,8 @@ class AppService { ## 性能考量 ### 内存优化 -- 对昂贵的资源使用延迟加载 -- 实施适当的缓存策略 +- 对开销较大的资源使用惰性加载 +- 实施合适的缓存策略 ```swift // ✅ Good @@ -638,8 +638,8 @@ class AppImageCache { ``` ### 线程最佳实践 -- 使用适当的队列优先级 -- 最小化上下文切换 +- 使用合适的队列优先级 +- 尽量减少上下文切换 ```swift // ✅ Good @@ -687,7 +687,7 @@ actor BackgroundProcessor { ### 基于协议的测试 - 在测试中使用协议进行依赖注入 -- 创建专注于功能测试的替身(Test Doubles) +- 创建专注的测试替身 ```swift // ✅ Good @@ -745,14 +745,17 @@ class AppListViewModelTests: XCTestCase { ## 文档标准 ### 复杂 API 文档 -- 文档复杂行为和边缘情况 -- 为非平凡的 API 提供使用示例 +- 记录复杂的行为和边界情况 +- 为不平凡的 API 提供使用示例 ```swift /** - * 这是一个线程安全的管理器,用于处理具有自动重试逻辑的应用程序安装。 - * 此类管理 iOS 应用程序的安装过程,处理网络下载、签名验证和设备通信。 - * 它为瞬时故障提供自动重试功能,并提供全面的错误报告。 + * A thread-safe manager for handling app installations with automatic retry logic. + * + * This class manages the installation process for iOS applications, handling + * network downloads, signature verification, and device communication. + * It provides automatic retry functionality for transient failures and + * comprehensive error reporting. * * ## Usage Example * ```swift @@ -771,12 +774,16 @@ class AppListViewModelTests: XCTestCase { * // Handle other errors * } * ``` - * - * ## 线程安全 - * 此类是线程安全的,可以从任何队列调用。除非另有说明,所有完成处理程序都在主队列上调用。 - * ## 错误处理 - * 安装失败分为可恢复错误和不可恢复错误。可恢复错误(网络超时、临时设备问题)将自动重试至指定限制。 - * 不可恢复错误(无效签名、不兼容设备)将立即失败。 + * + * ## Thread Safety + * This class is thread-safe and can be called from any queue. All completion + * handlers are called on the main queue unless otherwise specified. + * + * ## Error Handling + * Installation failures are categorized into recoverable and non-recoverable + * errors. Recoverable errors (network timeouts, temporary device issues) will + * be automatically retried up to the specified limit. Non-recoverable errors + * (invalid signatures, incompatible devices) will fail immediately. */ @MainActor class AppInstallationManager { @@ -784,4 +791,4 @@ class AppInstallationManager { } ``` -请记住:这些高级模式应谨慎使用。始终优先考虑代码清晰度和可维护性,而不是巧妙的实现。如有疑问,请选择能够满足需求的更简单方法。 \ No newline at end of file +请记住:应谨慎使用这些进阶模式。始终将代码的清晰性和可维护性置于取巧的实现之上。如有疑问,请选择仍能满足要求的更简单的方案。 \ No newline at end of file diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/contributing/contributing.mdx b/i18n/zh/docusaurus-plugin-content-docs/current/contributing/contributing.mdx index 3020784d..360c4667 100644 --- a/i18n/zh/docusaurus-plugin-content-docs/current/contributing/contributing.mdx +++ b/i18n/zh/docusaurus-plugin-content-docs/current/contributing/contributing.mdx @@ -2,238 +2,238 @@ sidebar_position: 1 --- -# 为SideStore贡献代码 +# 为 SideStore 做贡献 -感谢您对为SideStore提供贡献感兴趣!SideStore是一个由社区驱动的工程,它是由像您一样的人共同努力的结果。 +感谢你对为 SideStore 做贡献感兴趣!SideStore 是一个由社区驱动的项目,正是像你这样的人让它成为可能。 -通过为本项目(SideStore)贡献代码,即代表您已同意遵守开发者来源证书,详见[CERTIFICATE-OF-ORIGIN.md](https://github.com/SideStore/SideStore/blob/develop/CERTIFICATE-OF-ORIGIN.md)。在开发者来源证书生效后,对本项目的任何贡献均须遵循其政策。 +通过为这个项目(SideStore)做出贡献,你同意在 [CERTIFICATE-OF-ORIGIN.md](https://github.com/SideStore/SideStore/blob/develop/CERTIFICATE-OF-ORIGIN.md) 中找到的开发者来源证书(Developer's Certificate of Origin)。在添加开发者来源证书之后对此项目的任何贡献均受其政策的约束。 -为SideStore贡献有很多种方式,所以如果您不是一个开发者,也有其他您可以提供帮助的方式: +有很多方式可以为 SideStore 做贡献,所以如果你不是开发者,还有很多其他方式可以帮助: -- [撰写文档](https://github.com/SideStore/SideStore-Docs) -- [提交详细的bug报告,或建议新的功能](https://github.com/SideStore/SideStore/issues/new/choose) -- 提供支持协助: - - [Discord](https://dis.sidestore.io) - - [GitHub讨论](https://github.com/SideStore/SideStore/discussions) +- [Writing documentation](https://github.com/SideStore/SideStore-Docs) +- [Submitting detailed bug reports and suggesting new features](https://github.com/SideStore/SideStore/issues/new/choose) +- 提供支持方面的帮助: + - [Discord](https://dis.sidestore.io/) + - [GitHub Discussions](https://github.com/SideStore/SideStore/discussions) -当然,这个指南将会专注于开发侧相关的内容。从现在开始,这里仅提供设置说明,若设置完成后需要帮助,您可以[加入我们的Discord频道](https://dis.sidestore.io)。 +不过,本指南将侧重于开发方面。目前我们只包含设置信息,但如果你在设置后需要帮助,可以[join our Discord](https://dis.sidestore.io)。 -## 需求 +## 要求 -这个指南已预设您满足以下条件: +本指南假设你: -- 正在使用一台Mac -- 安装了Xcode -- 拥有基础的命令行相关知识(知道如何运行指令,导航至目录) -- 拥有基础的Git知识,([GitHub Desktop](https://desktop.github.com/)对于初学者来说是一个很好的工具,它极大程度的简化了使用Git工作的体验) -- 拥有基础的Swift/iOS开发知识 +- 使用的是 Mac +- 已安装 Xcode +- 具备基本命令行知识(知道如何运行命令,cd 到目录) +- 具备基本 Git 知识([GitHub Desktop](https://desktop.github.com/) 是初学者的绝佳工具,并且大大简化了与 Git 的协作) +- 具备基本 Swift/iOS 开发知识 -## 安装 +## 设置 -1. **在GitHub分叉SideStore的存储库**. +1. **在 GitHub 上 fork SideStore 仓库**。 -2. **克隆分叉**: +2. **克隆你的 fork**: ```bash git clone https://github.com//SideStore.git --recurse cd SideStore ``` - 如果您正在使用GitHub Desktop,请参考[这个指南](https://docs.github.com/en/desktop/adding-and-cloning-repositories/cloning-and-forking-repositories-from-github-desktop)。 + 如果你使用的是 GitHub Desktop,请参考[this guide](https://docs.github.com/en/desktop/adding-and-cloning-repositories/cloning-and-forking-repositories-from-github-desktop)。 -3. **将`CodeSigning.xcconfig.sample`复制到`CodeSigning.xcconfig`**然后填入数值。 +3. **将 `CodeSigning.xcconfig.sample` 复制为 `CodeSigning.xcconfig`** 并填入相应的值。 -4. **(只有开发者需要)** 修改Info.plist中`ALTDeviceID`的数值为您的设备的UDID。正常来说,SideServer会在安装过程中将设备的UDID嵌入SideStore的Info.plist文件中。通过Xcode运行时,您需要手动设置该值,否则SideStore将无法为正确设备重新签名(甚至安装)应用程序。 +4. **(仅限开发)** 将 Info.plist 中 `ALTDeviceID` 的值改为你设备的 UDID。通常,iloader 会在安装期间将设备的 UDID 嵌入到 SideStore 的 Info.plist 中。在通过 Xcode 运行时,你需要自己设置该值,否则 SideStore 将无法为相应的设备重新签名(甚至无法安装)应用。 -5. **最后,在Xcode打开`AltStore.xcworkspace`**。 +5. **最后,在 Xcode 中打开 `AltStore.xcworkspace`**。 -接下来,您就可以进行属于您的修改并进行测试了。然后,使用Git提交并推送您的修改,不要忘了拉取请求(pr)。 +接下来,进行修改并测试。然后使用 git 提交并推送你的更改,并发起一个 pull request。 -## 关于预构建的二进制文件 +## 预构建二进制信息 -minimuxer和em_proxy使用由GitHub Actions预构建的静态库二进制文件以加快编译,这移除了在SideStore上工作的时候安装Rust的需求。[`SideStore/fetch-prebuilt.sh`](https://github.com/SideStore/SideStore/blob/develop/SideStore/fetch-prebuilt.sh)会在每次Xcode编译之前运行,它会每6个小时检查下载的二进制文件是否是最新的。如果您想强制检查是否存在新的二进制文件,运行`bash ./SideStore/fetch-prebuilt.sh force`。 +minimuxer 和 em_proxy 使用由 GitHub Actions 构建的预构建静态库二进制文件,以加快构建速度并消除在处理 SideStore 时需要安装 Rust 的需求。Xcode 会在每次构建前运行 [`SideStore/fetch-prebuilt.sh`](https://github.com/SideStore/SideStore/blob/develop/SideStore/fetch-prebuilt.sh),并且每 6 小时检查一次下载的二进制文件是否为最新。如果你想强制检查新版本,请运行 `bash ./SideStore/fetch-prebuilt.sh force`。 -## 使用Xcode进行构建 +## 使用 Xcode 构建 -如果您有需要,您可以使用`brew install cocoapods`安装cocoapods -现在,在仓库工作区根目录下使用命令行,使用执行Pod-Install指令:`pod install` 以安装cocoapod的相关依赖 -在这之后您可以在Xcode内执行正常的构建 +如需要请安装 cocoapods:`brew install cocoapods` +现在在仓库工作区根目录下使用命令行执行 Pod-Install:使用 `pod install` 命令安装 cocoapod 依赖。 +之后你就可以在 Xcode 中进行常规构建了。 -## 编译用于分发的IPA包 +## 构建用于分发的 IPA -如果您有需要,您可以使用`brew install cocoapods`安装cocoapods -现在,在仓库工作区根目录下使用命令行,使用执行Pod-Install指令:`pod install` 以安装cocoapod的相关依赖 +如需要请安装 cocoapods:`brew install cocoapods` +现在在仓库工作区根目录下使用命令行执行 Pod-Install:使用 `pod install` 命令安装 cocoapod 依赖。 -您可以在根目录使用Makefile指令:`make build fakesign ipa` -默认情况下,构建的配置为:`Release` -对于调试版本,在根目录下使用:`export BUILD_CONFIG=Debug;make build fakesign ipa` -对于alpha/beta版本,在调用构建指令前运行:`export IS_ALPHA=1;` or `export IS_BETA=1;` -这会创建SideStore.ipa +然后你可以在根目录使用 Makefile 命令:`make build fakesign ipa`。 +默认的构建配置为:`Release` +对于调试构建:在根目录执行 `export BUILD_CONFIG=Debug;make build fakesign ipa`。 +对于 alpha/beta 构建:在调用构建命令之前设置 `export IS_ALPHA=1;` 或 `export IS_BETA=1;`。 +这将生成 SideStore.ipa。 ```sh 示例: # cocoapods brew install cocoapods - # 执行安装pods + # 执行安装 pods pod install # alpha 发布构建 export IS_ALPHA=1;make build fakesign ipa - # alpha 测试构建 + # alpha 调试构建 export IS_ALPHA=1;export BUILD_CONFIG=Debug;make build fakesign ipa # beta 发布构建 export IS_BETA=1;make build fakesign ipa - # beta 测试构建 + # beta 调试构建 export IS_BETA=1;export BUILD_CONFIG=Debug;make build fakesign ipa - # stable 发布构建 + # 正式发布构建 make build fakesign ipa - # stable 测试构建 + # 正式调试构建 export BUILD_CONFIG=Debug;make build fakesign ipa ``` -在默认情况下,SideStore会使用默认的包标识符 `com.SideStore.SideStore` 进行构建,但如果你需要为命令行构建配置自定义的bundleID ,您可以通过导出`BUNDLE_ID_SUFFIX`环境变量来实现: +默认情况下 SideStore 会以其默认的 bundleIdentifier `com.SideStore.SideStore` 构建,但如果你需要为命令行构建设置自定义 bundleID,可以通过导出 `BUNDLE_ID_SUFFIX` 环境变量来实现: ```sh - # stable 发布构建 + # 正式发布构建 export BUNDLE_ID_SUFFIX=XYZ0123456;make build fakesign ipa - # stable 测试构建 + # 正式调试构建 export BUNDLE_ID_SUFFIX=XYZ0123456;export BUILD_CONFIG=Debug;make build fakesign ipa ``` -**提示**:当您使用XCode构建的时候,`BUNDLE_ID_SUFFIX`默认配置的值为`DEVELOPMENT_TEAM` +**注意**:在从 XCode 构建时,`BUNDLE_ID_SUFFIX` 默认设置为 `DEVELOPMENT_TEAM` 的值。 -可通过在覆盖生成的 CodeSigning.xcconfig 文件(基于 CodeSigning.xcconfig.sample)中设置/移除 BUNDLE_ID_SUFFIX 进行自定义。 +可以通过在由 CodeSigning.xcconfig.sample 创建的 CodeSigning.xcconfig 中设置/移除 BUNDLE_ID_SUFFIX 来自定义此值。 :::warning -生成的二进制文件将包含指向Xcode派生数据的路径,若您在本地构建了minimuxer,则还包含指向$HOME/.cargo的路径。这些路径将包含您的用户名。若需保护用户名隐私,建议改用GitHub Actions构建IPA文件。 +生成的二进制文件将包含到 Xcode 的 DerivedData 的路径,如果你在自己机器上构建了 minimuxer,还会包含到 $HOME/.cargo 的路径。这会包含你的用户名。如果你想保持用户名的私密性,你可能希望让 GitHub Actions 来构建 IPA。 ::: -## 在进行SideStore的开发时同时开发minimuxer +## 与 SideStore 一同开发 minimuxer -请参考[minimuxer's README](https://github.com/SideStore/minimuxer)获取开发指引 +请参阅 [minimuxer's README](https://github.com/SideStore/minimuxer) 获取开发说明。 -## 拉取请求流程 +## Pull Request 流程 -### 在提交之前 +### 提交之前 -1. **遵循代码标准**:确保您的代码符合我们的[代码格式指南](./formatting.mdx). +1. **遵循代码标准**:确保你的代码符合我们的[formatting guidelines](./formatting.mdx)。 -2. **测试您做出的修改**: - - 尽可能的在不同的iOS版本进行测试 - - 确保现存的功能不会出现损坏 - - 根据适用情况为新功能添加测试 +2. **测试你的更改**: + - 尽可能在不同的 iOS 版本上测试 + - 确保现有功能没有被破坏 + - 在适用时为新功能添加测试 -3. **更新文档**:如果您的更改影响用户可见的功能,请更新相关文档。 +3. **更新文档**:如果你的更改影响了面向用户的功能,请更新相关文档。 -### 提交您的PR +### 提交你的 PR -1. **创建一个功能分支**: +1. **创建一个功能分支**: ```bash git checkout -b feature/your-feature-name ``` -2. **进行修改**:遵循编码规范和最佳实践 +2. **进行你的修改**:遵循编码指南和最佳实践。 -3. **提交您的更改并签名**: +3. **使用签名提交你的更改**: ```bash git add . git commit -s -m "Add descriptive commit message" ``` - **重要提示**:所有提交都应使用开发者来源证书(DCO)签名。`-s` 标志会自动在提交信息中添加必需的 `Signed-off-by` 行。 + **重要**:所有提交都应使用开发者来源证书(DCO)进行签名。`-s` 标志会自动在提交信息中添加必要的 `Signed-off-by` 行。 -4. **推送到您的分支**: +4. **推送到你的 fork**: ```bash git push origin feature/your-feature-name ``` -5. **创建一个Pull Request**:前往SideStore的主库并且从您的分支创建一个pull request +5. **创建 Pull Request**:前往主 SideStore 仓库,从你的分支创建一个 pull request。 :::caution -我们**不**接受由AI生成或“氛围编码”生成的pull请求(例如:包含过多生硬注释、代码缺乏个性化特征、未能理解项目核心、或未针对SideStore进行精心设计的代码)。请确保您的贡献具有原创性,且充分展现对代码库及其目标的清晰理解。 +我们不接受明显由 AI 生成或"vibe-coded"的 pull requests(例如,过多明显注释、看起来千篇一律且缺乏对项目的理解、或并非为 SideStore 用心制作的代码)。请确保你的贡献是原创的,并显示出对代码库及其目标的清晰理解。 ::: -### PR指南 +### PR 指南 -- **使用清晰的标题**:使用描述性的标题概括变更的内容 -- **详细的说明**:阐述所作变更及原因 -- **关联相关的问题**:引用相关GitHub问题 -- **截图**:附上界面变更的截图 -- **测试记录**:描述您如何测试您做的变更 +- **清晰的标题**:使用描述性标题来概括所做的更改 +- **详细的描述**:说明你做了哪些更改以及为什么 +- **关联相关问题**:引用任何相关的 GitHub issues +- **截图**:为 UI 更改包含截图 +- **测试说明**:描述你是如何测试你的更改的 -## 开发者来源证书 (DCO) +## 开发者来源证书(DCO) -SideStore要求所有贡献者使用开发者来源声明(DCO)签署其提交内容。该声明既作为我们的《贡献者行为准则》,也是确认您编写或拥有提交所贡献代码权限的简易方式。 +SideStore 要求所有贡献者使用开发者来源证书(DCO)签署他们的提交。这作为我们的贡献者行为准则,也是一种简单的方式,用来证明你编写了所贡献的代码或拥有提交它的权利。 -### DCO是什么? +### 什么是 DCO? -通过签署您的提交,您确认: +通过签署你的提交,你证明: -- **(a)** 该贡献全部或部分由您创作,且您有权根据文件中指定的开源许可证提交该贡献;或 -- **(b)** 该贡献基于先前作品,据您所知该作品受适当开源许可证覆盖,且您有权根据该许可证提交修改后的作品;或 -- **(c)** 该贡献由他人直接提供给您,且该人已证明满足(a)、(b)或(c)项要求,而您未对其进行修改。 -- **(d)** 您理解且同意:本项目及贡献内容均属公开性质,且贡献记录将永久保存。 +- **(a)** 该贡献全部或部分由你创建,并且你有权根据文件中指定的开源许可证提交它;或 +- **(b)** 该贡献基于先前的成果,据你所知,该成果受到适当的开源许可证的保护,并且你有权在该许可证下提交带有修改的该成果;或 +- **(c)** 该贡献由其他某个已认证 (a)、(b) 或 (c) 的人直接提供给你,并且你没有修改它。 +- **(d)** 你理解并同意此项目和此贡献是公开的,并且该贡献的记录会被无限期保留。 ### 如何签名 -要签署您的提交,只需在提交时添加 `-s` 标志: +要签署你的提交,只需在提交时添加 `-s` 标志: ```bash -git commit -s -m "您的提交信息" +git commit -s -m "Your commit message" ``` -这将自动在您的提交信息中添加一行`Signed-off-by`: +这将会自动在你的提交信息中添加一行 `Signed-off-by`: ``` -您的提交信息 +Your commit message Signed-off-by: SternXD ``` -### Important Notes +### 重要说明 -- **所有的提交都应是签名的** - 我们更倾向您为您的提交进行签名 -- **使用正确的邮箱** - 邮箱应和您的GitHub账户保持一致 -- **追溯性签名确认** - 如果您忘记了签名,您可以使用`git commit --amend -s`修改您的最后一次提交 +- **所有提交都应被签名** - 我们通常更希望你签名提交。 +- **使用正确的邮箱** - 邮箱应与你的 GitHub 账户匹配 +- **追溯签名** - 如果你忘记签名,你可以使用 `git commit --amend -s` 修改你上一条提交 -更多详情请参阅完整的[原产地证书](https://github.com/SideStore/SideStore/blob/develop/CERTIFICATE-OF-ORIGIN.md)文件。 +如需了解更多详情,请参阅完整的[Certificate of Origin](https://github.com/SideStore/SideStore/blob/develop/CERTIFICATE-OF-ORIGIN.md)文档。 ## 代码审查流程 -1. **初步审查**:一位维护者将会在数日内审查您的PR -2. **反馈**:处理任何请求的变更或问题 -3. **最终通过**:一旦通过,一位维护者将会合并您的PR +1. **初始审查**:维护者会在几天内审查你的 PR +2. **反馈**:处理任何要求的更改或问题 +3. **最终批准**:一旦获得批准,维护者会合并你的 PR -## 优质贡献的指南 +## 优秀贡献的指南 ### 代码质量 -- 编写干净,有阅读性的代码 -- 遵循Swift和Objective-C的最佳实践 +- 编写干净、可读的代码 +- 遵循 Swift 和 Objective-C 的最佳实践 - 使用有意义的变量和函数名 - 为复杂的代码添加注释 ### 测试 -- 尽可能在物理设备上测试 +- 尽可能在实体设备上测试 - 测试边界情况和错误条件 - 验证向后兼容性 ### 文档 - 更新代码注释 - 更新面向用户的文档 -- 为公共API添加内联文档 +- 为公共 API 包含内联文档 ## 获取帮助 -如果您需要帮助/有问题需要解决: +如果你需要帮助或有疑问: -- **GitHub讨论**:一般性问题请使用GitHub Discussions -- **GitHub Issues**:为bug/功能请求提交issue -- **Discord**:加入SideStore的Discord社区 +- **GitHub Discussions**:在 GitHub Discussions 上提问一般问题 +- **GitHub Issues**:为 bug 或功能请求创建 issue +- **Discord**:加入 SideStore Discord 社区 -## 认可 +## 致谢 -对项目作出重大贡献的贡献者将在项目鸣谢名单和变更日志中予以表彰 +做出重大贡献的贡献者将在项目的致谢和变更日志中得到认可。 -感谢您对SideStore的贡献! \ No newline at end of file +感谢你为 SideStore 做贡献! \ No newline at end of file diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/contributing/formatting.mdx b/i18n/zh/docusaurus-plugin-content-docs/current/contributing/formatting.mdx index 421c6d00..b0747383 100644 --- a/i18n/zh/docusaurus-plugin-content-docs/current/contributing/formatting.mdx +++ b/i18n/zh/docusaurus-plugin-content-docs/current/contributing/formatting.mdx @@ -2,24 +2,24 @@ sidebar_position: 2 --- -# 代码格式指南 +# 代码格式化规范 -本文件概述了SideStore项目中Swift和Objective-C代码的格式规范。统一的格式规范能提升代码库的可读性与可维护性。 +本文档概述了 SideStore 项目中 Swift 和 Objective-C 代码的格式化标准。一致的格式化能让代码库更易于阅读和维护。 -## 基本原则 +## 通用原则 -- **一致性**:遵循项目中现有的代码风格 +- **一致性**:遵循项目中已有的代码风格 - **可读性**:代码应易于阅读和理解 -- **简洁性**:优先选择简单明了的解决方案,而非花哨的方案 -- **规范性**:尽可能遵循苹果官方的Swift和Objective-C规范 +- **简洁性**:优先采用简单清晰的方案,而非取巧的做法 +- **Apple 惯例**:尽可能遵循 Apple 官方的 Swift 和 Objective-C 惯例 -## Swift格式 +## Swift 格式化 ### 命名规范 -#### 变量和函数 -- 使用**驼峰命名法**为变量,函数,以及方法命名 -- 使用能明确说明用途的描述性名称 +#### 变量与函数 +- 变量、函数和方法使用 **camelCase** +- 使用能清晰表明用途的描述性名称 ```swift // ✅ Good @@ -33,9 +33,9 @@ func validate() -> Bool var installing: Bool ``` -#### 类、结构体、枚举和协议 -- 使用 **驼峰式大小写** 表示类型 -- 使用有描述性、名词化的名称 +#### 类、结构体、枚举与协议 +- 类型使用 **PascalCase** +- 使用基于名词的描述性名称 ```swift // ✅ Good @@ -52,8 +52,8 @@ protocol managing ``` #### 常量 -- 使用**驼峰式命名法**为常量命名 -- 建议为全局常量使用 **全部大写的蛇形命名法** +- 常量使用 **camelCase** +- 可考虑对全局常量使用 **SCREAMING_SNAKE_CASE** ```swift // ✅ Good @@ -71,8 +71,8 @@ let max_retry_attempts = 3 ### 缩进与间距 #### 缩进 -- 使用**4个空格**作为缩进(非tab) -- 将续行与起始分隔符对齐 +- 使用 **4 个空格**进行缩进(不要使用制表符) +- 续行应与起始分隔符对齐 ```swift // ✅ Good @@ -90,9 +90,9 @@ completion: @escaping (Result) -> Void) { } ``` -#### 行长度 -- 尽可能保持行长度在**120字符**以下 -- 在合乎逻辑的位置拆分过长的行 +#### 行长 +- 尽可能将每行控制在 **120 个字符**以内 +- 在逻辑合理的位置断行 ```swift // ✅ Good @@ -107,8 +107,8 @@ let longVariableName = SomeClass.createInstanceWithVeryLongMethodName(parameter1 #### 间距 - 运算符两侧使用单个空格 -- 不允许尾随空格 -- 函数与主要代码段之间应留单行空行 +- 行尾不留多余空白 +- 在函数之间以及主要代码段之间使用一个空行分隔 ```swift // ✅ Good @@ -140,9 +140,9 @@ func secondFunction(){ ### 花括号与控制流 -#### 花括号式样 -- 在语句同一行上放置左大括号 -- 闭合大括号单独成行,与开头语句对齐 +#### 花括号风格 +- 左花括号与语句放在同一行 +- 右花括号单独成行,并与起始语句对齐 ```swift // ✅ Good @@ -169,9 +169,9 @@ else } ``` -#### 卫语句 -- 使用卫语句实现提前返回 -- 保持卫语句简单易读 +#### Guard 语句 +- 使用 guard 语句进行提前返回 +- 保持 guard 条件简单易读 ```swift // ✅ Good @@ -193,11 +193,11 @@ if let url = URL(string: urlString) { } ``` -### 类型注解与推断 +### 类型标注与类型推断 -#### 何时使用类型注解 -- 当类型不明确时使用类型注解 -- 当Swift能明确推断类型时省略类型注解 +#### 何时使用类型标注 +- 当类型不明确时使用类型标注 +- 当 Swift 能明确推断出类型时,省略类型标注 ```swift // ✅ Good @@ -213,8 +213,8 @@ let timeout = 30 // Unclear if Int or TimeInterval ### 函数声明 #### 参数标签 -- 使用描述性参数标签 -- 当首参数标签符合自然语境时可省略 +- 使用描述性的参数标签 +- 当省略第一个参数标签读起来更自然时,可以省略 ```swift // ✅ Good @@ -227,8 +227,8 @@ func download(url: URL, completion: @escaping (Data?) -> Void) ``` #### 返回类型 -- 尽可能将返回类型置于同一行 -- 换行处理非常长的签名 +- 尽可能将返回类型放在同一行 +- 当签名过长时将返回类型换行 ```swift // ✅ Good @@ -242,14 +242,14 @@ func complexFunction(withManyParameters param1: String, } ``` -## Objective-C 格式规范 +## Objective-C 格式化 ### 命名规范 #### 方法 -- 使用描述性方法名并明确标注参数 +- 使用带有清晰参数标签的描述性方法名 - 以小写字母开头 -- 使用驼峰式命名法 +- 使用 camelCase ```objc // ✅ Good @@ -262,9 +262,9 @@ func complexFunction(withManyParameters param1: String, ``` #### 变量与属性 -- 使用驼峰命名法 -- 使用描述性名称 -- 实例变量前添加下划线 +- 使用 camelCase +- Use descriptive names +- 实例变量以下划线为前缀 ```objc // ✅ Good @@ -280,8 +280,8 @@ func complexFunction(withManyParameters param1: String, ``` #### 类与协议 -- 使用驼峰命名法 -- 考虑为公共类添加前缀(例如 SS 表示 SideStore) +- Use PascalCase +- 可考虑为公开类使用前缀(例如用 SS 表示 SideStore) ```objc // ✅ Good @@ -293,11 +293,11 @@ func complexFunction(withManyParameters param1: String, @protocol appManaging ``` -### 间距与格式 +### 间距与格式化 #### 方法声明 -- 参数垂直对齐 -- 使用统一间距 +- 参数应垂直对齐 +- 使用一致的间距 ```objc // ✅ Good @@ -309,9 +309,9 @@ func complexFunction(withManyParameters param1: String, - (instancetype)initWithIdentifier:(NSString *)identifier title:(NSString *)title version:(NSString *)version; ``` -#### 大括号 -- 开括号与内容同行 -- 闭括号单独成行 +#### 花括号 +- 左花括号放在同一行 +- 右花括号单独成行 ```objc // ✅ Good @@ -334,9 +334,9 @@ else ## 注释与文档 -### Swift 文档规范 -- 使用 `///` 标记文档注释 -- 公开 API 需包含参数与返回值说明 +### Swift 文档 +- 使用 `///` 编写文档注释 +- 为公开 API 包含参数和返回值的说明 ```swift /// Downloads and installs an app from the specified URL @@ -352,9 +352,9 @@ func installApp(withIdentifier identifier: String, } ``` -### Objective-C 文档规范 -- 使用 `/** */` 标记文档注释 -- 遵循 HeaderDoc 或 Doxygen 规范 +### Objective-C 文档 +- 使用 `/** */` 编写文档注释 +- 遵循 HeaderDoc 或 Doxygen 约定 ```objc /** @@ -368,9 +368,9 @@ func installApp(withIdentifier identifier: String, completion:(void (^)(NSError *error))completion; ``` -### 内联注释 -- 单行注释使用`//` -- 请保持评论简洁且切题 +### 行内注释 +- 使用 `//` 编写单行注释 +- 保持注释简洁且有针对性 - 解释**为什么**,而非**是什么** ```swift @@ -385,9 +385,9 @@ let maxRetryAttempts = 3 ## 错误处理 -### Swift错误处理 -- 使用带有`throws`和`Result`类型的Swift原生错误处理 -- 使用有意义的错误类型 +### Swift 错误处理 +- 使用 Swift 原生的 `throws` 和 `Result` 类型进行错误处理 +- 创建有意义的错误类型 ```swift enum InstallationError: Error { @@ -405,9 +405,9 @@ func installApp() throws -> App { } ``` -### Objective-C错误处理 -- 使用`NSError **`参数模式 -- 设置前请务必检查错误参数是否为非空值 +### Objective-C 错误处理 +- 使用 `NSError **` 参数模式 +- 在设置前,始终检查错误参数是否为非 nil ```objc - (BOOL)installAppWithError:(NSError **)error { @@ -427,7 +427,7 @@ func installApp() throws -> App { ### 内存管理 - 在 Swift 和 Objective-C 中正确使用 ARC -- 请注意引用周期问题;请正确使用`weak`和`unowned`引用 +- 注意循环引用;恰当使用 `weak` 和 `unowned` 引用 ```swift // ✅ Good @@ -442,9 +442,9 @@ class AppInstaller { } ``` -### 线程处理 -- 始终在主队列上更新用户界面 -- 使用合适的队列处理后台任务 +### 线程 +- 始终在主队列上更新 UI +- 为后台任务使用合适的队列 ```swift // ✅ Good @@ -456,9 +456,9 @@ DispatchQueue.global(qos: .userInitiated).async { } ``` -### 可选的处理 -- 使用安全的拆包技术 -- 优先使用guard语句实现提前返回 +### 可选值处理 +- 使用安全的解包技术 +- 优先使用 guard 语句进行提前返回 ```swift // ✅ Good @@ -469,10 +469,10 @@ guard let data = response.data, } ``` -## Tools and Automation +## 工具与自动化 ### SwiftLint -您可以考虑使用SwiftLint自动执行这些格式化规则: +可考虑使用 SwiftLint 自动强制执行其中的许多格式化规则: ```yaml # .swiftlint.yml @@ -489,4 +489,4 @@ opt_in_rules: - force_unwrapping ``` -切记: 这些准则应有助于提高代码的可读性和可维护性。如有疑问,应优先考虑清晰度以及与现有代码库的一致性。 \ No newline at end of file +请记住:这些规范旨在提升代码的可读性和可维护性。如有疑问,应优先保证清晰性,并与现有代码库保持一致。 \ No newline at end of file diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/faq.mdx b/i18n/zh/docusaurus-plugin-content-docs/current/faq.mdx index afbcca35..be33c4b4 100644 --- a/i18n/zh/docusaurus-plugin-content-docs/current/faq.mdx +++ b/i18n/zh/docusaurus-plugin-content-docs/current/faq.mdx @@ -1,137 +1,121 @@ --- title: 常见问题 -description: 一个包含了SideStore的常见问题的章节。 +description: A section on the most frequently asked questions for SideStore. sidebar_position: 3 --- -# 常见问题(FAQ) +# 常见问题 -这里是SideStore的常见问题列表。也是我们在开发SideStore时遇到的常见问题的列表,包含了为不同类型的用户,或遇到问题的用户回答的一些问题。 +这是 SideStore 的常见问题列表。这里列出了我们在开发 SideStore 过程中常遇到的问题,以及一些可能对不同类型的用户或有问题的用户有帮助的问题。 -## 什么是SideStore? +## 什么是 SideStore? -SideStore是一款允许在仅使用您的Apple ID的情况下在您的iOS设备上侧载应用的iOS应用。SideStore使用您的个人开发证书对应用进行重新签名,并使用[专门设计的VPN](https://github.com/jkcoxson/em_proxy)来诱骗iOS安装它们。SideStore将定期在后台“刷新”您的应用程序,以防止其正常的7天开发期到期。 +SideStore 是一款 iOS 应用,它仅使用你的 Apple ID 即可将应用侧载到你的 iOS 设备上。SideStore 会用你的个人开发证书对应用重新签名,然后使用一个[specially designed VPN](https://apps.apple.com/us/app/localdevvpn/id6755608044)来欺骗 iOS 使其安装这些应用。SideStore 会定期在后台“刷新”你的应用,以防它们的正常 7 天开发期限过期。 -SideStore的目标是提供不受限制的侧载体验。它是[AltStore](https://github.com/rileytestut/AltStore)的一个由社区驱动的分支,并且已经实现了社区最受欢迎的一些功能。在安装过程中您只需要一台电脑。 +SideStore 的目标是提供无束缚的侧载体验。它是 [AltStore](https://github.com/rileytestut/AltStore) 的社区驱动分支,并且已经实现了社区最常要求的一些功能。你只需要在安装过程中使用一次电脑。 -(我们非常欢迎大家的贡献! 🙂) +(欢迎贡献!🙂) -### SideStore有什么限制》 +### SideStore 有哪些限制? -如果使用免费的Apple账户的话,SideStore只能同时安装3个应用(包括SideStore本身)。同时一周只能安装10个不同的应用(使用App ID作为参考)。 +如果使用免费 Apple 账户,SideStore 一次只能安装 3 个应用(包括它自身)。此外,每周只能安装 10 个不同的应用。(称为 App ID。) -### 我可以启用JIT吗? +### 我可以激活 JIT 吗? -对于使用iOS/iPadOS 16及更低版本的用户,您以在SideStore内“我的应用(My Apps)”界面按住您想要选择开启JIT的应用,在弹出的界面中选择“启用JIT(Enable JIT)”来激活JIT。 +对于使用 iOS/iPadOS 16 或更低版本的用户,你可以在 SideStore 的 'My Apps'(我的应用)页面上按住你的应用并选择 'Enable JIT'(启用 JIT)来直接激活 JIT。 -对于使用iOS/iPadOS 17.4及更高版本的用户则需要使用StikJIT/StikDebug或者SideStore的每夜构建版本作为解决方案。请参考[进阶](advanced/jit)章节中提供的教程。 +使用 iOS 或 iPadOS 17.4 或更高版本的用户可以使用诸如 SideStore 0.6.2 或 StikDebug(原 StikJIT)之类的解决方案。请参阅[Advanced](advanced/jit)教程部分。 -### SideStore何时推出正式版? +### SideStore 什么时候发布? -SideStore目前并未有明确的正式版发布日期,但我们处于公测状态。 +SideStore 目前还没有发布日期,但已处于公开测试阶段。 -### 我现在就能侧载应用了吗? +### 你现在可以侧载应用吗? -当然可以,就像AltStore一样! +是的,可以,就像 AltStore 一样! -### 这款工具有AltStore (beta)的功能吗? +### SideStore 有 AltStore (beta) 的功能吗? -我们确实有AltStore (beta)的功能,但并不总能保持是最新的。我们会尽可能保持更新,或者在必要时以自己的方式实现对应的功能。 +我们确实实现了 AltStore (beta) 的功能,但它们不一定是最新的。我们尽量保持更新,或者在必要时以我们自己的方式实现。 -### 持续打开VPN会额外消耗我的电池吗? +### 开启 VPN 会消耗我的电池电量吗? -并不会,因为它只连接到您自己的设备。并不使用远程服务器,这意味着没有和外部的连接,也意味着没有额外的电池消耗。 +不会,因为它只连接到你自己的设备。不使用远程服务器,意味着没有外部连接,也就意味着不会额外消耗电池。 -### 这个VPN会跟踪我吗? +### VPN 会跟踪我吗? -并不会,因为没有使用远程的服务器。 +不会,因为没有使用远程服务器。 -### 更新SideStore的时候在快要结束的位置卡住了 +### 我可以签署超过 3 个应用使其变为活跃状态吗? -请返回桌面静候其完成。我们不清楚为什么会出现这样的问题,这可能与使用VPN引导“installd”刷新SideStore本身有关。 +通常情况下,不能,因为那是 iOS 和开发者账户的限制。Apple 只允许使用免费 Apple 开发者账户安装 3 个应用。 -### 我可以签名多于3个应用并同时使其保持启用状态吗? +要移除这个限制(并且还能获得 365 天的有效期),你可以每年支付 99 美元购买 Apple 开发者账户。 -一般来说并不允许,因为这是iOS和开发人员帐户的限制。Apple只允许免费的Apple Developer帐户同时安装3个应用程序。 +或者,你可以使用 LiveContainer,或者对于 iOS 18 db5/18.0.1 及更低版本,你可以利用 SparseRestore 漏洞来绕过 3 个应用的限制。(不会绕过 10 个 app-id 的限制。) -要取消此限制(并获得365天的软件可用时间),您可以支付99美元/年的费用获得一个付费的Apple Developer帐户。 +使用此方法的教程可以[here](advanced/alternative)找到。 -或者您可以使用LiveContainer,以及在iOS 18 db5/18.0.1及以下版本上,您可以利用SparseRestore漏洞绕过3个应用的限制。 +### 我遇到了问题、错误,或者想请求某项功能或生活质量改进 -使用教程可以在[这里](advanced/alternative)找到。 +请先查看[common issues](troubleshooting/common-issues)和现有的 GitHub issues,如果找不到你的问题,请在我们的 GitHub 页面上创建一个新的 GitHub issue 来提交错误报告或功能请求(请带上合适的标签)! -### 我有一个问题,或bug,或功能的需求,或能提升生活质量的需求想要提交 +### 我是一名开发者,这对我有什么影响? -请在我们的GitHub页面上发布GitHub issue,以进行错误报告或功能请求(请带有相对应的标签)! +你的应用不需要任何修改即可与 SideStore 一起工作! -### 我是一名开发者,这个工具会对我有什么影响? +### 我需要安装 AltStore 才能安装 SideStore 吗? -您的应用无需任何调整就可以和SideStore搭配使用! +不需要,你可以通过我们[guide](installation/prerequisites)直接侧载 SideStore! -### 我需要安装AltStore以使用Sidestore吗? +### 作为用户,我登录 SideStore 时遇到了问题。我收到了一个错误。 -并不需要,您可以直接参考我们提供的教程直接侧载! +可能导致这种情况的原因有很多,但最常见的问题是 Anisette 服务器临时宕机。你目前可以在设备上 SideStore 的“Anisette URL”下的 Settings(设置)应用中更改 Anisette 服务器。 -### 作为用户,我在登录SideStore的时候遇到了问题。我收到了一个错误提示。 +### SideStore 会有一家商店吗? -发生这种情况的原因有很多,但最常见的原因是Anisette服务器暂时性的停机。您目前可以在SideStore设置内的“Anisette URL”下更改软件使用的Anisette服务器。 +我们目前有社区源!源 URL:https://community-apps.sidestore.io/sidecommunity.json -### SideStore会有自己的商店前端页面吗? +我们还有一个名为 [SideStore Connect](https://connect.sidestore.io) 的服务,它允许开发者发布自己的应用。 -我们当然有社区资源! 资源链接: https://community-apps.sidestore.io/sidecommunity.json +### 为什么我的应用有一个名为“pacer test”的更新? -同时我们还有叫做[SideStore Connect](https://connect.sidestore.io)的服务,它允许开发者公开发布他们自己的应用。 +这是一个测试更新,用于检查主要版本之间是否存在问题,正常使用中不应该看到它。如果你在发布后看到这个问题,那么请重新安装 SideStore 或将其作为 bug 报告。 -### 为什么我的应用出现了名为"pacer test"的更新? +### 为什么我基于 JIT 的应用不能自动激活 JIT? -这是一个用于查看主要版本之间是否存在问题的测试更新,在正常使用过程中不应该看到这项内容。如果您在发布后看到此问题,请重新安装SideStore或将其报告为bug。 +我们目前没有自动激活 JIT 的方法,而且如果我们要做,你会需要开启 LocalDevVPN。另外,你也可以使用 StikDebug。 -### 为什么我的基于JIT的应用没有自动激活JIT? +### SideStore 有 iPadOS 界面吗? -我们目前没有自动激活JIT的方法,如果有,您则需要打开SideStore VPN。 +我们当然有! -### SideStore有iPadOS的UI吗? +### 我看到我的账户里添加了一台 iMac 或 MacBook Pro。这安全吗,它是真实的 Mac 吗? -当然有! +这些 Mac 不是真实的,它们是由 Anisette 服务器自动生成以协助登录的。也没有任何私人数据发送到 Anisette 服务器,因为服务器提供的数据只在 SideStore 内使用。 -### 我看到有一台iMac或者MacBook Pro被添加进我的账号上了。它安全吗,并且它是一台真正的Mac吗? +### 为什么我使用 SideStore 时账户会被锁定? -这些Mac设备不是真实的,它们是被Anisette服务器自动生成以辅助登录用的。也没有任何私密数据被发送到Anisette服务器,这些服务器提供的数据仅被用于SideStore本身。 +已知许多用户使用的旧版 Anisette 服务器会导致 Apple ID 被锁定。请使用官方 Anisette 服务器之一,或自行托管 [anisette-v3-server](advanced/anisette)。 -### 当我使用SideStore的时候为什么我的账户被锁定了? +### 我可以转移我的 AltStore/Sideloadly 应用吗? -旧版的,有太多用户使用的Anisette服务器会导致Apple ID被锁定的问题。请使用官方提供的Anisette服务器之一,或者自部署您自己的[anisette v3服务器](advanced/anisette)。 +可以,只要不删除设备上的原始应用即可。进入 SideStore 并侧载相同或更新版本的 IPA,它应该会添加到你在 SideStore 内的应用列表中,并且你的数据仍然完好无损。 -### 我能转移我在AltStore/Sideloady侧载的应用吗? +### 为什么我登录后第一件事就是刷新 SideStore? -可以的,但不要删除原来在您设备上的应用。请进入SideStore并侧载相同或更新的IPA文件,然后它就应该被添加到了SideStore中的应用程序列表中,并且您的数据仍然完好无损。 +这是因为 iloader 和其他程序经常使用它们自己的应用 groupID 来侧载 SideStore,而我们使用我们自己的。刷新 SideStore 可以确保它被更改为我们的,这会使具有过时 groupID 的应用消失。干净安装后,最好在刷新 SideStore 之前不要侧载任何东西。 -### 为什么刷新SideStore本体是我在登陆后需要做的第一件事? +### SideStore 支持 OTA 更新吗? -这是因为AltServer或者其他的应用使用他们自己的groupID来侧载SideStore,但是我们使用我们自己的。刷新SideStore会把软件的groupID换成我们自己的,这会让软件消失。因为他们的groupID没有被更新。在清洁安装的时候,刷新SideStore之前最好不要侧载任何东西。 +支持!当更新按钮出现时,只需点击它即可! -### SideStore支持OTA升级吗? +### 我想测试一个 SideStore 版本,并且在切换到测试版本时想让我的数据保留。我应该删除我的应用还是通过 SideStore 侧载测试版本? -当然! 出现“更新(Update)”按钮的时候点击就可以啦! +你可以通过 SideStore 或 iloader 侧载一个夜间版 SideStore,你的数据应该会保留,或者启用测试版更新并在 Settings(设置)中选择“nightly”。我们无法保证在测试非官方或夜间版本时你的数据能成功转移。 -### 我想要测试一个SideStore的版本,并且我想在切换到测试版本的时候保留数据。我需要删除我的应用还是我可以通过SideStore侧载测试版本? +### 目前已知问题 -您可以通过SideStore或者AltStore侧载每夜构建(nightly)版本,您的数据应该是一致的。或者在设置启用测试版更新,并选择每夜构建版本。我们也不能保证在您测试非官方/每夜构建版本时的数据转移。 +如果你目前遇到问题,并且想知道我们是否已经知晓它们,请查看我们的 GitHub issue 页面和故障排除页面,那里列出了已知问题以及缓解你可能遇到的一些问题的方法。此列表中的某些问题可能不在其中已知,但存在于 GitHub issues 部分。[GitHub](https://github.com/SideStore/SideStore/issues/490),[troubleshooting](/docs/troubleshooting/)。 -### 我的软件消失了,但是我不知道怎么做 - -不要恐慌!重新侧载,而不是移除您的应用,您的数据应该是没有问题的。但不幸的是,您选择停用的应用程序可能已经消失了,要确认这一点的话,只需刷新SideStore,并看看它们是否会回来。 - -### 不能启动DebugServer - -确实存在Debugserver不工作的情况。遇到这种问题您可以尝试如下操作: - -**创建一个新的配对文件** - -使用iloader重新导入配对文件 - -### 关于目前已知的问题 - -如果您在使用中出现了问题,并且想确认我们是否已经知悉。请确认我们的GitHub issue页面,其中列出了已知的问题以及缓解您可能遇到的一些问题的方法。一些我们已知的问题可能不在此列表中,但您可以确认这条[GitHub issues](https://github.com/SideStore/SideStore/issues/490)。 - -如果您出现了一些在这个列表以外的问题。请提出一条GitHub issue或者[加入我们的Discord服务器](https://dis.sidestore.io)。 +如果你有任何不在此列表中的问题。只需创建一个 GitHub issue 或[join our discord.](https://dis.sidestore.io/) \ No newline at end of file diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/installation/install.mdx b/i18n/zh/docusaurus-plugin-content-docs/current/installation/install.mdx index 10ba1880..6bce2d3f 100644 --- a/i18n/zh/docusaurus-plugin-content-docs/current/installation/install.mdx +++ b/i18n/zh/docusaurus-plugin-content-docs/current/installation/install.mdx @@ -1,34 +1,73 @@ --- -title: 安装指引 -description: 将SideStore安装至您的苹果设备上 +title: 安装 +description: Installing SideStore to your iPhone, iPad, or iPod touch sidebar_position: 2 --- -## 安装SideStore -1. 使用数据线将您的苹果设备连接到电脑上。如果弹出了是否信任电脑的提示框的话,信任电脑并输入您的锁屏密码 -2. 打开iloader -3. 登录您的Apple账户 -4. 选择您的苹果设备 -3. 选择"Install SideStore". -### 需要在您的苹果设备上进行的操作 -请参考以下步骤 -1. 打开“设置” -2. 点击“通用”,“VPN与设备管理” -3. 在“开发者APP”下找到您Apple账户的邮箱,点击该邮箱,并在接下来的页面点击“验证 App” -4. 在设置的主界面找到“隐私与安全性” -5. 划到页面的底部,打开“开发者模式”,此时您的设备应该会重启 -6. 打开StosVPN,点击“Connect” -7. 打开SideStore -9. 使用您前面使用的Apple账户登录 -10. 点击"My Apps". -11. 点击SideStore右侧的"x DAYS"按钮,(x是应用过期的剩余天数) -12. 此时应该弹出一个提示框询问您创建一个新的签名证书,点击"Refresh Now" +```mdx-code-block +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +``` -在进行完这一步后,SideStore会退出,返回至您的桌面。同时您会收到一条通知,在几秒后SideStore就可以使用了。 +在开始之前,请确保下载[prerequisites page](prerequisites)中列出的所有软件并完成所有设置! -需要注意的是,如果您的设备升级/重置了,您的配对用文件会过期,您需要使用[这条指南](/docs/advanced/pairing-file)重新导入。当然配对用文件也可能因为Apple的应用政策过期。 +:::warning +与 iloader 相关的支持问题,可在 [idevice Discord server](https://discord.gg/mACqxMxP3X)找到,SideStore 服务器不处理由 iloader 引发的问题。 +::: -如果您使用iloader重新安装了SideStore,您原来的证书可能会被吊销,这时需要您再次手动刷新应用。 +## 安装 SideStore +### 在你的电脑上 +1. 使用 USB 线将你的 iPhone、iPad 或 iPod touch 连接到电脑。如果系统提示,请信任电脑并输入你的密码。 +2. 打开 iloader。 +3. 使用你的 Apple 账户登录。(不必是与设备关联的那个账户。切记它是区分大小写的!) +4. 选择你的 iPhone、iPad 或 iPod touch。 +5. 选择 'Install SideStore (Stable)'(安装 SideStore(稳定版))。 -如果您想使用同一个Apple ID在另一台设备上安装SideStore,请[参考这几个步骤](https://github.com/SideStore/SideStore/pull/1008#issue-3138680291)。 +### 在你的 iPhone、iPad 或 iPod touch 上 + + + 1. 打开 Settings(设置)应用。 + 2. 转到 'General'(通用),然后进入 'VPN & Device Management'(VPN 与设备管理)。 + 3. 在“Developer App”(开发者应用)部分下,选择以你的 Apple 账户命名的选项。 + 4. 选择“Trust [Apple Account name]”(信任 [Apple 账户名称]),然后选择 "Trust"(信任)以确认。 + 5. 打开 LocalDevVPN 并选择 'Connect'(连接)。 + 6. 打开 SideStore。 + 7. 登录你与 iloader 一起使用的 Apple 账户。 + 8. 转到 'My Apps'(我的应用)。 + 9. 点击 SideStore 右侧的 '7 DAYS'(7 天)计数器以手动刷新并完成 SideStore 的设置。(7 表示距离应用过期还有多少天。它会动态更新以显示剩余天数。点击它可以刷新关联的应用。) + 10. 如果你收到要求撤销或创建新签名证书的提示,请点击 'Yes'(是)或 'Refresh Now'(立即刷新)。 + + + 1. 打开 Settings(设置)应用。 + 2. 转到 'General'(通用),然后进入 'VPN & Device Management'(VPN 与设备管理)。 + 3. 在“Developer App”(开发者应用)部分下,选择以你的 Apple 账户命名的选项。 + 4. 选择“Trust [Apple Account name]”(信任 [Apple 账户名称]),然后选择 "Trust"(信任)以确认。 + 5. 转到 'Privacy and Security'(隐私与安全)。 + 6. 滚动到底部,然后打开 \"Developer Mode\"(开发者模式)。你的设备将重启。 + 7. 打开 LocalDevVPN 并选择 'Connect'(连接)。 + 8. 打开 SideStore。 + 9. 登录你与 iloader 一起使用的 Apple 账户。 + 10. 转到 'My Apps'(我的应用)。 + 11. 点击 SideStore 右侧的 '7 DAYS'(7 天)计数器以手动刷新并完成 SideStore 的设置。(7 表示距离应用过期还有多少天。它会动态更新以显示剩余天数。点击它可以刷新关联的应用。) + 12. 如果你收到要求撤销或创建新签名证书的提示,请点击 'Yes'(是)或 'Refresh Now'(立即刷新)。 + + + 1. 打开 Settings(设置)应用。 + 2. 转到 'General'(通用),然后进入 'VPN & Device Management'(VPN 与设备管理)。 + 3. 在“Developer App”(开发者应用)部分下,选择以你的 Apple 账户命名的选项。 + 4. 选择“Trust [Apple Account name]”(信任 [Apple 账户名称]),然后选择 "Allow & Restart"(允许并重启)。 + 5. 输入你的密码以确认你要信任该应用。 + 6. 转到 'Privacy and Security'(隐私与安全)。 + 7. 滚动到底部,然后打开 \"Developer Mode\"(开发者模式)。你的设备将重启。 + 8. 打开 LocalDevVPN 并选择 'Connect'(连接)。 + 9. 打开 SideStore。 + 10. 登录你与 iloader 一起使用的 Apple 账户。 + 11. 转到 'My Apps'(我的应用)。 + 12. 点击 SideStore 右侧的 '7 DAYS'(7 天)计数器以手动刷新并完成 SideStore 的设置。(7 表示距离应用过期还有多少天。它会动态更新以显示剩余天数。点击它可以刷新关联的应用。) + 13. 如果你收到要求撤销或创建新签名证书的提示,请点击 'Yes'(是)或 'Refresh Now'(立即刷新)。 + + +如果此过程成功,SideStore 会将你的设备打开到主屏幕(并伴随一条通知)。SideStore 将在几秒钟内再次可用。 + +如果你更新或重置你的 iPhone、iPad 或 iPod touch,你的配对文件可能会过期。如果发生这种情况,你需要使用[this guide](/docs/advanced/pairing-file)来替换它。由于 Apple 软件的原因,这种情况也会在随机时间发生。 \ No newline at end of file diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/installation/prerequisites.mdx b/i18n/zh/docusaurus-plugin-content-docs/current/installation/prerequisites.mdx index 5cde0b87..9ba07328 100644 --- a/i18n/zh/docusaurus-plugin-content-docs/current/installation/prerequisites.mdx +++ b/i18n/zh/docusaurus-plugin-content-docs/current/installation/prerequisites.mdx @@ -1,48 +1,95 @@ --- -title: 安装前准备 -description: '安装SideStore的第一步' +title: 要求 +description: 'The first steps of installation.' sidebar_position: 1 --- -SideStore的安装过程可能看起来很棘手,但随着花一些时间***一次性***的使用电脑后,您的设备上就拥有了SideStore! +```mdx-code-block +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +``` ## 要求 - -想要安装SideStore,您需要: - -- 一台运行了iOS/iPadOS 14及更高版本,并且[带有密码](https://support.apple.com/en-us/119586)的iOS/iPadOS设备 -- 一台电脑(只会用一次) -- 一个Apple ID。 -- Wi-Fi连接 -- 一些时间(流程很快,但是您需要留出一些[处理问题](/docs/troubleshooting)的时间)。 - -## 需要在您的设备上做的准备 - -### 在您的iPhone/iPad上 - -SideStore利用设备上内置的VPN客户端功能以允许SideStore与内部服务通信。 - -1. 从[App Store](https://apps.apple.com/us/app/stosvpn/id6744003051)下载StosVPN -2. 启用VPN - -该VPN需要在您期望安装/升级/刷新SideStore内安装的任意应用时保持开启。 - -### 在您的Mac上 -1. 下载并安装([M系列芯片](https://github.com/nab138/iloader/releases/latest/download/iloader-darwin-aarch64.dmg)或[Intel芯片](https://github.com/nab138/iloader/releases/latest/download/iloader-darwin-x64.dmg))的Mac版iloader -2. 打开终端,运行`sudo xattr -c ./Applications/iloader.app`,如果弹出提示框请输入您的密码 - - -## 在您的Windows电脑上 -1. 下载并安装[iTunes](https://apple.co/ms) -2. 下载iloader安装器的([exe文件](https://github.com/nab138/iloader/releases/latest/download/iloader-windows-x64.exe)/[msi文件](https://github.com/nab138/iloader/releases/latest/download/iloader-windows-x64.msi)) -3. 运行安装器 - -## 在您的Linux机器上 -1. 下载并安装`usbmuxd`(它可能已预装在您使用的发行版中,否则请使用您的软件包管理器进行安装) -2. 下载并安装适用于您使用的发行版的iloader(([Debian/Ubuntu](https://github.com/nab138/iloader/releases/latest/download/iloader-linux-amd64.deb), [Fedora/openSUSE](https://github.com/nab138/iloader/releases/download/v0.1.3/iloader-linux-x86_64.rpm), [other](https://github.com/nab138/iloader/releases/latest/download/iloader-linux-amd64.AppImage))) - - -## 下一步 - -接下来,按照安装指引来安装SideStore! -- [安装指引](install) +要安装 SideStore,你需要: +- 一台[with a passcode](https://support.apple.com/en-us/119586)并运行 iOS/iPadOS 15.0 或更高版本的 iPhone、iPad 或 iPod touch +- 一台运行 Windows 8 或更高版本、macOS High Sierra 或更高版本、最新 Linux 发行版或较新的非注册 Chromebook 的电脑;仅用于初始安装 +- 一个 Apple 账户(也称为 Apple ID) +- 一个 Wi-Fi 连接(不仅仅是任意互联网连接:移动网络不适合) +- 花点时间!这是一个快速简单的过程,但你应该留出时间进行[troubleshooting](/docs/troubleshooting) + +## 准备你的设备 +SideStore 利用设备内置的 VPN,使 SideStore 能够与内部服务通信。 + +1. 从 [Apple App Store](https://apps.apple.com/app/localdevvpn/id6755608044) 或 [AltStore PAL source](https://api.altstore.io/source/adp.se2crid.me?app=com.jkcoxson.LocalDevVPN) 安装 LocalDevVPN 应用。 +2. 连接到 VPN。如果系统提示你"Allow VPN Configurations"(允许 VPN 配置),请点击 'Allow'(允许)并输入你的密码。 + +每当你想在 SideStore 中安装、更新或刷新应用时,都必须打开此 VPN。 + +现在,按照说明安装与你电脑操作系统对应的 [iloader](https://iloader.app): + + + + 下载并安装 [iloader](https://github.com/nab138/iloader/releases/latest/download/iloader-darwin-universal.dmg)。 + + + :::warning + 32 位版本的 Windows,以及 Arm 上的 Windows 10,均不受支持。 + +
+ **大多数版本的 Windows 都是 64 位的。**但是,如果你想确定自己使用的 Windows 版本是否不受支持,可以按照以下说明进行操作。 + 1. 使用 Windows+R(或 Command+R 或 Super+R)打开"运行"对话框。 + 2. 输入 `control /name microsoft.system`。将打开控制面板。 + 3. 在“System”(系统)选项卡下,找到"System type"(系统类型)。 + + * 如果你的系统是"32-bit Operating System"(32 位操作系统),则你的 Windows 版本不受支持。 + * 如果你的系统是"ARM64 processor"(ARM64 处理器)并且使用的是 Windows 10,则你的 Windows 版本不受支持。 +
+ ::: + + 1. 从[from the Microsoft Store](https://apps.microsoft.com/store/detail/9PB2MZ1ZMB1S)或[directly from Apple](https://www.apple.com/itunes/download/win64)下载并安装 iTunes。 + 2. 下载 iloader 安装程序,可[as an MSI](https://github.com/nab138/iloader/releases/latest/download/iloader-windows-x64.msi)(推荐)或[as an EXE](https://github.com/nab138/iloader/releases/latest/download/iloader-windows-x64.exe)。 + 3. 运行安装程序。 + :::note + 建议使用直接来自 Apple 的 iTunes 版本。如果两个版本都不行,请尝试[Apple Devices App](https://apps.microsoft.com/detail/9np83lwlpz9k?hl=en-US&gl=US)。 + ::: +
+ + :::warning + **大多数 Linux 发行版都是 64 位的。**要确定你的发行版类型,请打开终端并运行 `uname -m`。对于 Intel/AMD,预期输出为 `x86_64`,对于 ARM 则为 `aarch64`。 + ::: + + 1. 下载并安装 `usbmuxd`。它可能已随你的发行版预装,否则你可以用包管理器安装它:在谷歌上搜索“install usbmuxd [发行版名称]”可能会帮到你。 + 2. 为你的发行版下载并安装 iloader。它为 Debian/Ubuntu 提供了 [DEB](https://github.com/nab138/iloader/releases/latest/download/iloader-linux-amd64.deb),为 Fedora/openSUSE 提供了 [RPM](https://github.com/nab138/iloader/releases/latest/download/iloader-linux-x86_64.rpm),为其他发行版提供了 [AppImage](https://github.com/nab138/iloader/releases/latest/download/iloader-linux-amd64.AppImage)。此外,针对 ARM 处理器,还有 [DEB](https://github.com/nab138/iloader/releases/latest/download/iloader-linux-arm64.deb)、[RPM](https://github.com/nab138/iloader/releases/latest/download/iloader-linux-aarch64.rpm) 和 [AppImage](https://github.com/nab138/iloader/releases/latest/download/iloader-linux-aarch64.AppImage) 构建版本。(也有社区维护的软件包,例如 [this one on the Arch Linux AUR](https://aur.archlinux.org/packages/iloader-bin),但请知悉我们无法保证它们的安全性和可靠性。在将未知软件包安装到你的系统之前,你应该总是做好充分的调查。) + + + :::warning + **如果管理员禁用了它,这将不适用于已注册的 Chromebook,并且可能不适用于旧款 Chromebook。**通常,已注册的 Chromebook 会禁用 `Linux development environment`,或者对于旧款 Chromebook,它们不提供此类选项。 + ::: + + 1. 启用 `Linux development environment`。你可以阅读 Google 的 [Set up Linux on your Chromebook](https://support.google.com/chromebook/answer/9145439) 指南,按照 `Turn on Linux` 步骤来了解如何进行设置。 + 2. 通过打开终端并运行以下命令来确保所有软件包都已更新:`sudo apt-get update && sudo apt-get dist-upgrade` + 3. 下载并安装 `usbmuxd`、`curl` 和 `fuse`。你可以在终端中运行以下命令用包管理器安装它们:`sudo apt-get install usbmuxd fuse curl` + 4. 下载并安装 iloader。它提供 AppImage 版本。要了解应下载哪个版本,请使用 `uname -m` 确定你 Chromebook 的架构。如果命令输出 `x86_64`,则运行 `curl -fsSLO https://github.com/nab138/iloader/releases/latest/download/iloader-linux-amd64.AppImage`。如果输出 `aarch64`,则运行 `curl -fsSLO https://github.com/nab138/iloader/releases/latest/download/iloader-linux-aarch64.AppImage`。 + 5. 如果 `usbmuxd` 尚未启动,请在终端中运行以下命令:`sudo systemctl restart usbmuxd`。 + 6. 转到 `Manage USB devices`(在 **Settings** -> **About ChromeOS** -> **Developers** -> **Linux development environment** 中),然后使用 USB 线将你的 iPhone、iPad 或 iPod touch(iDevice)连接到 Chromebook。一旦你看到该设备,**请从列表中快速启用它**。如果你的 iDevice 上有提示,请信任电脑并输入密码。 + :::note + **在 Manage USB devices 中快速启用 iDevice 是必要的**,因为 `Linux development environment` 有一个 bug。ChromeOS 会自动声明该 iDevice(这就是它出现在"文件"应用中的原因),从而阻止 Linux 容器看到它。在 ChromeOS 声明该 iDevice 之前,在 **Manage USB devices** 中手动快速启用它,将会把控制权传递给容器。你可以按照 **Step 8** 来验证容器能看到该 iDevice。 + ::: + 7. 通过在终端中运行 `lsusb` 来验证 `Linux development environment` 能识别你的 iDevice。你的 iDevice 应该出现在列表中。如果没有,请尝试拔下并重复上一步。 + :::tip + `lsusb` 的输出应该类似于这样,iPhone(或类似设备)是现有条目之一: + ``` + Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub + Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub + Bus 001 Device 008: ID 05ac:12a8 Apple, Inc. iPhone 5/5C/5S/6/SE/7/8/X/XR + ``` + 确切的设备名称和总线/设备编号可能有所不同,但无关紧要。 + ::: + 8. 在终端中运行以下命令以使 iloader 可执行并启动 iloader(确保文件名与你下载的文件一致,如果文件名包含 `amd64`,请将 `aarch64` 替换为 `amd64`): + ``` + chmod +x ./iloader-linux-aarch64.AppImage + ./iloader-linux-aarch64.AppImage + ``` + 9. 如果 iloader 没有显示你的 iDevice,你可以尝试在终端中**在另一个标签页**中运行以下命令来手动运行 `usbmuxd`:`sudo systemctl stop usbmuxd` 和 `sudo usbmuxd -v -f`。你的 iDevice 上可能会弹出提示。 + +
\ No newline at end of file diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/intro.mdx b/i18n/zh/docusaurus-plugin-content-docs/current/intro.mdx index 58c085db..aaec515f 100644 --- a/i18n/zh/docusaurus-plugin-content-docs/current/intro.mdx +++ b/i18n/zh/docusaurus-plugin-content-docs/current/intro.mdx @@ -2,14 +2,7 @@ sidebar_position: 1 --- -# SideStore 介绍 - -:::danger - -本文档目前尚未完全翻译成您的语言。如果您考虑参与翻译我们的文档,请帮助我们! - -::: - +# SideStore 简介 欢迎使用 SideStore! diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/release-notes.mdx b/i18n/zh/docusaurus-plugin-content-docs/current/release-notes.mdx index 19f8c744..8e15e695 100644 --- a/i18n/zh/docusaurus-plugin-content-docs/current/release-notes.mdx +++ b/i18n/zh/docusaurus-plugin-content-docs/current/release-notes.mdx @@ -1,73 +1,72 @@ --- -title: 发行文档 -description: SideStore发行文档的存档。 +title: Release Notes +description: A collection of SideStore release notes. sidebar_position: 6 --- -# Stable Notes +# 稳定版本说明 ## 0.6.2 -### Changelog -- Deprecation of WireGuard, complete transition to [StosVPN](https://apps.apple.com/us/app/stosvpn/id6744003051) -- jitterbugpair is being superseded by [idevice pair](https://github.com/jkcoxson/idevice_pair) -- Merge more of AltStore 2.0 upstream -- Added support for importing/exporting your Apple ID's certificate for use with multiple devices, instructions to utilize this [here](https://github.com/SideStore/SideStore/pull/1008#issue-3138680291) -- Adds url scheme/allow exporting certificate (to LiveContainer) -- Fix issue where installing apps would get stuck around 75% -- Add option to resuse the main App ID profile for extensions instead of removing/registering them (only one app id/app) -- General type fixes and visual updates +### 更新日志 +- 弃用 WireGuard,完全过渡到 [StosVPN](https://apps.apple.com/us/app/stosvpn/id6744003051) +- 合并更多 AltStore 2.0 上游内容 +- 增加了导入/导出你的 Apple ID 证书以用于多台设备的支持,使用方法说明[here](https://github.com/SideStore/SideStore/pull/1008#issue-3138680291) +- 添加了 url scheme/允许导出证书(到 LiveContainer) +- 修复安装应用在 75% 左右卡住的问题 +- 添加为扩展重用主 App ID 配置文件的选项,而不是移除/注册它们(仅限一个 app id/应用) +- 常规类型修复和视觉更新 -### What's Changed: -- Rebase 2.0 wip by @nythepegasus in [#794](https://github.com/SideStore/SideStore/pull/794) -- [Refresh]: Remove install stuffs from refresh since in refresh should only renew provisioning profiles by @mahee96 in [#846](https://github.com/SideStore/SideStore/pull/846) -- [Settings]: Fix: DisableAppLimit switch reverting back to off state even if on iOS where sparseRestore is not patched yet by @mahee96 in [#850](https://github.com/SideStore/SideStore/pull/850) -- Update trustedapps.json by @neoarz in [#853](https://github.com/SideStore/SideStore/pull/853) -- [Backup]: Fix: update logic during install missed since override keyword was missing by @mahee96 in [#857](https://github.com/SideStore/SideStore/pull/857) -- Fix Repository App Previews by @neoarz in [#871](https://github.com/SideStore/SideStore/pull/871) -- Feature: Bulk sources-add in sources screen with capability to stage them before persisting into database by @mahee96 in [#888](https://github.com/SideStore/SideStore/pull/888) -- Version 0.6.0: CoreData Migrations fix including xcdatamodels and xcmappingmodels by @mahee96 in #894 -- Feature: Render in-app update description as (full) markdown by @mahee96 in #897 -- fix: typo in hasUpdate comparison by @l2dy in [#900](https://github.com/SideStore/SideStore/pull/900) -- Update SettingsViewController.swift by @neoarz in [#915](https://github.com/SideStore/SideStore/pull/915) -- WIP: Fixes for migration issues when migrating from 0.5.9 to 0.6.0 by @mahee96 in #920 -- Fix typo "levaraging" -> "leveraging" by @lafrenierejm in [#926](https://github.com/SideStore/SideStore/pull/926) -- Added StosVPN to the EM Proxy part. by @Br0des in [#940](https://github.com/SideStore/SideStore/pull/940) -- StosVPN-integration: Removed em_proxy and EmotionalDamage module in favour of stosVPN by @mahee96 in [#945](https://github.com/SideStore/SideStore/pull/945) -- Disable minimuxer ready check which shows NO WIFI/VPN error since stosVPN can work on cellular too by @mahee96 in [#935](https://github.com/SideStore/SideStore/pull/935) -- Add iOS 17.4+ JIT and mounting by @jkcoxson in [#953](https://github.com/SideStore/SideStore/pull/953) -- Add export certificate feature by @hugeBlack in [#959](https://github.com/SideStore/SideStore/pull/959) -- Feat: Add Pairing File Export URL callback and replace Wireguard with StosVPN by @stossy11 in [#962](https://github.com/SideStore/SideStore/pull/962) -- Change front-facing references to AltStore by @owoellen in [#987](https://github.com/SideStore/SideStore/pull/987) -- Update OperationError.swift for idevice_pair by @CelloSerenity in [#995](https://github.com/SideStore/SideStore/pull/995) -- Add import/export certificate feature by @hugeBlack in [#1008](https://github.com/SideStore/SideStore/pull/1008) -- Fix pairing file doc link by @CelloSerenity in [#1011](https://github.com/SideStore/SideStore/pull/1011) -- Add option for using main bundle's profile for app extensions, update AltSign & libmd by @hugeBlack in [#1012](https://github.com/SideStore/SideStore/pull/1012) -- Use main profile when refreshing by @hugeBlack in [#1013](https://github.com/SideStore/SideStore/pull/1013) +### 更改内容: +- 重新基于 2.0 wip。作者 @nythepegasus,于 [#794](https://github.com/SideStore/SideStore/pull/794) 中 +- [Refresh]: 移除刷新中的安装内容,因为刷新时应仅续订 provisioning profiles。作者 @mahee96,于 [#846](https://github.com/SideStore/SideStore/pull/846) 中 +- [Settings]: 修复:DisableAppLimit 开关即使在 sparseRestore 尚未修补的 iOS 上也会重置为关闭状态。作者 @mahee96,于 [#850](https://github.com/SideStore/SideStore/pull/850) 中 +- 更新 trustedapps.json。作者 @neoarz,于 [#853](https://github.com/SideStore/SideStore/pull/853) 中 +- [Backup]: 修复:由于缺少 override 关键字,安装期间的更新逻辑被遗漏。作者 @mahee96,于 [#857](https://github.com/SideStore/SideStore/pull/857) 中 +- 修复 Repository App Previews。作者 @neoarz,于 [#871](https://github.com/SideStore/SideStore/pull/871) 中 +- 功能:在源屏幕中批量添加源,并且能够在持久化到数据库之前对它们进行暂存。作者 @mahee96,于 [#888](https://github.com/SideStore/SideStore/pull/888) 中 +- 版本 0.6.0:CoreData 迁移修复,包括 xcdatamodels 和 xcmappingmodels。作者 @mahee96,于 #894 中 +- 功能:将应用内更新描述渲染为(完整)markdown。作者 @mahee96,于 #897 中 +- 修复:hasUpdate 比较中的拼写错误。作者 @l2dy,于 [#900](https://github.com/SideStore/SideStore/pull/900) 中 +- 更新 SettingsViewController.swift。作者 @neoarz,于 [#915](https://github.com/SideStore/SideStore/pull/915) 中 +- 进行中:修复从 0.5.9 迁移到 0.6.0 时的迁移问题。作者 @mahee96,于 #920 中 +- 修复拼写错误"levaraging" -> "leveraging"。作者 @lafrenierejm,于 [#926](https://github.com/SideStore/SideStore/pull/926) 中 +- 将 StosVPN 添加到 EM Proxy 部分。作者 @Br0des,于 [#940](https://github.com/SideStore/SideStore/pull/940) 中 +- StosVPN 集成:移除了 em_proxy 和 EmotionalDamage 模块,改用 stosVPN。作者 @mahee96,于 [#945](https://github.com/SideStore/SideStore/pull/945) 中 +- 禁用 minimuxer 就绪检查,该检查会显示 NO WIFI/VPN 错误,因为 stosVPN 也可以在蜂窝网络上工作。作者 @mahee96,于 [#935](https://github.com/SideStore/SideStore/pull/935) 中 +- 添加 iOS 17.4+ 的 JIT 和挂载。作者 @jkcoxson,于 [#953](https://github.com/SideStore/SideStore/pull/953) 中 +- 添加导出证书功能。作者 @hugeBlack,于 [#959](https://github.com/SideStore/SideStore/pull/959) 中 +- 功能:添加配对文件导出 URL 回调,并用 StosVPN 替换 Wireguard。作者 @stossy11,于 [#962](https://github.com/SideStore/SideStore/pull/962) 中 +- 更改对 AltStore 面向用户的引用。作者 @owoellen,于 [#987](https://github.com/SideStore/SideStore/pull/987) 中 +- 更新 OperationError.swift 用于 idevice_pair。作者 @CelloSerenity,于 [#995](https://github.com/SideStore/SideStore/pull/995) 中 +- 添加导入/导出证书功能。作者 @hugeBlack,于 [#1008](https://github.com/SideStore/SideStore/pull/1008) 中 +- 修复配对文件文档链接。作者 @CelloSerenity,于 [#1011](https://github.com/SideStore/SideStore/pull/1011) 中 +- 添加使用主 bundle 的配置文件用于应用扩展的选项,更新 AltSign 和 libmd。作者 @hugeBlack,于 [#1012](https://github.com/SideStore/SideStore/pull/1012) 中 +- 刷新时使用主配置文件。作者 @hugeBlack,于 [#1013](https://github.com/SideStore/SideStore/pull/1013) 中 ## 0.6.1 -### Changelog -It's spring already? Here's a new update that should fix migration issues from 0.5.9/0.5.10 and an expiration bug. Happy sideloading! +### 更新日志 +原来已经是春天了吗?这是新的更新,应该可以修复来自 0.5.9/0.5.10 的迁移问题和一个过期 bug。祝侧载愉快! -### What's Changed: -- fix: typo in hasUpdate comparison by @l2dy in [#900](https://github.com/SideStore/SideStore/pull/900) -- Update SettingsViewController.swift by @neoarz in [#915](https://github.com/SideStore/SideStore/pull/915) -- Fixes for migration issues when migrating from 0.5.9 to 0.6.0 by @mahee96 in [#920](https://github.com/SideStore/SideStore/pull/920) -- Fix typo "levaraging" -> "leveraging" by @lafrenierejm in [#926](https://github.com/SideStore/SideStore/pull/926) -- Added StosVPN to the EM Proxy part. by @Br0des in [#940](https://github.com/SideStore/SideStore/pull/940) +### 更改内容: +- 修复:hasUpdate 比较中的拼写错误。作者 @l2dy,于 [#900](https://github.com/SideStore/SideStore/pull/900) 中 +- 更新 SettingsViewController.swift。作者 @neoarz,于 [#915](https://github.com/SideStore/SideStore/pull/915) 中 +- 修复从 0.5.9 迁移到 0.6.0 时的迁移问题。作者 @mahee96,于 [#920](https://github.com/SideStore/SideStore/pull/920) 中 +- 修复拼写错误"levaraging" -> "leveraging"。作者 @lafrenierejm,于 [#926](https://github.com/SideStore/SideStore/pull/926) 中 +- 将 StosVPN 添加到 EM Proxy 部分。作者 @Br0des,于 [#940](https://github.com/SideStore/SideStore/pull/940) 中 -## 0.6.0 - DO NOT use this build, use either 0.6.1 or 0.5.10 instead +## 0.6.0 - 请勿使用此版本,请改用 0.6.1 或 0.5.10 -### Changelog -It's March and we have some big changes. We've finally included AltStore 2.0 changes into SideStore. So you will get all the benefits of that and also some fixes in SideStore. Enjoy! +### 更新日志 +现在是三月,我们带来了一些重大更改。我们终于将 AltStore 2.0 的更改纳入 SideStore。因此你将获得所有这些好处,以及 SideStore 中的一些修复。尽情享受吧! -### What's Changed: -- AltStore 2.0 changes in [#794](https://github.com/SideStore/SideStore/pull/794) -- [Refresh]: Remove install stuffs from refresh since in refresh should only renew provisioning profiles by @mahee96 in [#846](https://github.com/SideStore/SideStore/pull/846) -- [Settings]: Fix: DisableAppLimit switch reverting back to off state even if on iOS where sparseRestore is not patched yet by @mahee96 in [#850](https://github.com/SideStore/SideStore/pull/850) -- [Backup]: Fix: update logic during install missed since override keyword was missing by @mahee96 in [#857](https://github.com/SideStore/SideStore/pull/857) -- Feature: Bulk sources-add in sources screen with capability to stage them before persisting into database by @mahee96 in [#888](https://github.com/SideStore/SideStore/pull/888) -- Feature: Render in-app update description as (full) markdown by @mahee96 in [#897](https://github.com/SideStore/SideStore/pull/897) +### 更改内容: +- AltStore 2.0 的更改,见 [#794](https://github.com/SideStore/SideStore/pull/794) +- [Refresh]: 移除刷新中的安装内容,因为刷新时应仅续订 provisioning profiles。作者 @mahee96,于 [#846](https://github.com/SideStore/SideStore/pull/846) 中 +- [Settings]: 修复:DisableAppLimit 开关即使在 sparseRestore 尚未修补的 iOS 上也会重置为关闭状态。作者 @mahee96,于 [#850](https://github.com/SideStore/SideStore/pull/850) 中 +- [Backup]: 修复:由于缺少 override 关键字,安装期间的更新逻辑被遗漏。作者 @mahee96,于 [#857](https://github.com/SideStore/SideStore/pull/857) 中 +- 功能:在源屏幕中批量添加源,并且能够在持久化到数据库之前对它们进行暂存。作者 @mahee96,于 [#888](https://github.com/SideStore/SideStore/pull/888) 中 +- 功能:将应用内更新描述渲染为(完整)markdown。作者 @mahee96,于 [#897](https://github.com/SideStore/SideStore/pull/897) 中 \ No newline at end of file diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/troubleshooting/common-issues.mdx b/i18n/zh/docusaurus-plugin-content-docs/current/troubleshooting/common-issues.mdx index 8519cd99..efded3e3 100644 --- a/i18n/zh/docusaurus-plugin-content-docs/current/troubleshooting/common-issues.mdx +++ b/i18n/zh/docusaurus-plugin-content-docs/current/troubleshooting/common-issues.mdx @@ -1,64 +1,70 @@ --- title: 常见问题 -description: 在使用SideStore的过程中出现的常见问题 +description: 使用 SideStore 时遇到的常见问题。 --- :::warning -此页面目前还在完善过程中。页面提供的信息应该是准确的,但如如果需要帮助,请前往我们的[Discord服务器](https://dis.sidestore.io)进行提问。 +此页面目前仍在编写中。所提供的信息应该是准确的,但如有需要,请参考我们的 [Discord server](https://dis.sidestore.io/) 以获取帮助。 ::: -## SideStore的常见问题 -### 我收到错误代码:"X" +## SideStore 的常见问题 + +### 我遇到了最新 nightly 版本的问题 +#### 原因 +我们的 nightly 构建包含前沿的功能和改进,其中一些可能会导致不稳定。 #### 解决方案 -确认我们提供的[错误代码列表](error-codes)! +切换到最新的稳定版本。请不要就 nightly 构建中遇到的错误请求支持。 -### AFC连接失败 +### 我收到了错误代码:"X" #### 原因 -连接问题或是配对文件不可用。 +发生了错误。 #### 解决方案 -1. 尝试重新连接,确保Wi-Fi和StosVPN均已连接 -2. 使用iloader生成并导入新的配对文件 +请查看我们贴心的[list of error codes](error-codes)! -### 没有Wi-Fi或VPN的连接 +### AFC 连接失败 / 无 Wi-Fi 或 VPN 连接 #### 原因 -minimuxer服务的连接出现了问题。 +与 minimuxer 服务的连接问题。 #### 解决方案 -1. 如果您正在使用WireGuard,请更换到StosVPN -2. 关闭任何的DNS阻止器 -3. 再试一次(多点点总会有用的) -4. 重新启动SideStore -5. 重新启动StosVPN -6. 使用iloader生成并导入新的配对文件。 +在每个步骤后都尝试刷新。如果它们不起作用,再继续下一步。 +1. 如果使用 WireGuard 或 StosVPN,请切换到 LocalDevVPN +2. 关闭任何 DNS 拦截器 +3. 确保 LocalDevVPN 和 Wi-Fi 均已连接 +4. 再试一次(反复点击按钮有时会有帮助) +5. 重启 SideStore +6. 重启 LocalDevVPN +7. 使用 iloader [Replace your pairing file](/docs/advanced/pairing-file)。 -### SideStore在安装过程中挂起 +### SideStore 在安装过程中途卡住 #### 原因 -缓存或是协议出了问题。 +缓存或协议问题。 #### 解决方案 -1. 如果您并未更新SideStore的话,请进行更新,否则重启 -2. 清理缓存 -3. 更换Anisette服务器 -4. 在设置-Anisette服务器-中重置adi.pb,然后登出,并重新登录SideStore +1. 更新 SideStore(如果适用)。否则,直接重启 +2. 清除缓存 +3. 更换 Anisette Server +4. 在服务器中-重置 adi.pb,然后退出 SideStore 并重新登录 5. 重启设备 -6. 重新生成配对文件 -7. 使用AltServer重新安装SideStore +6. 重新创建配对文件 +7. 使用 iloader 重新安装 SideStore -### 无法启动SideStore +### 无法启动 SideStore #### 原因 -存在多种可能的原因。 +有多种可能的原因。 #### 解决方案 -1. 确保您已通过AltServer安装了SideStore -2. 重新安装SideStore +1. 确保你通过 iloader 安装了 SideStore +2. 重新安装 SideStore -如果以上方案均不可用,请按照以下步骤操作: - -1. 删除SideStore以及您在SideStore中安装的所有应用 -2. 重新安装SideStore -3. 导入您的配对文件并登录。(接下来会提示您是否刷新SideStore,选择否) -4. 将`sidestore.ipa`安装到您的设备上 -5. 将`sidestore.ipa`文件导入到SideStore,就像您安装其他IPA文件一样 -6. 这会允许Sidestore进行一次全新的安装,希望这会解决您的问题 +如果上述方法不起作用,请执行以下操作: +1. 删除 SideStore 以及你从 SideStore 安装的所有应用 +2. 重新安装 SideStore +3. 导入你的配对文件并登录。(它会提示你刷新 SideStore,请选择否) +4. 将 `SideStore.ipa` 文件安装到你的设备 +5. 像安装任何其他 IPA 一样将 `SideStore.ipa` 文件导入 SideStore +6. 这将允许 SideStore 进行一次干净的刷新,希望可以解决问题 +### 我在这里找不到我的问题 +#### 解决方案 +请查看我们的[comprehensive troubleshooting guide](/docs/troubleshooting)。 \ No newline at end of file diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/troubleshooting/error-codes.mdx b/i18n/zh/docusaurus-plugin-content-docs/current/troubleshooting/error-codes.mdx index 4c80c46e..361f3dac 100644 --- a/i18n/zh/docusaurus-plugin-content-docs/current/troubleshooting/error-codes.mdx +++ b/i18n/zh/docusaurus-plugin-content-docs/current/troubleshooting/error-codes.mdx @@ -1,304 +1,261 @@ --- title: 错误代码 -description: SideStore内的错误代码 +description: SideStore 中的错误代码。 --- -:::warning - -本页面目前尚未完全准确反映SideStore的工作原理,因其内容基于AltStore的错误代码页面。部分信息仍属有效,但请勿逐字依赖此处说明。如需帮助,请务必前往我们的[Discord服务器](https://dis.sidestore.io)咨询。 - -::: - -## SideStore相关错误 - -#### (1000) An unknown error occurred. - +## SideStore 错误 +### (1000) 发生未知错误。 `SideStore.OperationError 1000` -这意味着SideStore遇到了意外错误。请查阅我们的[故障排除指南](./troubleshooting.mdx),若问题仍未解决,可直接联系我们。 - -#### (1001) The operation returned an unknown result. +这意味着 SideStore 遇到了意外错误。请查看我们的 [Troubleshooting Guide](./),如果问题仍然存在,可以直接联系我们。 +### (1001) 操作返回了未知结果。 `SideStore.OperationError 1001` -这意味着SideStore遇到了意外错误。请查阅我们的[故障排除指南](./troubleshooting.mdx),若问题仍未解决,可直接联系我们。 - -#### (1002) The operation was cancelled. +这意味着 SideStore 遇到了意外错误。请查看我们的 [Troubleshooting Guide](./),如果问题仍然存在,可以直接联系我们。 +### (1002) 操作已被取消。 `SideStore.OperationError 1002` -这意味着操作已被中止。请重新尝试。 - -#### (1003) The operation timed out. +这意味着所执行的操作被停止了。请重试。 +### (1003) 操作超时。 `SideStore.OperationError 1003` -这意味着SideStore在尝试完成请求操作时遇到了问题。请重新尝试操作,并查阅我们的[故障排除指南](./troubleshooting.mdx)获取更多帮助。若问题持续存在,您可直接联系我们。 - -#### (1004) You are not signed in. +这意味着 SideStore 在尝试完成所请求的操作时遇到了问题。请重试,并查看我们的 [Troubleshooting Guide](./) 以获取更多帮助。如果问题仍然存在,可以直接联系我们。 +### (1004) 你尚未登录。 `SideStore.OperationError 1004` -这意味着您必须在设置选项卡中输入您的Apple ID信息才能执行所请求的操作。 - -#### (1005) The app could not be found. +这意味着你必须在设置选项卡中输入你的 Apple 账户信息,才能执行所请求的操作。 +### (1005) 找不到该应用。 `SideStore.OperationError 1005` -这意味着SideStore无法找到要下载或安装的文件,很可能是因为该文件在提供的URL地址不存在。 - -#### (1006) SideStore could not determine this device's UDID. +这意味着 SideStore 无法定位要下载或安装的文件,很可能是因为该文件在提供的 URL 中不存在。 +### (1006) SideStore 无法确定此设备的 UDID。 `SideStore.OperationError 1006` -这意味着您的配对文件已损坏。[请使用 iloader 重新导入](/docs/advanced/pairing-file)。 - -#### (1007) This app is in an invalid format. - +在 LiveContainer+SideStore 上,这*目前*仅适用于**Nightly**发布渠道。 + +**务必接受所有确认提示。** +1. 打开 SideStore 中的设置,向下滚动并点击“重置配对文件”。 +2. 打开 iLoader,向下滚动并点击“删除已存储的配对”。 +3. 向上滚动并点击“刷新”。 +4. 使用 iLoader 配对您的 idevice。 +5. 点击“管理配对文件”,然后点击“放置到所有应用”(或放到 SideStore 旁边)。 +6. 安装完成后打开 SideStore。 +7. 刷新 SideStore 以查看一切是否正常。 +8. 如果第 7 步不起作用,请进入 SideStore 中的设置,向下滚动并点击“VPN 配置”,将“设备 IP”设置为 10.7.0.1(或者如果你修改了目标 LocalDevVPN IP,则设置为你为“设备 IP”设置的任何值)。 +9. 如果第 8 步不起作用,将 anisette 改为 Macley。 +10. 如果第 9 步不起作用,请重启你的 iDevice。 + +### (1007) 此应用的格式无效。 `SideStore.OperationError 1007` -这意味着您尝试安装的应用程序并非标准的.ipa格式。请尝试从其他位置下载该应用程序。 - -#### (1008) Invalid parameters. +这意味着你尝试安装的应用不是标准的 .ipa。请尝试从其他位置下载该应用。 +### (1008) 参数无效。 `SideStore.OperationError 1008` -这意味着发生了内部错误,SideStore 无法提供执行请求任务所需的信息。请重新尝试操作,并查阅我们的[故障排除指南](./troubleshooting.mdx)获取更多帮助。若问题持续存在,您可直接通过我们的 Discord 服务器联系我们。 - -#### (1009) You cannot register more than 10 App IDs within a 7-day period. +这意味着发生了内部错误,SideStore 无法提供执行所请求的任务所需的信息。请重试,并查看我们的 [Troubleshooting Guide](./) 以获取更多帮助。如果问题仍然存在,可以在我们的 [Discord server](https://dis.sidestore.io/) 直接联系我们。 +### (1009) 你无法在 7 天期限内注册超过 10 个 App IDs。 `SideStore.OperationError 1009` -这意味着您已达到可用的应用ID数量上限。应用ID无法手动删除。若应用在首次安装或上次更新后仍存在7天,应用ID将自动续期;若在此期间被删除,则会过期。请在“我的应用”标签页中查看应用ID的到期时间。 - -#### (1010) There are no AltStore sources. +这意味着你已达到可用的 App IDs 最大数量。App IDs 无法手动删除。如果应用在首次安装或上次续期后的 7 天内仍然存在,App IDs 会续期;如果已被删除,则会过期。请查看“我的应用”选项卡中的 App IDs,了解它们何时过期。 +### (1010) 没有 SideStore 源。 `SideStore.OperationError 1010` -这意味着发生了内部错误,SideStore 无法提供执行请求任务所需的信息。请重新尝试操作,并查阅我们的[故障排除指南](./troubleshooting.mdx)获取更多帮助。若问题持续存在,您可直接通过我们的 Discord 服务器联系我们。 - -#### (1011) SideStore was denied permission to launch the app. +这意味着发生了内部错误,SideStore 无法获取你添加的任何 AltSources 的更改。请重试,并查看我们的 [Troubleshooting Guide](./) 以获取更多帮助。如果问题仍然存在,可以在我们的 [Discord server](https://dis.sidestore.io/) 直接联系我们。 +### (1011) SideStore 被拒绝启动该应用。 `SideStore.OperationError 1011` -这意味着SideStore无法启动侧载应用,因为您在“SideStore想要打开\[应用]”的提示中点击了“取消”,或者您仍需在设置中信任您的Apple ID。 - -#### (1012) SideStore's shared app group could not be accessed. +这意味着 SideStore 无法启动侧载的应用,因为你在“SideStore 想要打开 \\[app]”提示中点击了“取消”,或者因为你仍然需要在设置中信任你的 Apple 账户。 +### (1012) 无法访问 SideStore 的共享应用组。 `SideStore.OperationError 1012` -这意味着SideStore无法访问应用备份存储目录。请确保您使用的是最新版AltServer安装SideStore,而非通过其他方式安装。 - -#### (1403) Unable to connect to SideJITServer. +这意味着 SideStore 无法访问存储应用备份的目录。请确保你使用最新版本的 AltServer 安装 SideStore,而不是通过其他方法安装。 +### (1403) 无法连接到 SideJITServer。 `SideStore.OperationError 1403` -请确保您与运行SideJITServer的计算机处于同一Wi-Fi网络,且防火墙已正确配置。或者,您可以在启用StosVPN并处于Wi-Fi或飞行模式时,通过iOS 17.4-18.6系统内置的“启用JIT”选项来启用JIT功能。 - -#### (1412) Unable to connect to a V3 anisette server. +请确保你与运行 SideJITServer 的电脑处于同一 Wi-Fi,并且你的防火墙已进行相应设置。或者,你也可以使用内置的“Enable JIT”选项,在已启用 LocalDevVPN且使用 Wi-Fi 或飞行模式的情况下,在 iOS 17.4-18.6 上启用 JIT。 +### (1412) 无法连接到 V3 anisette 服务器。 `SideStore.OperationError 1412` -您的设备无法从V3 Anisette服务器接收数据。请重试,或切换Anisette服务器。 - -#### (1414) No Wi-Fi/StosVPN. +你的设备无法从 V3 anisette 服务器接收数据。请重试,或更换 anisette 服务器。 +### (1414) 无 Wi-Fi/StosVPN。 `SideStore.OperationError 1414` -您似乎未连接至Wi-Fi和/或StosVPN。SideStore在未连接Wi-Fi和StosVPN的情况下无法刷新或安装应用程序,请确保两者均已连接。若仍无法解决,请[使用iloader重新导入配对文件](/docs/advanced/pairing-file)。 +你似乎未连接到 Wi-Fi 和/或 LocalDevVPN。SideStore 在没有 Wi-Fi 和 LocalDevVPN 的情况下无法刷新或安装应用,请确保两者均已连接。如果这样仍无法解决问题,请[replace your pairing file using iloader](/docs/advanced/pairing-file)。 -## Minimuxer相关错误 - -#### (4) AFC was unable to manage files on the device. - +## Minimuxer 错误 +### (4) AFC 无法管理设备上的文件。 `minimuxer.MinimuxerError 4` -这意味着您正在尝试在不受支持的iOS版本上启用即时编译(JIT)。SideStore仅支持在iOS 17.4-18.6版本上启用即时编译功能。 - -#### (27) AFC was unable to manage files on the device. +这意味着你正在尝试在不支持的 iOS 版本上启用 JIT。SideStore 仅支持在 iOS 17.4-18.6 上启用 JIT。 +### (27) AFC 无法管理设备上的文件。 `minimuxer.MinimuxerError 27` -请确保Wi-Fi和StosVPN均已连接。若错误仍未解决,请[使用iloader重新导入配对文件](/docs/advanced/pairing-file)。 - - -## Apple开发者相关错误 - -#### (3000) An unknown error occurred. - -`AltStore.AppleDeveloperError` +确保 Wi-Fi 和 LocalDevVPN 均已连接。如果错误仍未解决,请[replace your pairing file with iloader](/docs/advanced/pairing-file)。 -新信息即将发布。 +如果你使用的是 iOS 26.4 或更高版本,请更新到 SideStore(nightly)。 -#### (3001) The provided parameters are invalid. -`AltStore.AppleDeveloperError` +## Apple Developer 错误 +### (3000) 发生未知错误。 +`SideStore.AppleDeveloperError` -新信息即将发布。 +更多信息即将更新 -#### (3002) Incorrect Apple ID or password. +### (3001) 提供的参数无效。 +`SideStore.AppleDeveloperError` -`AltStore.AppleDeveloperError` +更多信息即将更新 -这意味着您使用的Apple ID凭据无效。请确保用户名和密码正确无误。 +### (3002) Apple ID 或密码不正确。 +`SideStore.AppleDeveloperError` -若问题仍未解决,您也可尝试创建新的Apple ID用于SideStore。 +这意味着你使用的 Apple 账户凭据无效。请确保用户名和密码正确无误。 -#### (3003) An app-specific password is required. You can create one at appleid.apple.com. +如果你仍有问题,也可以尝试创建一个新的 Apple 账户用于 SideStore。 -`AltStore.AppleDeveloperError` +### (3003) 需要应用专用密码。你可以在 appleid.apple.com 上创建一个。 +`SideStore.AppleDeveloperError` -新信息即将发布。 +更多信息即将更新。 -#### (3004) You are not a member of any development teams. +### (3004) 你不属于任何开发团队。 +`SideStore.AppleDeveloperError` -`AltStore.AppleDeveloperError` +更多信息即将更新。 -新信息即将发布。 +### (3005) 此设备的 UDID 无效。 +`SideStore.AppleDeveloperError` -#### (3005) This device's UDID is invalid. +更多信息即将更新。 -`AltStore.AppleDeveloperError` +### (3006) 此设备已通过另一个 ID 注册。 +`SideStore.AppleDeveloperError` -新信息即将发布。 +更多信息即将更新。 -#### (3006) This device is already registered with another ID. +### (3007) 证书请求无效。 +`SideStore.AppleDeveloperError` -`AltStore.AppleDeveloperError` +更多信息即将更新。 -新信息即将发布。 +### (3008) 此团队没有序列号为此请求的证书。 +`SideStore.AppleDeveloperError` -#### (3007) The certificate request is invalid. +更多信息即将更新。 -`AltStore.AppleDeveloperError` +### (3009) 此应用的名称无效。 +`SideStore.AppleDeveloperError` -新信息即将发布。 +SideStore 无法向 Apple 注册 App ID,因为应用名称包含非 ASCII 字符。你可以尝试从其他来源下载。 -#### (3008) There is no certificate with the requested serial number for this team. +### (3010) 此应用的 bundle identifier(包标识符)无效。 +`SideStore.AppleDeveloperError` -`AltStore.AppleDeveloperError` +更多信息即将更新。 -新信息即将发布。 +### (3011) 此应用的 bundle identifier(包标识符)已注册。 +`SideStore.AppleDeveloperError` -#### (3009) The name for this app is invalid. +更多信息即将更新。 -`AltStore.AppleDeveloperError` +### (3012) 此团队没有标识符为此请求的 App ID。 +`SideStore.AppleDeveloperError` -SideStore 无法向 Apple 注册应用程序 ID,因为应用名称包含非 ASCII 字符。您可以尝试从其他来源下载。 +更多信息即将更新。 -#### (3010) The bundle identifier for this app is invalid. +### (3013) 你只能每 7 天注册 10 个 App IDs。 +`SideStore.AppleDeveloperError` -`AltStore.AppleDeveloperError` +更多信息即将更新。 -新信息即将发布。 +### (3014) 提供的应用组无效。 +`SideStore.AppleDeveloperError` -#### (3011) The bundle identifier for this app has already been registered. +更多信息即将更新。 -`AltStore.AppleDeveloperError` +### (3015) 应用组不存在。 +`SideStore.AppleDeveloperError` -新信息即将发布。 +更多信息即将更新。 -#### (3012) There is no App ID with the requested identifier on this team. +### (3016) 所请求的配置文件(provisioning profile)的标识符无效。 +`SideStore.AppleDeveloperError` -`AltStore.AppleDeveloperError` +更多信息即将更新。 -新信息即将发布。 +### (3017) 此团队没有标识符为此请求的配置文件(provisioning profile)。 +`SideStore.AppleDeveloperError` -#### (3013) You may only register 10 App IDs every 7 days. +如果你看到此错误,很可能是由于 Apple 最近所做的服务器端更改所致。请查看以下公告以获取更多信息: [https://twitter.com/SideStoreio/status/1638599316762664974?s=20](https://twitter.com/SideStoreio/status/1638599316762664974?s=20) -`AltStore.AppleDeveloperError` +### (3018) 此账户需要使用双重认证登录。 +`SideStore.AppleDeveloperError` -新信息即将发布。 +更多信息即将更新。 -#### (3014) The provided app group is invalid. +### (3019) 验证码不正确。 +`SideStore.AppleDeveloperError` -`AltStore.AppleDeveloperError` +更多信息即将更新。 -新信息即将发布。 +### (3020) 未能与服务器执行身份验证握手。 +`SideStore.AppleDeveloperError` -#### (3015) App group does not exist. +更多信息即将更新。 -`AltStore.AppleDeveloperError` +### (3021) 提供的 anisette 数据无效。 +`SideStore.AppleDeveloperError` -新信息即将发布。 - -#### (3016) The identifier for the requested provisioning profile is invalid. - -`AltStore.AppleDeveloperError` - -新信息即将发布。 - -#### (3017) There is no provisioning profile with the requested identifier on this team. - -`AltStore.AppleDeveloperError` - -若您看到此错误提示,很可能是由于苹果公司近期在服务器端进行的变更所致。更多详情请参阅以下公告:[Twitter](https://twitter.com/altstoreio/status/1638599316762664974?s=20) - -#### (3018) This account requires signing in with two-factor authentication. - -`AltStore.AppleDeveloperError` - -新信息即将发布。 - -#### (3019) Incorrect verification code. - -`AltStore.AppleDeveloperError` - -新信息即将发布。 - -#### (3020) Failed to perform authentication handshake with server. - -`AltStore.AppleDeveloperError` - -新信息即将发布。 - -#### (3021) The provided anisette data is invalid. - -`AltStore.AppleDeveloperError` - -此错误表示用于验证您的AppleID信息的数据已过期或无效。请确保您的计算机日期和时间设置准确无误,并已从Apple官方渠道安装iTunes和iCloud。 - -#### Apple API相关错误 - -#### (1100) Your session has expired. +此错误意味着用于验证你 AppleID 的信息已过期或无效。请确保你的计算机日期和时间准确无误,并且已经从 Apple 安装了 iTunes 和 iCloud。 +### Apple API 错误 +### (1100) 你的会话已过期。 `Apple.APIError` -此错误表示用于验证您的 Apple ID 的信息已过期或无效。请确保计算机的日期和时间设置准确无误,然后重试。 - -#### (1102) Apple ID cannot be used for development. +此错误意味着用于验证你 Apple 账户的信息已过期或无效。请确保你计算机的日期和时间准确,然后重试。 +### (1102) Apple ID 不能用于开发。 `Apple.APIError` -您可能需要在[developer.apple.com](https://developer.apple.com)上同意苹果的服务条款。如果此方法无效,您可以创建一个专用于侧载的新“一次性”Apple ID。 - -#### (-20101) Your account information was entered incorrectly. +你可能需要在 [developer.apple.com](https://developer.apple.com) 上同意 Apple 的服务条款。如果这样仍无法解决问题,你可以创建一个专门用于侧载的全新“throwaway” Apple 账户。 +### (-20101) 你的账户信息输入有误。 `Apple.APIError` -此错误表示用于验证 Apple ID 的用户名或密码已过期或无效。请确保您已正确输入两者,并确认计算机的日期和时间设置准确无误。 +此错误意味着你用于验证 Apple 账户的用户名或密码已过期或无效。请确保两者都正确输入,并且你计算机的日期和时间准确无误。 ## 其他错误 - -#### (512) Failed to write to disk - +### (512) 写入磁盘失败 `NSCocoaErrorDomain` -这意味着将文件写入磁盘时发生了错误。请确保您的手机和电脑都有足够的可用磁盘空间,然后重试。 +这意味着在将文件写入磁盘时发生了错误。请确保你的手机有足够的可用磁盘空间,然后重试。 -#### ldid相关错误 +### (-1011) NSURLErrorDomain +前往 https://developer.apple.com/,登录,并接受新的 Apple Developer 服务条款。 +### ldid 错误 `ldid.cpp(X): X` -请按照以下步骤修复此错误: - -1. 首先,您需要安装 Feather。 -2. 随后,将存在问题的 IPA 文件导入 Feather 应用,同时导入任意 .mobileprovision 和 .p12 文件(这些文件可以是过期的,因为我们仅利用该应用重新分配 IPA 文件的头部信息)。 -3. 使用导入的证书对 IPA 文件进行签名。 -4. 在文件管理器中打开签名后的应用,重新打包为IPA格式。 -5. 将打包后的IPA安装至AltStore。 - -### (-1011) NSURLErrorDomain +按照以下步骤修复此错误: -访问 https://developer.apple.com/,登录并接受新的 Apple 开发者服务条款。 +1. 安装 [Feather](https://github.com/khcrysalis/Feather/releases/latest)。 +2. 将存在此问题的 IPA 导入 Feather,同时导入任意随机 .mobileprovision 和 .p12 文件(它们可以已过期,因为我们只是用这个应用来重写 IPA 的头)。 +3. 使用你导入的证书为 IPA 签名。 +4. 在文件中打开已签名的应用,并重新打包为 IPA。 +5. 在 SideStore 中安装打包后的 IPA。 \ No newline at end of file diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/troubleshooting/troubleshooting.mdx b/i18n/zh/docusaurus-plugin-content-docs/current/troubleshooting/troubleshooting.mdx index 15287f6a..e7601cba 100644 --- a/i18n/zh/docusaurus-plugin-content-docs/current/troubleshooting/troubleshooting.mdx +++ b/i18n/zh/docusaurus-plugin-content-docs/current/troubleshooting/troubleshooting.mdx @@ -1,85 +1,72 @@ --- title: 故障排除指南 -description: 一个在没提供错误代码的情况下的故障排除指南 +description: 在无错误代码的情况下排查 SideStore 问题的指南。 --- +```mdx-code-block +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +``` + ## 安装 +### 我按照说明操作了,但仍然无法安装 SideStore。 -### 我按照教程进行但是我还是无法安装SideStore。 +#### macOS 说明 +1. **信任设备**:将 iOS 设备连接到 Mac 后,请确保你在 Mac 和 iOS 设备上都点击了“信任”。你可以通过以下方式验证: + - 打开访达(macOS 10.15 Catalina 或更高版本)或 iTunes(macOS 10.14 Mojave 及更早版本)。 + - 断开并重新连接你的手机到 Mac,检查是否出现对话框询问是否要信任该设备。 +2. **使用其他 Apple 账户**:尝试使用另一个 Apple 账户。如有需要,你可以[create a new Apple Account](https://appleid.apple.com/account#!\&page=create) specifically for SideStore use for free. -#### Mac 操作指南 -1. **信任设备**:将 iOS 设备连接至 Mac 后,请确保在 Mac 和 iOS 设备上均选择“信任”。验证步骤如下: - - 打开 Finder(macOS 10.15 Catalina 或更高版本)或 iTunes(macOS 10.14 Mojave 或更早版本) - - 断开并重新连接手机与 Mac,检查是否弹出信任设备确认对话框 -2. **使用其他 Apple ID**:尝试使用其他 Apple ID。如有需要,可免费[创建专用于 SideStore 的新 Apple ID](https://appleid.apple.com/account#!\&page=create) +#### Windows 说明 +1. **信任设备**:将 iOS 设备连接到 Windows 计算机后,请确保你在计算机和 iOS 设备上都选择了“信任”。你可以通过以下方式验证: + - 打开 iTunes,检查是否出现对话框询问是否要信任该设备。 +2. **使用其他 Apple 账户**:尝试使用另一个 Apple 账户。如有需要,你可以[create a new Apple Account](https://appleid.apple.com/account#!\&page=create) specifically for SideStore use for free. -#### Windows 操作指南 -1. **信任设备**:将 iOS 设备连接至 Windows 电脑后,请确保在电脑和 iOS 设备两端均选择“信任”。验证方式如下: - - 打开 iTunes 检查是否出现信任设备确认对话框 -2. **使用其他Apple ID**:尝试使用其他Apple ID。如有需要,可免费[创建专用于SideStore的新Apple ID](https://appleid.apple.com/account#!\&page=create) +### 更新 SideStore 在快结束时卡住 +前往主屏幕即可让其完成更新。我们不知道为什么会出现这种情况,但这可能与使用 VPN 引导 `installd` 刷新 SideStore(其自身)有关。 ## 登录问题 - -### SideStore 登录时出现卡顿或显示错误代码 - -若您在尝试登录 SideStore 时遇到卡顿或错误代码,可能存在多种潜在原因。请按以下步骤解决问题: - -1. **更换Anisette服务器:** - 最常见的解决方案是切换到其他Anisette服务器。Anisette服务器偶尔会出现停机情况,切换到备用服务器通常能解决问题。操作步骤如下: - - 打开SideStore设置 - - 向下滚动至“Anisette服务器”选项 - - 从列表中选择其他服务器 - - 您可能需要尝试列表中的多个服务器,找出最适合您的选项 - -2. **自行托管 Anisette 服务器:** - 若您有意愿,您可以自行搭建 Anisette 服务器。官方文档中提供了详细的托管指南,请参阅[此处](/docs/advanced/anisette) - -### 使用Apple ID登录时未收到验证码 - -登录过程中另一个常见问题是使用Apple ID登录SideStore时未收到验证码。可通过以下步骤解决: - -**适用于iOS 18.1以下版本:** - -1. 打开“设置”应用 -2. 点击屏幕顶部的姓名 -3. 进入“登录与安全”选项 -4. 选择“双重认证” -5. 点击“获取验证码” - -**适用于 iOS 18.1 及以上版本:** - -1. 在网页浏览器中访问 [iCloud](https://www.icloud.com) -2. 点击“登录” -3. 系统可能提示两个选项:“登录”和“使用其他 Apple 账户” - - 选择底部选项“使用其他 Apple 账户” -4. 输入您的 Apple ID 和密码(请勿使用密钥登录) -5. Apple 将向您发送验证码 - - 在 SideStore 中使用此验证码完成登录流程 - - -## 无法刷新或安装应用 - -### 解决无Wi-Fi或VPN错误 - -1. 启用飞行模式并连接稳定的Wi-Fi网络 -2. 确保Apple域名及您的anisette服务器域名未被限制。请检查以下事项: - - 关闭任何阻断`ocsp.apple.com`等域名的DNS服务器 - - 断开学校/工作Wi-Fi连接,改用无限制的网络 -3. 确认StosVPN中VPN已连接 -4. 关闭StosVPN后重新开启,在SideStore等待数秒再尝试刷新 -5. [使用iloader重新导入配对文件](/docs/advanced/pairing-file) - -## AltServer - -### 如果我需要使用Windows应用商店版本的iCloud怎么办? - -AltServer要求您直接从Apple安装iCloud以验证Apple ID。若您希望或需要同时使用Windows应用商店版本,可参照[此Reddit帖子](https://www.reddit.com/r/jailbreak/comments/rp5buz/tutorial\_how\_to\_use\_altserver\_if\_you\_have\_to\_use/?utm\_source=share\&utm\_medium=ios\_app\&utm\_name=iossmf) 并更新的替代方案: - -1. 从苹果官网下载并安装[iTunes](https://www.apple.com/itunes/),具体地址为:([64位](https://secure-appldnld.apple.com/itunes12/001-80053-20210422-E8A3B28C-A3B2-11EB-BE07-CE1B67FC6302/iTunes64Setup.exe) 或 [32位](https://secure-appldnld.apple.com/itunes12/001-80042-20210422-E8A351F2-A3B2-11EB-9A8F-CF1B67FC6302/iTunesSetup.exe)) -2. 从苹果官网[此处](https://updates.cdn-apple.com/2020/windows/001-39935-20200911-1A70AA56-F448-11EA-8CC0-99D41950005E/iCloudSetup.exe)下载并安装iCloud。 -3. 定位“C:\Program Files (x86)\Common Files\Apple”文件夹。复制其中的“Apple Application Support”和“Internet Services”文件夹,在任意安全的位置新建任意名称的文件夹,将这两个文件夹粘贴至该新文件夹。 -4. 从计算机中卸载iCloud。**切勿**卸载iTunes!(同时,**永远不要**卸载与iTunes及iCloud一同安装的“Apple Mobile Device Support”或“Apple Application Support”文件夹。) -5. 从 Windows 应用商店安装 [iCloud](https://www.microsoft.com/store/productId/9PKTQ5699M62) -6. 下载并安装[AltServer](https://cdn.altstore.io/file/altstore/altinstaller.zip)。首次以管理员权限打开时,点击“选择文件夹...”并选定第三步创建的文件夹。 - +### SideStore 在登录时冻结或显示错误代码 + +如果你在尝试登录 SideStore 时遇到冻结或错误代码,可能有多种潜在原因。请按照以下步骤解决问题: + +1. **更换 Anisette Server(Anisette 服务器):** + 最常见的解决方案是切换到一个不同的 Anisette 服务器。Anisette 服务器偶尔会经历停机。切换到备用服务器通常可以解决问题。操作如下: + - 打开 SideStore 设置。 + - 向下滚动到“Anisette Server”选项。 + - 从列表中选择一个不同的服务器。 + - 你可能需要尝试列表中的几个服务器,找到最适合你的一个。 + +2. **托管你自己的 Anisette Server:** + 如果你愿意,可以设置你自己的 Anisette 服务器。关于托管 Anisette 服务器的详细说明在官方文档中提供,可以[here](https://docs.sidestore.io/docs/advanced/anisette)找到。 + +### 使用 Apple 账户登录时未收到验证码 +登录期间另一个常见问题是在 SideStore 中使用 Apple 账户时收不到验证码。可以通过以下步骤解决: + + + 1. 打开“设置”应用。 + 2. 点击屏幕顶部的姓名/账户。 + 3. 关闭 Wi-Fi 和蜂窝数据。 + 4. 点击“登录与安全”。 + 5. 点击“获取验证码”。 + 6. 在 SideStore 中输入此验证码。 + + + + 1. 打开“设置”应用。 + 2. 点击屏幕顶部的姓名/账户。 + 3. 进入“登录与安全”。 + 4. 选择“双重认证”。 + 5. 选择“获取验证码”。 + 6. 在 SideStore 中输入此验证码。 + + + +## 其他 +### 我的应用从 SideStore 中消失了,我不知道该怎么办! +不要惊慌!像往常一样重新侧载应用,而无需从设备上移除它们,你的数据应该没问题。很不幸,你停用的应用可能已丢失,但要确认这一点,只需刷新 SideStore,看看它们是否恢复。 + +### 无法启动调试服务器 +1. 确保你使用的是 iOS 17.4 或更高版本 +2. 有时调试服务器无法正常工作。不过,你可以尝试[replacing your pairing file using iloader](/docs/advanced/pairing-file)。 \ No newline at end of file diff --git a/i18n/zh/docusaurus-theme-classic/footer.json b/i18n/zh/docusaurus-theme-classic/footer.json new file mode 100644 index 00000000..e5178b54 --- /dev/null +++ b/i18n/zh/docusaurus-theme-classic/footer.json @@ -0,0 +1,46 @@ +{ + "link.title.Docs": { + "message": "文档", + "description": "The title of the footer links column with title=Docs in the footer" + }, + "link.title.Community": { + "message": "社区", + "description": "The title of the footer links column with title=Community in the footer" + }, + "link.title.More": { + "message": "更多", + "description": "The title of the footer links column with title=More in the footer" + }, + "link.item.label.Introduction": { + "message": "简介", + "description": "The label of footer link with label=Introduction linking to /docs/intro" + }, + "link.item.label.Discord": { + "message": "Discord", + "description": "The label of footer link with label=Discord linking to https://dis.sidestore.io" + }, + "link.item.label.X (formerly Twitter)": { + "message": "X (formerly Twitter)", + "description": "The label of footer link with label=X (formerly Twitter) linking to https://x.com/sidestoreio" + }, + "link.item.label.Patreon": { + "message": "Patreon", + "description": "The label of footer link with label=Patreon linking to https://www.patreon.com/sidestoreIO" + }, + "link.item.label.Bluesky": { + "message": "Bluesky", + "description": "The label of footer link with label=Bluesky linking to https://bsky.app/profile/sidestore.io" + }, + "link.item.label.Website": { + "message": "官网", + "description": "The label of footer link with label=Website linking to https://sidestore.io/" + }, + "link.item.label.GitHub": { + "message": "GitHub", + "description": "The label of footer link with label=GitHub linking to https://github.com/SideStore" + }, + "copyright": { + "message": "版权所有 © 2026 SideStore, LLC. 基于 Docusaurus 构建。", + "description": "The footer copyright" + } +} diff --git a/i18n/zh/docusaurus-theme-classic/navbar.json b/i18n/zh/docusaurus-theme-classic/navbar.json new file mode 100644 index 00000000..d180cbb9 --- /dev/null +++ b/i18n/zh/docusaurus-theme-classic/navbar.json @@ -0,0 +1,26 @@ +{ + "title": { + "message": "SideStore", + "description": "The title in the navbar" + }, + "logo.alt": { + "message": "SideStore Logo", + "description": "The alt text of navbar logo" + }, + "item.label.Docs": { + "message": "文档", + "description": "Navbar item with label Docs" + }, + "item.label.GitHub": { + "message": "GitHub", + "description": "Navbar item with label GitHub" + }, + "item.label.Patreon": { + "message": "Patreon", + "description": "Navbar item with label Patreon" + }, + "item.label.Discord": { + "message": "Discord", + "description": "Navbar item with label Discord" + } +}