본문으로 건너뛰기
cccskills
무료GitHub에 공개

vita-app-port

Port Android applications and non-game tools to the PS Vita (PSVita / PS TV) as VPK homebrew using the Android .so loader or native VitaSDK builds. Use when the user asks to port an Android app, utility, manager, emulator frontend, or CLI tool to Vita, HENkaku, Vita3K, or ux0:data.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

Yannis100/vita-port-skill스타 17(GitHub 17 + cccskills 0)

실행 점수 미검증

설치 방법 보기

포함된 파일(2)

  • SKILL.md6.8 KB
  • references/app-runtime.md5.8 KB

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

Porting an Android App or Tool to the PS Vita

This skill is the application companion to the vita-port skill. It ports non-game apps: file managers, emulator frontends, dev tools, productivity and system utilities. Games stay in vita-port. The two skills share the same repository, so the vita-port references (toolchain, so-loader, debugging, packaging) are installed alongside and are reused here.

Most of the work is identical to a game port: same toolchain, same VPK packaging, same debug flow. The differences are in triage, platform layer, and input. Those differences are documented here.

Ground rules

  • Legal scope. Port only apps the user has the right to build (open source, or their own). The VPK must never contain a commercial app's data or Sony modules such as libshacccg.suprx. End users copy their own data to ux0:data/<app>/.
  • State assumptions about the user's files instead of asserting them. Unless you have read the file, say "assuming your copy is version X (check with ...)" for APK version, ABI, or data path.
  • Say what you did not verify. You can build a VPK here, but you cannot run it on hardware. Tell the user which claims are build-verified and which are untested on a Vita.

Workflow

Do the steps in order. Each ends with something checkable.

1. Triage: is it feasible, and which route?

Search for a portable core before triaging by language. The route can flip based on which codebase you port. Before deciding "Java/Kotlin-only → not feasible" or "no native .so → stop", check whether a platform-agnostic C/C++ reimplementation of the app's logic exists (forks, format-translation projects, apps with a core submodule separated from their Android/JS UI). Model: PKSM (FlagBrew) — a save manager whose core/ (PKSM-Core) is pure portable C++ with no Android/3DS guards, whose shared common/ layer adds only UI- and net-agnostic logic, and whose platform code is a thin front-end (3ds/); its own test suite (tests/) builds on a plain host g++ with no console SDK, proving the core is portable. If such a core exists, port the core and write a Vita UI for it — that is a native-VitaSDK route, not a decline.

Check the APK's ABI and entry points first. Use the scripts from the vita-port skill:

python3 ~/.roo/skills/vita-port/scripts/audit_source.py <source-dir>

Pick the route from this table:

SituationRoute
Android APK with an armeabi-v7a .so and no game-style graphics.so loader (soloader-boilerplate), FalsoJNI; no GLES needed
Android APK with an armeabi-v7a .so that draws through GLES.so loader + vitaGL; see references/so-loader.md
Open-source C/C++ app or CLI (Android, or Unix-like)native VitaSDK build (stock SDK), SDL2 or plain console
Java/Kotlin-only app (no native .so)not feasible: no Dalvik on Vita; say so and stop
arm64-v8a-only appnot feasible: Vita is ARMv7; say so and stop
Unity-based app (libunity.so)decline: the same Unity constraint as games applies

Decline or scope down, and say why, when the app needs: a Dalvik/JVM, 64-bit-only code, Google Play Services (GMS), foreground services, or more than roughly 365 MiB of RAM.

2. Toolchain

  • .so loader route: VitaSDK-softfp (Android armeabi-v7a is soft-float ABI); see references/toolchain.md in the vita-port skill.
  • Native route: stock VitaSDK, arm-vita-eabi-gcc.

Verify with check_env.sh from the vita-port skill. If no SDK can be installed, still write the build files and tell the user the build was not run.

3. Build skeleton that produces a VPK

Reuse the vita-port skill's skeleton: assets/CMakeLists.vita.txt guarded by if(VITA), and placeholder LiveArea images via make_placeholder_assets.py. Get a trivial window or hello-world program through cmake --build and check_vpk.py before touching the app's code.

4. Platform layer for apps

The app-specific replacements, in references/app-runtime.md:

  • No game loop, no 60 FPS target; vsync off is acceptable for tools. Screen can sleep after idle.
  • Input: many apps are touch-only. Map 1920x1080 front-touch to 960x544. Back button = Android Back.
  • No physical shoulder/Stick mapping is needed unless the app uses it.
  • Text entry: use the Vita IME (SceIme) for dialogs and the on-screen keyboard (see app-runtime.md).
  • Data paths: app0: is read-only; write to ux0:data/<name>/. Redirect Android paths (/proc/cpuinfo, /dev/urandom, /sdcard/) to ux0:data/<name>/ equivalents.
  • AAssetManager bridge: map assets/<path> to ux0:data/<name>/assets/.
  • Networking: load SCE_SYSMODULE_NET and handle permissions (see app-runtime.md).
  • No background services: Vita apps are foreground only. State this in the README.

5. Graphics (only if the app draws)

  • SDL2 or plain software: nothing beyond the 960x544 target.
  • GLES through the .so loader: follow references/vitagl.md (ES 1.00 dialect, bound attribute locations, memory pools, libshacccg.suprx note).

6. Package and check

cmake -S . -B build -DCMAKE_BUILD_TYPE=Release && cmake --build build
python3 ~/.roo/skills/vita-port/scripts/check_vpk.py build/<name>.vpk

Title ID exactly 9 characters, livear area present, indexed-colour PNGs. Same rules as games.

7. Test and debug

  • Vita3K first look. Note the caveat from vita-port: some builds do not run under Vita3K at all; it is a convenience, never proof. On hardware use vitacompanion and vita-parse-core.
  • App-specific errors: missing kubridge (error 0x80101051), AAsset path not found, and IME or dialog crashes. See references/so-loader.md and references/debugging.md (vita-port skill).

8. Hand-off

Deliver build instructions plus a README with an end-user section (exact ux0:data/<name>/ layout, required modules like kubridge, where users get legal data) and a developer section (build commands, dependencies). Credit upstream projects and keep licences. Use a unique 9-character title ID of the form XXXXYYYYY.

Reference files

FileRead it when
references/app-runtime.mdapp-specific platform layer: IME, dialogs, permissions, paths, input
vita-port skill references/toolchain.mdinstalling VitaSDK / VitaSDK-softfp, cross-compiling
vita-port skill references/so-loader.mdthe .so loader route, symbol tables, kubridge
vita-port skill references/debugging.mdinstall errors, crash dumps, Vita3K vs hardware
vita-port skill scripts/check_vpk.pyVPK validation (title ID, SELF, LiveArea)

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

vita-port

무료

Port games and game engines to the Sony PS Vita (PSVita / PS TV) as VPK homebrew using VitaSDK, vdpm, vitaGL, SDL2 and GXM. Use this whenever the user mentions PS Vita, PSVita, Vita homebrew, VPK, VitaSDK, vitaGL, HENkaku, Vita3K, ux0:data, or asks to "port X to Vita" or get a game or engine running on a Cortex-A9 ARM handheld, even if they do not name the tools. Covers feasibility triage, CMake and toolchain setup, heap/stack/memory budget, OpenGL to vitaGL, input mapping, LiveArea packaging, debugging crashes, and release conventions.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

Yannis100/vita-port-skill172026년 10월 26일 업데이트

Yannis100의 스킬 모두 보기

이 스킬의 문제 신고