# 云编译出包指南（SukiSU Ultra · 赛博朋克改版）

> 本地这台设备是 **arm64**，而 Google 的 build-tools / NDK 宿主工具**只有 x86_64 版**。
> 用 qemu 模拟虽然能过 Kotlin/AIDL，但 native（C 代码）阶段会慢到不可接受。
> **云编译是唯一快且稳的路**——GitHub Actions 的 runner 就是 x86_64，原生执行，5–10 分钟出包。
>
> 本项目**自带 CI 配置**：`.github/workflows/build-manager.yml`，无需自己写。

---

## 方案一：网页上传（零命令，最省心）

### 1. 建仓库

打开 https://github.com/new

- Repository name：`sukisu-cyberpunk`（随意）
- 选 **Private**（私有，避免版权纠纷）
- 点 **Create repository**

### 2. 打包本地项目

用 MT 管理器 / Solid Explorer 打开：

```
/storage/emulated/0/玩/sukisu ui/SukiSU-Ultra-4.1.1
```

把 **整个目录内容** 压缩成 zip。

> ⚠️ 打包前先删掉这些（体积大且无用）：
> - `manager/app/build/`
> - `manager/.gradle/`
> - `manager/.kotlin/`
> - `manager/app/.cxx/`
> - `manager/local.properties`（含本机路径，云端不适用）
> - `manager/gradle/wrapper/gradle-wrapper.properties` 里的 `distributionUrl` 要**改回官方地址**：
>   ```
>   distributionUrl=https\://services.gradle.org/distributions/gradle-9.2.0-bin.zip
>   validateDistributionUrl=true
>   ```
>   （我们本地改成 `file:/root/gradle-dl/...` 是为了绕开下载，云端必须改回来）

### 3. 上传

在刚建好的仓库页面点 **uploading an existing file**，把解压后的所有文件/文件夹拖进去，
Commit message 随便写，点 **Commit changes**。

### 4. 触发构建

仓库页面 → **Actions** 标签 → 左侧列表选 **Build Manager** → 右侧 **Run workflow** → 绿色按钮。

### 5. 取包

等 5–10 分钟（会先编译 lkm、ksuinit、ksud，再编 manager）。
完成后进入该次运行页面，底部 **Artifacts** 区域下载 **Manager**，解压即得 APK。

---

## 方案二：用 Token 推送（可让 AI 代劳，推荐）

如果你愿意生成一个 **Personal Access Token**，我就能直接用 git 帮你推送，你不用手动传文件。

### 生成 Token

1. 打开 https://github.com/settings/tokens?type=beta
2. **Generate new token** → 名称随便，Expiration 选 7 天
3. **Repository access** → Only select repositories → 选中你刚建的仓库
4. **Permissions** → Repository permissions →
   - **Contents**: Read and write ✅
   - **Workflows**: Read and write ✅（必须，否则推不了 `.github/workflows`）
5. 生成后**复制 token**（形如 `github_pat_xxx`）

### 告诉我三样东西

```
仓库地址：https://github.com/<你的用户名>/sukisu-cyberpunk
用户名  ：<你的 GitHub 用户名>
Token   ：github_pat_xxxxxxxx
```

我会在本地终端执行：

```bash
git init
git add .
git commit -m "cyberpunk UI"
git branch -M main
git remote add origin https://<用户名>:<token>@github.com/<用户名>/sukisu-cyberpunk.git
git push -u origin main
```

推送完成后 Actions 会**自动触发**（因为 workflow 的 `on.push` 覆盖了 `manager/**`），
你只需去 Actions 页面等结果、下 Artifact。

> 🔒 安全提醒：Token 用完请到 https://github.com/settings/tokens 撤销。
> 我只会把它用于这一次 push，不会写入任何持久化文件。

---

## 方案三：继续本地硬啃（不推荐但可行）

最新诊断显示 CMake 失败**不是**架构问题，而是：

```
Exec failed, error: 13 (Permission denied)
/ sdcard/玩/sukisu ui/.../prefab_command
```

`/sdcard` 挂载在 Android 上是 **noexec**（不允许执行文件），而 AGP 需要在 build 目录里
生成并执行 `prefab_command` 脚本。

**修复思路：把项目整体挪到 Linux 环境内的可执行路径再构建**

```bash
mkdir -p /root/build
cp -a "/storage/emulated/0/玩/sukisu ui/SukiSU-Ultra-4.1.1" /root/build/
cd /root/build/SukiSU-Ultra-4.1.1/manager
```

但这之后仍要面对 **NDK host 工具是 x86_64** 的问题——需要对
`ndk/29.0.14206865/toolchains/llvm/prebuilt/linux-x86_64/bin/` 下的
`clang`、`clang++`、`ld.lld`、`llvm-ar` 等批量做 qemu wrapper，
再用 qemu 跑 `cmake` / `ninja` 编译那三个 C 文件。

**预估：15–45 分钟，且不保证一次成功。**

---

## 建议

| 你的情况 | 选哪个 |
|---|---|
| 不想折腾账号，只想快点拿到 APK | **方案一** |
| 愿意给一个临时 token，想让我全程代劳 | **方案二** |
| 完全不想联网/用 GitHub | **方案三** |

我的推荐是 **方案二**：一次配置，以后每次改完 UI 说一声我就帮你推，自动出包。
