{"id":35732754,"url":"https://github.com/MorpheApp/morphe-library","last_synced_at":"2026-01-12T14:01:13.872Z","repository":{"id":331650699,"uuid":"1106044108","full_name":"MorpheApp/morphe-library","owner":"MorpheApp","description":null,"archived":false,"fork":false,"pushed_at":"2026-01-10T15:31:43.000Z","size":893,"stargazers_count":9,"open_issues_count":1,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-01-11T04:32:35.853Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://morphe.software","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/MorpheApp.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":"NOTICE","maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"custom":"https://morphe.software/donate"}},"created_at":"2025-11-28T14:38:57.000Z","updated_at":"2026-01-10T15:29:17.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/MorpheApp/morphe-library","commit_stats":null,"previous_names":["morpheapp/morphe-library"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/MorpheApp/morphe-library","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MorpheApp%2Fmorphe-library","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MorpheApp%2Fmorphe-library/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MorpheApp%2Fmorphe-library/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MorpheApp%2Fmorphe-library/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MorpheApp","download_url":"https://codeload.github.com/MorpheApp/morphe-library/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MorpheApp%2Fmorphe-library/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28340211,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-12T12:22:26.515Z","status":"ssl_error","status_checked_at":"2026-01-12T12:22:10.856Z","response_time":98,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-01-06T12:00:40.470Z","updated_at":"2026-01-12T14:01:13.812Z","avatar_url":"https://github.com/MorpheApp.png","language":"Kotlin","readme":"\u003cdiv align=\"center\"\u003e \n\u003cpicture\u003e\n    \u003csource\n      width=\"512px\"\n      media=\"(prefers-color-scheme: dark)\"\n      srcset=\"https://raw.githubusercontent.com/MorpheApp/.github/refs/heads/main/profile/assets/morphe-wordmark/morphe_wordmark_dark.svg\"\n    /\u003e\n    \u003cimg \n      width=\"512px\"\n      src=\"https://raw.githubusercontent.com/MorpheApp/.github/refs/heads/main/profile/assets/morphe-wordmark/morphe_wordmark_light.svg\"\n    /\u003e\n\u003c/picture\u003e\n\n[![Website badge](https://img.shields.io/badge/Website-gray.svg?logo=data:image/svg%2bxml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ29weXJpZ2h0IDIwMjUgTW9ycGhlLiBUaGlzIGlzIGNvcHlyaWdodGVkIGNvbnRlbnQsIGFuZCBub3QgbGljZW5zZWQgdW5kZXIgb3BlbiBzb3VyY2UgdGVybXMuCiAgICAgU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9Nb3JwaGVBcHAvbW9ycGhlLWJyYW5kaW5nIC0tPgoKPHN2ZwogICB3aWR0aD0iNTEyIgogICBoZWlnaHQ9IjUxMiIKICAgdmlld0JveD0iMCAwIDUxMiA1MTIiCiAgIHZlcnNpb249IjEuMSIKICAgaWQ9InN2ZzIiCiAgIHNvZGlwb2RpOmRvY25hbWU9Im1vcnBoZV9sb2dvX2xpZ2h0LnN2ZyIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMS40LjIgKGViZjBlOTQwZDAsIDIwMjUtMDUtMDgpIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogIDxzb2RpcG9kaTpuYW1lZHZpZXcKICAgICBpZD0ibmFtZWR2aWV3MiIKICAgICBwYWdlY29sb3I9IiNmZmZmZmYiCiAgICAgYm9yZGVyY29sb3I9IiMwMDAwMDAiCiAgICAgYm9yZGVyb3BhY2l0eT0iMC4yNSIKICAgICBpbmtzY2FwZTpzaG93cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTpwYWdlb3BhY2l0eT0iMC4wIgogICAgIGlua3NjYXBlOnBhZ2VjaGVja2VyYm9hcmQ9IjAiCiAgICAgaW5rc2NhcGU6ZGVza2NvbG9yPSIjZDFkMWQxIgogICAgIGlua3NjYXBlOnpvb209IjEuMTU0Mjk2OSIKICAgICBpbmtzY2FwZTpjeD0iMjU2IgogICAgIGlua3NjYXBlOmN5PSIyNTYiCiAgICAgaW5rc2NhcGU6d2luZG93LXdpZHRoPSIxNDQwIgogICAgIGlua3NjYXBlOndpbmRvdy1oZWlnaHQ9IjgzNiIKICAgICBpbmtzY2FwZTp3aW5kb3cteD0iMCIKICAgICBpbmtzY2FwZTp3aW5kb3cteT0iMCIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIxIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzIiPgogICAgPGlua3NjYXBlOnBhZ2UKICAgICAgIHg9IjAiCiAgICAgICB5PSIwIgogICAgICAgd2lkdGg9IjUxMiIKICAgICAgIGhlaWdodD0iNTEyIgogICAgICAgaWQ9InBhZ2UyIgogICAgICAgbWFyZ2luPSIwIgogICAgICAgYmxlZWQ9IjAiIC8+CiAgPC9zb2RpcG9kaTpuYW1lZHZpZXc+CiAgPGRlZnMKICAgICBpZD0iZGVmczIiIC8+CiAgPCEtLSBMZXR0ZXIgLS0+CiAgPGcKICAgICBpZD0iTGV0dGVyIgogICAgIHN0eWxlPSJmaWxsOiNmZmZmZmY7ZmlsbC1vcGFjaXR5OjEiPgogICAgPHBhdGgKICAgICAgIGlkPSJMZWZ0IgogICAgICAgZD0ibSAxMjMsMTQwIGMgLTIxLDAgLTM5LDE3IC00MCwzOCB2IDE5MiBjIDEsMjEgMTksMzggNDAsMzggMjEsMCAzOSwtMTcgNDAsLTM4IFYgMTc4IGMgLTEsLTIxIC0xOSwtMzggLTQwLC0zOCB6IgogICAgICAgZmlsbD0iIzFFNUFBOCIKICAgICAgIHN0eWxlPSJmaWxsOiNmZmZmZmY7ZmlsbC1vcGFjaXR5OjEiIC8+CiAgICA8cGF0aAogICAgICAgaWQ9IlJpZ2h0IgogICAgICAgZD0ibSAzNDksMjg1IHYgODUgYyAxLDIxIDE5LDM4IDQwLDM4IDIxLDAgMzksLTE3IDQwLC0zOCBWIDE4MiBjIC0xMSwtMTQgLTc0LDYzIC04MCwxMDMgeiIKICAgICAgIGZpbGw9IiMwMEFGQUUiCiAgICAgICBzdHlsZT0iZmlsbDojZmZmZmZmO2ZpbGwtb3BhY2l0eToxIiAvPgogICAgPHBhdGgKICAgICAgIGlkPSJNaWRkbGUiCiAgICAgICBkPSJtIDEyNywxMDggYyAtMzQsMCAtNDQsMjUgLTQ0LDQwIHYgNTQgYyAzMCwtMzMgNzUsMjcgODAsMzMgMjgsMzIgNDQsODcgOTMsODkgNDgsLTIgNjcsLTU2IDkzLC04OSAwLDAgNDUsLTc0IDgwLC04MCAwLC0yOCAtMTEsLTQ3IC00NCwtNDcgLTM0LDAgLTU4LDUwIC03NSw3MiAtMTcsMjIgLTI1LDQ2IC01NCw0NiAtMjksMCAtMzgsLTI1IC01NCwtNDYgLTE3LC0yMiAtNDEsLTcyIC03NSwtNzIgeiIKICAgICAgIGZpbGw9InVybCgjbGluZWFyR3JhZGllbnQyKSIKICAgICAgIHN0eWxlPSJmaWxsOiNmZmZmZmY7ZmlsbC1vcGFjaXR5OjEiIC8+CiAgPC9nPgo8L3N2Zz4K\u0026style=for-the-badge)](https://morphe.software) [![Documentation badge](https://img.shields.io/badge/Documentation-gray?style=for-the-badge\u0026logo=github)](https://github.com/MorpheApp/morphe-documentation#readme) [![Subreddit badge](https://img.shields.io/badge/Reddit-gray?style=for-the-badge\u0026logo=reddit\u0026logoColor=white)](https://www.reddit.com/r/MorpheApp) [![X badge](https://img.shields.io/badge/X_-gray?style=for-the-badge\u0026logo=x)](https://x.com/MorpheApp) [![Crowdin badge](https://img.shields.io/badge/Translations-gray?style=for-the-badge\u0026logo=crowdin)](https://morphe.software/translate)\n\u003cbr\u003e\n\u003c/div\u003e\n\n# 📚 Morphe Library\nLibrary containing common utilities for Morphe.\n\n\u0026nbsp;\n## ❓ About\n\nMorphe Library powers projects such as [Morphe Manager](https://github.com/MorpheApp/morphe-manager),\n[Morphe CLI](https://github.com/MorpheApp/morphe-cli) with common utilities and functionalities\nby providing shared code.\n\nMorphe Library is based off the prior work of [ReVanced](https://github.com/ReVanced/revanced-library). All modifications made by Morphe, along with their dates, can be found in the Git history.\n\n## 💪 Features\n\nSome of the features the Morphe Library provides are:\n\n- 📝 **Signing APKs**: Read and write keystores, and sign APK files\n- 🧩 **Common utility functions**: Various APIs for Morphe patches such as JSON serialization,\n  reading and setting patch options, calculating the most common compatible version for a set of patches and more\n- 💾 **Install and uninstall APKs**: Install and uninstall APK files via ADB or locally,\n  the Android package manager, or by mounting using root permissions\n- 📦 **Repackage patched files to an APK**: Apply patched files from\n  [Morphe Patcher](https://github.com/morphe/morphe-patcher) to an APK file, and align \u0026 sign the APK file automatically\n\n## 🚀 How to get started\n\nTo use Morphe Library in your project, follow these steps:\n\n1. [Add the repository](https://docs.github.com/en/packages/working-with-a-github-packages-registry/working-with-the-gradle-registry#using-a-published-package)\n   to your project\n2. Add the dependency to your project:\n\n   ```kt\n    dependencies {\n        implementation(\"app.morphe:morphe-library:{$version}\")\n    }\n   ```\n\n## 📚 Everything else\n\n### 📙 Contributing\n\nThank you for considering contributing to Morphe Library.\nYou can find the contribution guidelines [here](CONTRIBUTING.md).\n\n### 🛠️ Building\n\nTo build Morphe Library,\nyou can follow the [Morphe documentation](https://github.com/MorpheApp/morphe-documentation).\n\n## 📜 License\n\nMorphe Library is licensed under the [GNU General Public License v3.0](LICENSE), with additional conditions under GPLv3 Section 7:\n\n- **Name Restriction (7c):** The name **\"Morphe\"** may not be used for derivative works.  \n  Derivatives must adopt a distinct identity unrelated to \"Morphe.\"\n\nSee the [LICENSE](LICENSE) file for the full GPLv3 terms and the [NOTICE](NOTICE) file for full conditions of GPLv3 Section 7.\n","funding_links":["https://morphe.software/donate"],"categories":["🔨 Projects"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FMorpheApp%2Fmorphe-library","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FMorpheApp%2Fmorphe-library","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FMorpheApp%2Fmorphe-library/lists"}