{"id":17880805,"url":"https://github.com/2bab/caliper","last_synced_at":"2026-03-09T04:07:35.206Z","repository":{"id":65303765,"uuid":"492214220","full_name":"2BAB/Caliper","owner":"2BAB","description":"A monitor \u0026 controller for Android sensitive permissions/api calls based on bytecode transformation.","archived":false,"fork":false,"pushed_at":"2023-12-30T02:27:34.000Z","size":438,"stargazers_count":16,"open_issues_count":2,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-11T06:23:00.401Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/2BAB.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"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}},"created_at":"2022-05-14T12:46:51.000Z","updated_at":"2025-01-11T02:07:32.000Z","dependencies_parsed_at":"2023-12-30T03:28:01.087Z","dependency_job_id":"2e1474c1-d09e-4b6d-8d74-cd0697bb6211","html_url":"https://github.com/2BAB/Caliper","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/2BAB/Caliper","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/2BAB%2FCaliper","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/2BAB%2FCaliper/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/2BAB%2FCaliper/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/2BAB%2FCaliper/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/2BAB","download_url":"https://codeload.github.com/2BAB/Caliper/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/2BAB%2FCaliper/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30282732,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-09T02:57:19.223Z","status":"ssl_error","status_checked_at":"2026-03-09T02:56:26.373Z","response_time":61,"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":[],"created_at":"2024-10-28T12:28:41.155Z","updated_at":"2026-03-09T04:07:35.188Z","avatar_url":"https://github.com/2BAB.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Caliper\n\n[![Maven Central](https://maven-badges.herokuapp.com/maven-central/me.2bab/caliper-gradle-plugin/badge.svg)](https://search.maven.org/artifact/me.2bab/caliper-gradle-plugin)\n[![Actions Status](https://github.com/2bab/Caliper/workflows/CI/badge.svg)](https://github.com/2bab/Caliper/actions)\n[![Apache 2](https://img.shields.io/badge/License-Apache%202-brightgreen.svg)](https://www.apache.org/licenses/LICENSE-2.0)\n\n\n🚧 **It's currently under incubating...**\n\nA monitor \u0026 controller for Android sensitive permissions/api calls based on bytecode transformation.\n\nIt supports adding custom proxy rules to intercept sensitive api calls with a single annotation like below:\n\n```kotlin\nobject ActivityProxy {\n    @CaliperMethodProxy(\n        className = \"android/app/Activity\",\n        methodName = \"requestPermissions\",\n        opcode = ASMOpcodes.INVOKEVIRTUAL\n    )\n    @JvmStatic\n    fun requestPermissions(activity: Activity, permissions: Array\u003cString\u003e, requestCode: Int) {\n        activity.requestPermissions(permissions, requestCode)\n    }\n}\n```\n\nNow all `Activity#requestPermissions` calls will be forwarded to the proxy method.\n\n## Integration\n\nPlease navigate to [Integration Guide](./integration.md) for full details.\n\n## Compatible Specification\n\nCaliper is only supported \u0026 tested on latest 2 Minor versions of Android Gradle Plugin.\n\n**Changelog** can be found from the [Releases](https://github.com/2BAB/Caliper/releases).\n    \n| AGP Version | Recommended Gradle Version | Compiled Kotlin Version |   Compiled Kotlin Version    | Latest Support Version |\n|:-----------:|:--------------------------:|:-----------------------:|:----------------------------:|:----------------------:|\n|    8.0.x    |           8.0.2+           |         1.7.22          |         1.7.22-1.0.8         |         0.2.2          |\n\n\n## Git Commit Check\n\nCheck this [link](https://medium.com/walmartlabs/check-out-these-5-git-tips-before-your-next-commit-c1c7a5ae34d1) to\nmake sure everyone will make a **meaningful** commit message.\n\nSo far we haven't added any hook tool, but follow the regex below:\n\n```\n(chore|feat|docs|fix|refactor|style|test|hack|release)(:)( )(.{0,80})\n```\n\n## Credits\n\n- The design of interceptor rules (`@CaliperProxyXyz`) was inspired by [allenymt/PrivacySentry](https://github.com/allenymt/PrivacySentry).\n- The Kotlin code-analyzer forked from [bennyhuo/kotlin-code-analyzer](https://github.com/bennyhuo/kotlin-code-analyzer). \n\n## License\n\n\u003e\n\u003e Copyright 2022-2023 2BAB\n\u003e\n\u003e Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\n\u003e\n\u003e   http://www.apache.org/licenses/LICENSE-2.0\n\u003e\n\u003e Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F2bab%2Fcaliper","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F2bab%2Fcaliper","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F2bab%2Fcaliper/lists"}