프로젝트 소개
AutoMorpheBuilder는 Morphe 패치, morphe-desktop, APKEditor를 사용해 패치된 Android APK를 빌드하는 GitHub Actions 파이프라인입니다. 결과물은 서명되고 앱별로 버전이 부여되며 Obtainium이 업데이트를 추적할 수 있는 형식으로 제공됩니다. 개인 사용을 위한 포크가 권장되며, 앱을 추가하거나 제거할 때는 config.json의 patch_repos만 편집하면 되고 워크플로우는 변경할 필요가 없습니다.
README에는 YouTube, YouTube Music, Reddit, Sofascore, Twitch, NZB360, AIDA64, Mimo, Flightradar24를 포함한 테스트된 앱들이 각 패키지 이름 및 업스트림 패치 저장소와 함께 나열되어 있습니다. 법적 및 보안 고지 사항은 이 프로젝트가 APKMirror, APKPure 같은 소스에서 제3자 애플리케이션을 다운로드해 수정한다는 점, 각 앱의 라이선스와 현지 법률 준수는 사용자의 책임이라는 점, 모든 APK가 빌드 시점에 구성된 업스트림 소스에서 가져와지므로 저작권이 있는 APK가 호스팅되거나 재배포되지 않는다는 점을 설명합니다. 빌드는 사용자 본인의 키스토어로 서명되며, 해당 비밀 값들은 프로덕션 자격 증명으로 취급됩니다.
네 개의 워크플로우가 문서화되어 있습니다. morphe-build.yml은 UTC 기준 매일 05:15와 수동 실행으로 작동합니다. check-versions는 최신 태그를 확인하고 이미 릴리스가 존재하는 앱은 건너뛰며, 앱별 매트릭스 빌드가 APK를 다운로드하고 패치를 적용한 뒤 서명합니다. create-release는 앱당 하나의 GitHub Release를 게시하고 가장 오래된 것을 정리하여 앱당 2개를 유지합니다. update-patches.yml은 업스트림 패치 저장소에서 patches.json을 갱신하고, 새 패치는 기본적으로 활성화하며 기존 토글 상태는 보존합니다. ci.yml은 풀 리퀘스트와 main 브랜치 푸시 시 npm ci, eslint, jest를 실행합니다. codeql.yml은 JavaScript/TypeScript 및 Actions에 대한 정적 보안 분석을 수행합니다.
릴리스 태그는 app-vbase-version-patches-version 패턴을 따르며, 예를 들면 youtube-v20.44.38-v1.24.0-dev.8.apk입니다. README에서는 저장소를 대상으로 앱마다 하나의 Obtainium 항목을 만들고 앱 이름과 일치하는 Release Tag Filter를 설정하는 방법을 설명하며, 테스트된 앱들에 대해 바로 사용할 수 있는 Obtainium 링크를 제공합니다.
필수 비밀 값으로는 KEYSTORE_BASE64와 KEYSTORE_PASSWORD가 있으며, 서명된 빌드가 강제되므로 둘 다 필수입니다. KEY_ALIAS와 KEY_PASSWORD는 선택 사항이고, APKMIRROR_API_USER와 APKMIRROR_API_PASS는 Playwright 대체 경로를 건너뛰는 데 선택적으로 사용됩니다. APK 다운로드는 다중 소스 대체 방식을 사용합니다. 사전 다운로드된 도구 APK, URL 캐시, 구성된 download_urls를 차례로 사용한 뒤, APKPure용 apkeep, 자격 증명이 설정된 경우 APKMirror-API, Chromium 대체 경로를 사용하는 APKMirror 스크레이퍼를 통한 병렬 확인을 진행합니다. XAPK, APKM, APKS 같은 분할 패키지는 .apk로 저장되고 확장자가 아니라 내용으로 감지되며, 병합 후 내부의 base.apk가 검증됩니다.
APK 선택 시 config.json의 아키텍처를 우선 적용하고 기본값은 arm64-v8a이며, APKMirror에는 DPI 기본 설정을 적용합니다. 분할 패키지는 APKEditor로 병합하거나 dex를 포함한 APK 추출 방식으로 대체하며, classes dex 파일이 없는 APK는 거부합니다. 서명 단계에서는 키스토어를 디코딩하고 비밀번호, 항목 비밀번호, 항목 별칭 옵션과 함께 morphe-desktop patch에 전달합니다. morphe-desktop이 PKCS12, JKS, BKS를 감지해 내부적으로 변환하도록 하고, 패치된 APK를 제자리에서 서명하며, 서명 오류가 발생하면 서명되지 않은 대체 경로 없이 즉시 실패합니다.
README에는 classes dex 누락, 버전을 확인할 수 없는 경우, 잘못된 키스토어 비밀번호, 잘못 표시된 아키텍처 번들, Obtainium이 업데이트를 찾지 못하는 경우를 포함한 일반적인 실패의 원인과 해결 방법이 문서화되어 있습니다. 추가 문서에서는 구성 필드, 파이프라인 아키텍처, check-versions에서 빌드를 거쳐 create-release로 이어지는 작업 그래프, 문제 해결 목록, 릴리스 프로세스와 롤백, 포크 및 비밀 값 설정 절차, 기여 지침, 보안 공개 정책을 다룹니다. 이 프로젝트의 라이선스는 GPL-3.0입니다.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.