Download PKU harness

PKU harness runs on Android 7.0 or later. It is free and open source.

v1.0.24

Latest version

Released Nov 13, 2026

  • Download APKpku-harness-1.0.24-arm64-v8a.apk67.0 MBFor arm64-v8a phones
  • Download APKpku-harness-1.0.24-armeabi-v7a.apk54.5 MBFor armeabi-v7a phones
  • Download APKpku-harness-1.0.24-x86_64.apk68.9 MBFor x86_64 phones

Android will ask you to allow your browser to install apps. Install packages only from this page or from the GitHub release page.

View this release on GitHub

Verify the file

Compare these values with the file you downloaded. On a computer, you can compute the checksum with sha256sum pku-harness-*.apk.

File SHA-256
4f50 8d94 4a59 7500 5066 f600 b823 03b5 4c6e 6a0b a825 ece7 fb75 e630 31b7 5974
Signing certificate SHA-256
185c 94c8 14cf d570 5cb9 62e7 227f 8608 38d7 ddd8 ab7a c5c2 83ce 8532 681f 5cd9

Every release is signed with this key. If you installed a build with a different signature, for example one you built from source, uninstall it first.

Version code
25
Runtime fingerprint (for over-the-air updates)
03702684e617
Commit
fc58a1a

Requirements

Android 7.0 or later
API level 24 or higher. Most phones need the arm64-v8a APK; armeabi-v7a is for older 32-bit phones and x86_64 for emulators. An iOS version is planned.
A PKU account
The student ID and password you use for IAAA, the university’s unified sign-in. They are stored only in your phone’s secure storage.
An API key for an AI model
DeepSeek is the default. You can also enter the address and key of any OpenAI-compatible service.
The campus network, for some services
A few services, such as the finance portal, only respond on the campus network. The app connects to them directly, without a proxy.

How updates work

You install the APK once. After that, most updates are delivered inside the app.

  1. Install the APK

    Download it from this page or from GitHub. Each APK is built by GitHub Actions from a tagged commit and signed with the release key.

  2. Over-the-air updates

    Over-the-air (OTA) updates deliver new screens and bug fixes without a new APK. They come from our own update server. Our continuous integration (CI) builds them from public commits, and the maintainers sign them. The app rejects any update without a valid signature.

  3. Plugin updates

    Each plugin updates from the repository it was installed from. If an update asks for more permissions, the app asks you first.

  4. New APKs for native changes

    Changes such as new Android permissions or system features require a new APK. New APKs are published on this page and on GitHub.

iOS: the app already starts on an iPhone. Campus sign-in will work after the network module is ported to iOS.

All versions

GitHub Releases
  1. v1.0.24

    Nov 13, 2026Current
    Release notesFrom the GitHub release

    PKU harness v1.0.24 for Android 7.0+. Most phones need arm64-v8a; armeabi-v7a is for older 32-bit phones and x86_64 for emulators and x86 devices.

    更新内容

    • 离开应用或锁屏时,助手继续操作手机:任务进行中屏幕保持变暗常亮;按电源键熄屏会暂停,点亮屏幕后自动继续(无需解锁)
    • 助手需要你确认或接手时,会点亮屏幕并在锁屏上通知你,处理完通知才消失;接手最多等你 30 分钟
    • 新版本在后台下载:点“立即更新”后弹窗关闭,下载进度显示在通知栏,不打扰你使用应用;下载完成后点通知即可安装
    • 新设置“在 Wi-Fi 下自动下载更新”(默认开启):连上 Wi-Fi 时自动下载新版本,安装仍由你决定

    What's new

    • Copilot keeps working when you leave the app or lock the phone: the screen stays dimmed on during a task; pressing the power button pauses it, and it resumes when the screen turns on (no unlock needed)
    • When Copilot needs your approval or a handoff, it wakes the screen and shows a lock-screen notification that stays until you act; handoffs wait up to 30 minutes
    • New versions download in the background: tap Update now and the sheet closes, progress shows in the notification bar, and a notification lets you install when it's done
    • New setting "Download updates on Wi-Fi" (on by default): new versions download by themselves on Wi-Fi; installing is still your call
    versionCode25
    Signing certificate SHA-256185c94c814cfd5705cb962e7227f860838d7ddd8ab7ac5c283ce8532681f5cd9
    Runtime fingerprint (OTA)03702684e6175a0e87f110bd35f00c17bbb0735f
    Commitfc58a1a16da2fa02d2c130b8abe6e7cdb1b94844
    APKSHA-256
    pku-harness-1.0.24-arm64-v8a.apk4f508d944a5975005066f600b82303b54c6e6a0ba825ece7fb75e63031b75974
    pku-harness-1.0.24-armeabi-v7a.apk5ffab360125574b12f75edfdc2acf894f9f0e699e4f889c7f8a2c0b82d90ac8c
    pku-harness-1.0.24-x86_64.apk190a5fff5984b8462955eb98414fc313f44bdb56bb25198806df175ae579e1eb

    Built by GitHub Actions from this tag's commit. Every release is signed with the same key: an install signed differently (e.g. a debug build from source) must be uninstalled first. Later JS and plugin updates arrive over the air, signed by the maintainers.

  2. v1.0.23

    Nov 13, 2026
    Release notesFrom the GitHub release

    PKU harness v1.0.23 for Android 7.0+. Most phones need arm64-v8a; armeabi-v7a is for older 32-bit phones and x86_64 for emulators and x86 devices.

    更新内容

    • 回复语言跟随你的消息:用中文问就用中文答,即使应用界面是英文
    • 选择模型时可以设置思考强度:自动(规划任务时认真想,操作手机时快速想)、低、高、最高
    • 助手操作手机时更快:每一步的操作思考更少
    • 付款只需你来付:助手完成下单前的所有步骤,弹出支付宝或微信支付的付款界面时再交给你
    • 助手操作手机期间在本应用里打字,三星键盘不再需要每个键按两次
    • 浮窗:缩小后的小球更小,下拉通知栏或打开最近任务时不会再自己展开;浮窗两侧更紧凑;在本应用里不再显示浮窗
    • 对话请求更精简,缓存命中更高

    What's new

    • Replies follow the language you write in: ask in Chinese and the answer is in Chinese, even with the app in English
    • Choose how hard the AI thinks in the model picker: Auto (careful when planning, quick when operating your phone), Low, High or Max
    • Copilot is faster: less thinking between steps on your phone
    • You only pay: Copilot does every step of an order and hands over when the Alipay or WeChat Pay sheet opens
    • Typing in PKU harness while Copilot works no longer needs two taps per key on Samsung Keyboard
    • Floating panel: a smaller ball that stays a ball when you pull down notifications or open Recents; tighter sides; hidden inside PKU harness
    • Leaner requests with better prompt caching
    versionCode24
    Signing certificate SHA-256185c94c814cfd5705cb962e7227f860838d7ddd8ab7ac5c283ce8532681f5cd9
    Runtime fingerprint (OTA)0e8224fbbe6ac66246ce12e9d5a1f1fc6a07ed8b
    Commitd5cc609ca3450b5a5939ef81e180b1a97d9177f0
    APKSHA-256
    pku-harness-1.0.23-arm64-v8a.apk897b2ccca4037e173266361ccadad71c5ed9f832f100b6824d81588094bed912
    pku-harness-1.0.23-armeabi-v7a.apk74808454ba051a223389c58e19fe7c735cb48ce79a73aaf0d295a4662197c8c7
    pku-harness-1.0.23-x86_64.apkc06bf0d1207c39e3002f829f205fe01dfae0bf9e46d65d6fabb1a05e128af28f

    Built by GitHub Actions from this tag's commit. Every release is signed with the same key: an install signed differently (e.g. a debug build from source) must be uninstalled first. Later JS and plugin updates arrive over the air, signed by the maintainers.

  3. v1.0.22

    Nov 12, 2026
    Release notesFrom the GitHub release

    PKU harness v1.0.22 for Android 7.0+. Most phones need arm64-v8a; armeabi-v7a is for older 32-bit phones and x86_64 for emulators and x86 devices.

    更新内容

    • 直接提问就好:助手会自己找到合适的插件并加载,包括插件市场里你还没装的社区插件(安装仍需你确认)
    • 界面更简洁:去掉对话页的示例问题、欢迎流程中的插件选择、附件菜单里的“输入命令”(输入 / 仍可打开命令菜单);新装应用的看板只保留“今天”一张卡片
    • 欢迎流程仍会引导开启助手(Copilot)权限,可以跳过
    • 应用名统一写作 PKU harness

    What's new

    • Just ask: the assistant finds and loads the plugin it needs by itself, including community plugins from the marketplace you haven't installed yet (installing still asks you first)
    • A quieter app: no sample questions in a new chat, no plugin picker in the welcome flow, no Command row in the attach menu (typing / still opens the command menu); a new install's dashboard starts with just the Today card
    • The welcome flow still walks you through Copilot permissions, and you can skip it
    • The name is written PKU harness everywhere
    versionCode23
    Signing certificate SHA-256185c94c814cfd5705cb962e7227f860838d7ddd8ab7ac5c283ce8532681f5cd9
    Runtime fingerprint (OTA)f6299c4df27c2e37754774e0b1838617f8f30412
    Commit859801d918f3e345fc7a71b1bd41b2b55b6029ca
    APKSHA-256
    pku-harness-1.0.22-arm64-v8a.apkc32a265bc513fece5fbbef8c2c47944fdd71608cd7c54728136f1d92ca8c5d95
    pku-harness-1.0.22-armeabi-v7a.apk64550d6e96bbb125405c31bc1fd0e201960fc7e892f2d97ac0d9af2a07775de9
    pku-harness-1.0.22-x86_64.apk52ec22afc5053ec9dfe56c83e0e33ad4bc65f21eee164b4416fc90139fbc5667

    Built by GitHub Actions from this tag's commit. Every release is signed with the same key: an install signed differently (e.g. a debug build from source) must be uninstalled first. Later JS and plugin updates arrive over the air, signed by the maintainers.

  4. v1.0.21

    Nov 12, 2026
    Release notesFrom the GitHub release

    PKU Harness v1.0.21 for Android 7.0+. Most phones need arm64-v8a; armeabi-v7a is for older 32-bit phones and x86_64 for emulators and x86 devices.

    更新内容

    • 全新图标:燕园的小燕子取代原来的 P 字标志,桌面图标、启动画面、通知图标和应用内标志全部更新
    • 修复语音输入时转写内容较长、超过输入框高度后不跟随最新文字的问题:现在会自动展开到输入框最大高度,之后自动滚动显示最新的转写结果
    • 修复改名提醒后提醒被关闭(显示“已暂停”、不再提醒)的问题
    • 看板上的校车和食堂人流卡片在英文界面下显示英文

    What's new

    • New icon: a little swallow from Yanyuan replaces the old P mark on the home screen, splash screen, notifications and inside the app
    • Fixed voice input not following long transcriptions: the transcript now grows to the input's full height, then scrolls to keep the newest words in view
    • Fixed renaming a reminder switching it off (it showed “paused” and stopped firing)
    • The shuttle and canteen dashboard cards are in English when the app is in English
    versionCode22
    Signing certificate SHA-256185c94c814cfd5705cb962e7227f860838d7ddd8ab7ac5c283ce8532681f5cd9
    Runtime fingerprint (OTA)eab1723cc9b4b0e460138b9bd474becb53f5545e
    Commit55159dfc2e8163bad449be9e87c2a003ef205caf
    APKSHA-256
    pku-harness-1.0.21-arm64-v8a.apk599dd95d23953043b7c1ec12e71bc5b15c0159729e05ccf82610c7ecf4b8d4cb
    pku-harness-1.0.21-armeabi-v7a.apk9820d9c5bc1db6774c3cc0aeab857e2c8f2f6470fc7de10d0a3fcb1b519361a9
    pku-harness-1.0.21-x86_64.apkba591a04050da87423cfb151351fc48f6a0f844850c4204ee191687bbcedd33d

    Built by GitHub Actions from this tag's commit. Every release is signed with the same key: an install signed differently (e.g. a debug build from source) must be uninstalled first. Later JS and plugin updates arrive over the air, signed by the maintainers.

  5. v1.0.20

    Nov 12, 2026
    Release notesFrom the GitHub release

    PKU Harness v1.0.20 for Android 7.0+. Most phones need arm64-v8a; armeabi-v7a is for older 32-bit phones and x86_64 for emulators and x86 devices.

    更新内容

    • Copilot 的点按、滑动、滚动、滑块、输入和提交改由手机助手直接注入触摸和按键,不再通过无障碍操作(无障碍只用来读屏幕)。中文输入用粘贴,并在之后还原剪贴板
    • 滑块会按读回的数值再校正一次,设到的值更准确

    What's new

    • Copilot’s taps, swipes, scrolling, sliders, typing and submitting are now injected as touches and key presses by the phone helper instead of through accessibility actions (accessibility only reads the screen). Chinese text is pasted, and your clipboard is restored afterwards
    • Sliders correct themselves once from the value read back, so they land on the requested value
    versionCode21
    Signing certificate SHA-256185c94c814cfd5705cb962e7227f860838d7ddd8ab7ac5c283ce8532681f5cd9
    Runtime fingerprint (OTA)37bb6182d22a057d97a028c983cc925041979f00
    Commitcb53ff873407213ab72e343c680830b8b7eb2440
    APKSHA-256
    pku-harness-1.0.20-arm64-v8a.apkf365879db50085a076b61bb05156a80992b8a253b6b2d7b1086f287cb43361e5
    pku-harness-1.0.20-armeabi-v7a.apkdd417ebe0d37c8dc70b0ba6b39fd657e0fb832c9cc9c566777a25f29bded72c3
    pku-harness-1.0.20-x86_64.apkc29d459cc333d1cc85a517c7c2f0fc16b87590956891c9144087dd82094212fb

    Built by GitHub Actions from this tag's commit. Every release is signed with the same key: an install signed differently (e.g. a debug build from source) must be uninstalled first. Later JS and plugin updates arrive over the air, signed by the maintainers.

  6. v1.0.19

    Nov 12, 2026
    Release notesFrom the GitHub release

    PKU Harness v1.0.19 for Android 7.0+. Most phones need arm64-v8a; armeabi-v7a is for older 32-bit phones and x86_64 for emulators and x86 devices.

    更新内容

    • 移除上一版新增的两个「Copilot · 微信」无障碍服务,恢复为一个
    • Copilot 遇到微信拦截自动操作(界面读不到、截图被禁、输入无效)时,会直接告诉你是微信在阻止自动操作、需要你自己完成这一步,不再误报为“受保护页面”或反复重试

    What's new

    • Removed the two “Copilot · WeChat” accessibility services added in the previous version; there is one service again
    • When WeChat blocks automated operation (nothing readable, screenshots blocked, typing ignored), Copilot now says plainly that WeChat is blocking automation and that you need to do that step yourself, instead of calling it a “protected screen” or retrying
    versionCode20
    Signing certificate SHA-256185c94c814cfd5705cb962e7227f860838d7ddd8ab7ac5c283ce8532681f5cd9
    Runtime fingerprint (OTA)ed07eddab99b5473e606c0e6d542169091736a1f
    Commit7bd28ed07cffadb051d2cd4fa360313db44425b7
    APKSHA-256
    pku-harness-1.0.19-arm64-v8a.apk8c97795d2e3426322f90043525a3320c87c8b88c27cf799a2b541fe65167958a
    pku-harness-1.0.19-armeabi-v7a.apka66e0e6e18edad9c32a27f29cfae4841824d36fc1d03080ae5d2ea1c63094bf4
    pku-harness-1.0.19-x86_64.apkad93c6c409d70f1ba7bd59c6d656ea0717a026891e755113e22472a9eea974e0

    Built by GitHub Actions from this tag's commit. Every release is signed with the same key: an install signed differently (e.g. a debug build from source) must be uninstalled first. Later JS and plugin updates arrive over the air, signed by the maintainers.

  7. v1.0.18

    Nov 12, 2026
    Release notesFrom the GitHub release

    PKU Harness v1.0.18 for Android 7.0+. Most phones need arm64-v8a; armeabi-v7a is for older 32-bit phones and x86_64 for emulators and x86 devices.

    更新内容

    • 修复开启 Copilot 无障碍后,三星键盘等输入法每个键要点两次的问题:Copilot 平时用普通的服务名,只在操作微信时临时换成读屏服务名(先用 TalkMan,不够再用 TalkBack),交给你操作、离开微信或任务结束时立刻换回,你自己打字不再受影响
    • 系统「无障碍」列表里会多出「Copilot · 微信」两项,由 Copilot 自动开关,不需要手动打开

    What's new

    • Fixed keyboards such as Samsung Keyboard needing two taps per key while Copilot’s accessibility service is on: Copilot now runs under an ordinary service name and switches to a screen-reader name only while it operates WeChat (TalkMan first, TalkBack if needed), switching back as soon as it hands control to you, leaves WeChat or finishes, so your own typing is never affected
    • Android’s Accessibility list shows two extra “Copilot · WeChat” entries; Copilot turns them on and off by itself, so you never need to
    versionCode19
    Signing certificate SHA-256185c94c814cfd5705cb962e7227f860838d7ddd8ab7ac5c283ce8532681f5cd9
    Runtime fingerprint (OTA)7bfef25693174fe828a405a6125be8c58c223fd9
    Commitdf0dab70f22e727502639afb441cbeee87d7f98e
    APKSHA-256
    pku-harness-1.0.18-arm64-v8a.apkad6d43264c8987fc78861e7c474adebaac8f2c65b004665a19fb9a8ccffe4ce9
    pku-harness-1.0.18-armeabi-v7a.apkd45c6106a195a2c625af48f62e4f8c0017eba70df2796cd54dcaa6396695b03a
    pku-harness-1.0.18-x86_64.apkd8dc32532a1d17000b090f1a2ad6827c4932bf1ca53d5178daf1a8b5e0695a15

    Built by GitHub Actions from this tag's commit. Every release is signed with the same key: an install signed differently (e.g. a debug build from source) must be uninstalled first. Later JS and plugin updates arrive over the air, signed by the maintainers.

  8. v1.0.17

    Nov 11, 2026
    Release notesFrom the GitHub release

    PKU Harness v1.0.17 for Android 7.0+. Most phones need arm64-v8a; armeabi-v7a is for older 32-bit phones and x86_64 for emulators and x86 devices.

    更新内容

    • Copilot 每次操作前都会检查无障碍权限:被关闭(在系统设置里关掉,或被系统停掉)时会自动重新开启并继续任务,不再中途停止,也不会把它误判为“受保护页面”。无法自动开启时会直接告诉你去 系统设置 → 无障碍 打开
    • 欢迎页的 Copilot 一步列出它需要的权限(手机助手、无障碍、允许的 App),说明无障碍的用途,并可一键开启
    • 授权弹窗和底部面板出现时自动收起键盘,不再挡住按钮

    What's new

    • Copilot checks its accessibility permission before every action: if it was switched off (in system settings, or stopped by the system) it turns it back on and carries on with the task, instead of stopping or mistaking it for a “protected screen”. If it can’t, it tells you to turn it on in Settings → Accessibility
    • The welcome screen’s Copilot step lists what Copilot needs (phone helper, accessibility, allowed apps), explains what accessibility is for, and can turn it on in one tap
    • The keyboard closes when a permission prompt or bottom sheet appears, so it no longer covers the buttons
    versionCode18
    Signing certificate SHA-256185c94c814cfd5705cb962e7227f860838d7ddd8ab7ac5c283ce8532681f5cd9
    Runtime fingerprint (OTA)ed07eddab99b5473e606c0e6d542169091736a1f
    Commitd1a077ed676e0dc8070fd2a1096b623c59806621
    APKSHA-256
    pku-harness-1.0.17-arm64-v8a.apka250b494762f964fa3e652368faea7bd779b0701e21b6b84dcec7d0f632bc804
    pku-harness-1.0.17-armeabi-v7a.apk277b391a478f5978d044956de1e8b92950beb6a5b90baf5b4675b22fee28b47b
    pku-harness-1.0.17-x86_64.apkf103b305348e22016587b1982f5609b7da85b6259ad4d2d406354f3a160bf1d3

    Built by GitHub Actions from this tag's commit. Every release is signed with the same key: an install signed differently (e.g. a debug build from source) must be uninstalled first. Later JS and plugin updates arrive over the air, signed by the maintainers.

  9. v1.0.16

    Nov 11, 2026
    Release notesFrom the GitHub release

    PKU Harness v1.0.16 for Android 7.0+. Most phones need arm64-v8a; armeabi-v7a is for older 32-bit phones and x86_64 for emulators and x86 devices.

    更新内容

    • 取消单次回复的步骤上限:AI 会一直做到任务完成或你按停止,不再提示“已达到单次回复的步骤上限”。长任务(如 Copilot 点单)在上下文快满时会自动压缩后继续

    What's new

    • No more step limit per reply: the AI keeps going until the task is done or you stop it, without “Reached the step limit for one reply”. Long tasks (such as a Copilot order) are compacted automatically as the context fills, then continue
    versionCode17
    Signing certificate SHA-256185c94c814cfd5705cb962e7227f860838d7ddd8ab7ac5c283ce8532681f5cd9
    Runtime fingerprint (OTA)5c79004605acf0639bbdcd701329d249173d4179
    Commit8b7a93ba9c4de1e3199e12554ea46977d1e0f4ee
    APKSHA-256
    pku-harness-1.0.16-arm64-v8a.apk7636122c9cfb9de25e79acd376a7276aeb370afb10136ef96751ea12191f3724
    pku-harness-1.0.16-armeabi-v7a.apk4c45f9f309558ce21be7f37436a1176b992cca498a14deec13b1d8739520a297
    pku-harness-1.0.16-x86_64.apkf79503315cd4545ed633b019e18388409cdbb7a106cf2840cad6ac2dc5f3431d

    Built by GitHub Actions from this tag's commit. Every release is signed with the same key: an install signed differently (e.g. a debug build from source) must be uninstalled first. Later JS and plugin updates arrive over the air, signed by the maintainers.

  10. v1.0.15

    Nov 11, 2026
    Release notesFrom the GitHub release

    PKU Harness v1.0.15 for Android 7.0+. Most phones need arm64-v8a; armeabi-v7a is for older 32-bit phones and x86_64 for emulators and x86 devices.

    更新内容

    • 对话可以直接读文件:PDF、Word、Excel、PowerPoint 在手机上本地读成文字(不上传文件),长文档 AI 会按需翻页和搜索;音频文件由语音输入服务转写。扫描版 PDF、有密码或损坏的文件会说明原因
    • Copilot 完全接管手机:不再因“画面已变化(STALE)”拒绝点按,按钮原位置变了也会按原位置点;受保护的画面(如淘宝搜索页)可以读取和操作,只是不截图;修复误报“不在允许的应用内”;应用冷启动慢时会多等几次。仍会停下的只有:允许范围外的应用、密码输入框和付款(交给你确认)
    • AI 回答出现正文后,前面的工具调用记录自动折叠
    • 粘贴文本的预览才显示“移回输入框”

    What's new

    • Chats can read files: PDF, Word, Excel and PowerPoint are read into text on the phone (the file is not uploaded), and the AI pages through and searches long documents as needed; audio files are transcribed by the voice-input service. Scanned PDFs, password-protected and damaged files are refused with a reason
    • Copilot takes full control of the phone: no more “the screen changed (STALE)” refusals, and a button that moved is still tapped where it was; protected screens (such as Taobao’s search page) can be read and operated, just not screenshotted; fixed false “outside the allowed apps” errors; it waits longer for slow app starts. It still stops only for apps outside its allowed list, password fields and payments (handed to you)
    • Tool-call records fold away once the answer’s text appears
    • Only pasted text offers “Move back to input” in its preview
    versionCode16
    Signing certificate SHA-256185c94c814cfd5705cb962e7227f860838d7ddd8ab7ac5c283ce8532681f5cd9
    Runtime fingerprint (OTA)5c79004605acf0639bbdcd701329d249173d4179
    Commitaeb01c84a344d5ba87678e11b13be5ae872a0005
    APKSHA-256
    pku-harness-1.0.15-arm64-v8a.apk649d940edee9b34b47d837514c3e44cd3aafa824b3605c8d3ccd862873fb770f
    pku-harness-1.0.15-armeabi-v7a.apk6de9ca64ac1e3bea1bd87ff04efa104b477b6f14006f8acfa56fd3de771af90d
    pku-harness-1.0.15-x86_64.apk3703091b823871e35eadf9f6fd5f51001cd21a2ff463abd4833914b8d84cbc3d

    Built by GitHub Actions from this tag's commit. Every release is signed with the same key: an install signed differently (e.g. a debug build from source) must be uninstalled first. Later JS and plugin updates arrive over the air, signed by the maintainers.

Build from source

This section is for contributors and for anyone who prefers to compile the app. A build from source is signed with your own key, so uninstall the release APK first.

  1. 1

    Prepare your computer

    Install Bun, JDK 17 and the Android SDK. Connect a phone with USB debugging turned on, or start an emulator.

  2. 2

    Clone the repository with the plugins submodule

    The plugins are in the plugins/ submodule, so add --recurse-submodules.

    git clone --recurse-submodules \
      https://github.com/pkuinfo/pku-harness.git
    cd pku-harness
  3. 3

    Install dependencies

    The project uses Bun for all JavaScript tooling.

    bun install
  4. 4

    Build and install

    This command runs expo run:android. The first build takes a few minutes. After that, changes to the JavaScript code reload immediately.

    bun run android

If your computer uses a system proxy such as Clash, start the emulator without inheriting HTTP_PROXY. Otherwise the app cannot reach campus services. More details are in the README and the installation guide.