{"id":20263486,"url":"https://github.com/opengapps/aosp_build","last_synced_at":"2026-01-25T08:31:16.369Z","repository":{"id":40523798,"uuid":"44772826","full_name":"opengapps/aosp_build","owner":"opengapps","description":"AOSP Build system compatible version of Open GApps","archived":false,"fork":false,"pushed_at":"2023-12-25T06:56:20.000Z","size":320,"stargazers_count":320,"open_issues_count":38,"forks_count":156,"subscribers_count":41,"default_branch":"master","last_synced_at":"2025-03-03T19:59:17.820Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Makefile","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/opengapps.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","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":"2015-10-22T20:56:55.000Z","updated_at":"2025-02-03T14:02:28.000Z","dependencies_parsed_at":"2024-11-14T11:36:42.479Z","dependency_job_id":"c8647556-0278-45b6-9aa3-3f70f93a6cfe","html_url":"https://github.com/opengapps/aosp_build","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/opengapps/aosp_build","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opengapps%2Faosp_build","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opengapps%2Faosp_build/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opengapps%2Faosp_build/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opengapps%2Faosp_build/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/opengapps","download_url":"https://codeload.github.com/opengapps/aosp_build/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opengapps%2Faosp_build/sbom","scorecard":{"id":709446,"data":{"date":"2025-08-11","repo":{"name":"github.com/opengapps/aosp_build","commit":"816160a352a46fc08d50dcbcd88a02df977312aa"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.3,"checks":[{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Code-Review","score":10,"reason":"all changesets reviewed","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE.txt:0","Info: FSF or OSI recognized license: GNU General Public License v3.0: LICENSE.txt:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 30 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-22T07:43:08.411Z","repository_id":40523798,"created_at":"2025-08-22T07:43:08.412Z","updated_at":"2025-08-22T07:43:08.412Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28749298,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-25T08:31:04.260Z","status":"ssl_error","status_checked_at":"2026-01-25T08:30:28.859Z","response_time":113,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5: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":"2024-11-14T11:35:20.354Z","updated_at":"2026-01-25T08:31:16.353Z","avatar_url":"https://github.com/opengapps.png","language":"Makefile","funding_links":[],"categories":[],"sub_categories":[],"readme":"# OpenGApps AOSP based build system\n\n## ++Infrastructure Issues++\n\n**05-Nov-2019**  Gitlab maintenance: we've recreated all of our package repos\n(`all, arm, arm64, x86, x86_64`) from scratch. Please make sure to:\n- install `git-lfs` (more info [here](https://git-lfs.github.com/)) since we're now using it\n- clean and do a fresh pull before building\n\n**25-Feb-2019**  Please see [Ilya Danilkin's blog\npost](https://opengapps.org/blog/post/2019/02/17/github-situation/) on\nthe main OpenGapps project page that explains GitHub infrastructure\nissues that affected certain opengapps projects:\n\nhttps://opengapps.org/blog/post/2019/02/17/github-situation/\n\nIn short, the git-remote has changed for the projects `all, arm,\narm64, x86, x86_64`.  You should update your manifest entries for\nthose projects (see the updated example below that uses the remote\n\"gitlab\").\n\nMore discussion on this issue can be found here:\n\nhttps://github.com/opengapps/opengapps/issues/719\n\n## Disclaimer\n1. **Use this at your own risk.** Cyanogenmod received a cease and desist letter from Google when they included Google Apps in their ROM. See: [A Note on Google Apps for Android](http://android-developers.blogspot.com/2009/09/note-on-google-apps-for-android.html)\n2. **This project is in no way affiliated with, sponsored by, or related to Google.**\n\n## Getting started\n**1. Add the build system, and the wanted sources to your manifest.**\n\nFind your manifest file (check inside `${ANDROID_BUILD_TOP}/.repo/manifests/`)\nand add the following towards the end:\n```xml\n\u003cremote name=\"opengapps\" fetch=\"https://github.com/opengapps/\"  /\u003e\n\u003cremote name=\"opengapps-gitlab\" fetch=\"https://gitlab.opengapps.org/opengapps/\"  /\u003e\n\n\u003cproject path=\"vendor/opengapps/build\" name=\"aosp_build\" revision=\"master\" remote=\"opengapps\" /\u003e\n\n\u003cproject path=\"vendor/opengapps/sources/all\" name=\"all\" clone-depth=\"1\" revision=\"master\" remote=\"opengapps-gitlab\" /\u003e\n\n\u003c!-- arm64 depends on arm --\u003e\n\u003cproject path=\"vendor/opengapps/sources/arm\" name=\"arm\" clone-depth=\"1\" revision=\"master\" remote=\"opengapps-gitlab\" /\u003e\n\u003cproject path=\"vendor/opengapps/sources/arm64\" name=\"arm64\" clone-depth=\"1\" revision=\"master\" remote=\"opengapps-gitlab\" /\u003e\n\n\u003cproject path=\"vendor/opengapps/sources/x86\" name=\"x86\" clone-depth=\"1\" revision=\"master\" remote=\"opengapps-gitlab\" /\u003e\n\u003cproject path=\"vendor/opengapps/sources/x86_64\" name=\"x86_64\" clone-depth=\"1\" revision=\"master\" remote=\"opengapps-gitlab\" /\u003e\n```\n\n**2. Set the desired OpenGapps variant**\n\nIn your `device/manufacturer/product/device.mk` file, in the beginning, add:\n```makefile\nGAPPS_VARIANT := \u003cvariant\u003e\n```\n\nwhere `\u003cvariant\u003e` is one of the [package types](https://github.com/opengapps/opengapps/wiki/Package-Comparison) in lowercase. E.g:\n\n```makefile\nGAPPS_VARIANT := stock\n```\n\n**3. Include the opengapps-packages.mk file**\n\nThe `opengapps-packages.mk` file will make the Android build system build the necessary `PRODUCT_PACKAGES`, and include the necessary `PRODUCT_COPY_FILES`.\n\nIn `device/manufacturer/product/device.mk` file, towards the end, add:\n```makefile\n$(call inherit-product, vendor/opengapps/build/opengapps-packages.mk)\n```\n\n**4. Install git LFS and pull in all dependencies**\n\n```bash\n# More info: https://github.com/git-lfs/git-lfs/blob/master/INSTALLING.md\n# Apt/deb\nsudo apt install git-lfs\n# Yum/rpm\nsudo yum install git-lfs\n# on macOS\nbrew install git-lfs\n\ngit lfs install\nrepo forall -c git lfs pull\n```\n\n**5. Build Android**\n\n## Customizations\n### Adding extra packages\nYou can add packages from versions higher then your set version. E.g. if you want to include `Chrome`, but you use `GAPPS_VARIANT := micro`\n\nIn your `device/manufacturer/product/device.mk` just add, for example:\n\n```makefile\nGAPPS_PRODUCT_PACKAGES += Chrome\n```\n\nThis uses the module name. You can find the module name for a package by checking `vendor/opengapps/build/modules/` and look at the `LOCAL_MODULE` value.\n\n### Excluding packages\nYou can exclude certain packages from the list of packages associated with your selected OpenGapps variant. E.g. if you have `GAPPS_VARIANT := stock`\nand want all those apps installed except for `Hangouts`, then in your `device/manufacturer/product/device.mk` just add:\n\n```makefile\nGAPPS_EXCLUDED_PACKAGES := Hangouts\n```\n\n### Force stock package overrides\nYou can force GApps packages to override the stock packages.\nThis can be defined in two ways inside `device/manufacturer/product/device.mk`.\n\nFor all package:\n\n```makefile\nGAPPS_FORCE_PACKAGE_OVERRIDES := true\n```\n\nIf you want to include WebViewGoogle on a non-stock build you need:\n\n```makefile\nGAPPS_FORCE_WEBVIEW_OVERRIDES := true\n```\n\nIf you want to include Messenger on a non-stock build you need:\n\n```makefile\nGAPPS_FORCE_MMS_OVERRIDES := true\n```\n\nIf you want to include Google Dialer on a non-stock build you need:\n\n```makefile\nGAPPS_FORCE_DIALER_OVERRIDES := true\n```\n\nIf you want to include Chrome on a non-full build you need:\n\n```makefile\nGAPPS_FORCE_BROWSER_OVERRIDES := true\n```\n\nPixelLauncher is the default launcher in Oreo builds (and newer); in\nbuilds older than Oreo, the default launcher is GoogleNow.  If\ndesired, then you can force PixelLauncher to be used by setting the\nfollowing variable:\n\n```makefile\nGAPPS_FORCE_PIXEL_LAUNCHER := true\n```\n\nOn a per-app basis, add the GApps package to `GAPPS_PACKAGE_OVERRIDES`.\nExample:\n\n```makefile\nGAPPS_PACKAGE_OVERRIDES := Chrome\n```\n\n### Disable stock packages overrides\nYou can tell the GApps packages not to override the stock packages.\nThis can be defined inside `device/manufacturer/product/device.mk` by adding the GApps package to `GAPPS_BYPASS_PACKAGE_OVERRIDES`.\nExample:\n\n```makefile\nGAPPS_BYPASS_PACKAGE_OVERRIDES := Chrome\n```\n\n### Force the system to get the correct DPI package for your device\nBy default, the latest package version will be selected with the closest DPI.\nYou can force the system to select either a matching DPI package or \"nodpi\" package even if it is not the latest version.\n\nThis can be defined inside `device/manufacturer/product/device.mk` using:\n\n```makefile\nGAPPS_FORCE_MATCHING_DPI := true\n```\n\n### DEX pre-optimization\nIt is possible to build Android with dex preoptimization. This results in a quicker boot time, at the cost of additional storage used on `/system`.\n\nThis is normally done by setting the value:\n```makefile\nWITH_DEXPREOPT := true\n```\n\nin `BoardConfig.mk`. This will, by default, if set to true, also enable DEX Preoptimization for Google Apps.\n\nYou can disable this entirely by setting:\n```makefile\nDONT_DEXPREOPT_PREBUILTS := true\n```\n\n## How it works\n\nWhen building in an AOSP tree, the build system processes the file `device/manufacturer/product/device.mk` very early, which means that the file `vendor/opengapps/build/opengapps-packages.mk` is also processed very early.\nThis causes two special build \"functions\" (generic build rules) to be defined before any Android.mk files are read:\n\n```makefile\nBUILD_GAPPS_PREBUILT_APK # - for apps\nBUILD_GAPPS_PREBUILT_SHARED_LIBRARY # - for shared libraries\n```\n\nThe definitions use the already existing AOSP build infrastructure for prebuilt APKs and SHARED_LIBRARYs, but remove a lot of the boilerplate.\n\nThe build rules take care of locating the correct APK/libraries in an architecture-independent way. The AOSP based build system already prioritizes SoC architecture. E.g. if it finds an apk in `sources/arm64` and `sources/arm`, it will automatically prioritize `sources/arm64`.\n\nThe APK rule will also scan the APK for any libraries, and if it finds libraries it will get the AOSP build system to automatically extract them and place them at the expected place.\n\n## Caveats\n### Some modules are missing overrides\nWith reference to the [package comparison](https://github.com/opengapps/opengapps/wiki/Package-Comparison), currently only package overrides has been setup for a `GAPPS_VARIANT` of `micro` or lower, + `Chrome`.\n\nPull requests to add package overrides for more modules is welcome. See `modules/Chrome/Android.mk` for an example.\n\n### Chrome on Lollipop requires an extra patch\nRun these commands:\n```bash\ncd build\ncurl https://raw.githubusercontent.com/opengapps/aosp_build/master/patches/Lollipop/0001-Fix-Chrome.patch | git am -\n```\n\n(Patch only tested on 5.1.1 r37).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopengapps%2Faosp_build","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fopengapps%2Faosp_build","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopengapps%2Faosp_build/lists"}