{"id":15391998,"url":"https://github.com/dhleong/staypuft","last_synced_at":"2026-04-28T20:33:05.416Z","repository":{"id":142683007,"uuid":"124236242","full_name":"dhleong/staypuft","owner":"dhleong","description":"Save the world, one oversized APK at a time","archived":false,"fork":false,"pushed_at":"2018-05-10T14:44:18.000Z","size":167,"stargazers_count":0,"open_issues_count":2,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-27T23:28:53.426Z","etag":null,"topics":["android","apk","expansion","library","rxjava2"],"latest_commit_sha":null,"homepage":null,"language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dhleong.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2018-03-07T12:58:26.000Z","updated_at":"2018-05-10T14:44:03.000Z","dependencies_parsed_at":null,"dependency_job_id":"94062e55-6605-42e3-88c9-de81ad04593b","html_url":"https://github.com/dhleong/staypuft","commit_stats":{"total_commits":29,"total_committers":2,"mean_commits":14.5,"dds":0.03448275862068961,"last_synced_commit":"f950eb9dbefefc35a4cf663637c461a112035c88"},"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/dhleong/staypuft","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dhleong%2Fstaypuft","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dhleong%2Fstaypuft/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dhleong%2Fstaypuft/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dhleong%2Fstaypuft/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dhleong","download_url":"https://codeload.github.com/dhleong/staypuft/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dhleong%2Fstaypuft/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32398632,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-28T19:38:08.556Z","status":"ssl_error","status_checked_at":"2026-04-28T19:37:55.688Z","response_time":56,"last_error":"SSL_read: 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":["android","apk","expansion","library","rxjava2"],"created_at":"2024-10-01T15:13:48.809Z","updated_at":"2026-04-28T20:33:05.397Z","avatar_url":"https://github.com/dhleong.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"# staypuft [![Release](https://jitpack.io/v/dhleong/staypuft.svg)][2] [![Build Status](http://img.shields.io/travis/dhleong/staypuft.svg?style=flat)](https://travis-ci.org/dhleong/staypuft)\n\n*Save the world, one oversized APK at a time*\n\n## What?\n\nStaypuft is a simple, reactive interface to Google's [APK Expansion Files][1] service.\n\nIt looks like this:\n\n```kotlin\nval apkx = Staypuft.getInstance(activity).setConfig(\n    DownloadConfig(\n        salt = // your custom salt array\n        publicKey = \"YOUR_PUBLIC_KEY base64\",\n        notifier = DefaultNotifier.withChannelId(\"expansions\")\n    )\n)\n```\n\nThat's it! If you want to get status updates, just subscribe to them:\n\n```kotlin\napkx.stateEvents.subscribe { event -\u003e\n    when (event) {\n        is DownloadState.Ready -\u003e {\n            // done!\n            println(\"Got main expansion file at: ${event.main}\")\n        }\n    }\n}\n```\n\n## How?\n\nStaypuft is distributed via [JitPack][2]. To use it, first add\nthe JitPack maven repo to your root build.gradle:\n\n```gradle\n    allprojects {\n        repositories {\n            ...\n            maven { url 'https://jitpack.io' }\n        }\n    }\n```\n\nThen add the dependency:\n\n```gradle\n   dependencies {\n         compile 'com.github.dhleong:staypuft:\u003cVERSION\u003e'\n   }\n```\n\nwhere `\u003cVERSION\u003e` is the latest version (shown in the badge at the\ntop of this page).\n\nStaypuft provides definitions for the services and permissions it needs,\nso you shouldn't even need to modify your manifest. Simply copy and paste\nthe code above into an appropriate place, fill in the `salt` and\n`publicKey` values, and you're good to go!\n\n[1]: https://developer.android.com/google/play/expansion-files.html\n[2]: https://jitpack.io/#dhleong/staypuft\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdhleong%2Fstaypuft","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdhleong%2Fstaypuft","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdhleong%2Fstaypuft/lists"}