{"id":13498327,"url":"https://github.com/alexzaitsev/apk-dependency-graph","last_synced_at":"2025-04-05T00:08:04.486Z","repository":{"id":49365852,"uuid":"67691466","full_name":"alexzaitsev/apk-dependency-graph","owner":"alexzaitsev","description":"Android class dependency visualizer. This tool helps to visualize the current state of the project.","archived":false,"fork":false,"pushed_at":"2021-05-25T20:23:37.000Z","size":23756,"stargazers_count":752,"open_issues_count":7,"forks_count":70,"subscribers_count":24,"default_branch":"master","last_synced_at":"2024-10-11T02:49:26.283Z","etag":null,"topics":["android","android-dependency-visualizer","apk","apk-dependency-graph","architecture","decompile","dependency-injection","smali"],"latest_commit_sha":null,"homepage":"","language":"Java","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/alexzaitsev.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}},"created_at":"2016-09-08T10:01:35.000Z","updated_at":"2024-09-24T05:08:23.000Z","dependencies_parsed_at":"2022-09-24T02:51:01.747Z","dependency_job_id":null,"html_url":"https://github.com/alexzaitsev/apk-dependency-graph","commit_stats":null,"previous_names":[],"tags_count":15,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexzaitsev%2Fapk-dependency-graph","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexzaitsev%2Fapk-dependency-graph/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexzaitsev%2Fapk-dependency-graph/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexzaitsev%2Fapk-dependency-graph/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/alexzaitsev","download_url":"https://codeload.github.com/alexzaitsev/apk-dependency-graph/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247266564,"owners_count":20910836,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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","android-dependency-visualizer","apk","apk-dependency-graph","architecture","decompile","dependency-injection","smali"],"created_at":"2024-07-31T21:00:22.251Z","updated_at":"2025-04-05T00:08:04.469Z","avatar_url":"https://github.com/alexzaitsev.png","language":"Java","funding_links":[],"categories":["Tools"],"sub_categories":["Static Analysis Tools"],"readme":"# Apk Dependency Graph (ADG)\n\n[![Build Status](https://travis-ci.org/alexzaitsev/apk-dependency-graph.svg?branch=master)](https://travis-ci.org/alexzaitsev/apk-dependency-graph)\n[![version](https://img.shields.io/github/tag/alexzaitsev/apk-dependency-graph.svg?color=brightgreen\u0026label=version)](https://github.com/alexzaitsev/apk-dependency-graph/releases) [![Android Arsenal](https://img.shields.io/badge/Android%20Arsenal-apk--dependency--graph-blue.svg?style=flat)](http://android-arsenal.com/details/1/4411)\n\n# The repo is not supported anymore\n\nClass dependency visualizer. Only `apk` file is needed.  \nClass coupling is one of the significant code metrics that shows how easy is to change, maintain and test the code. This tool helps to view whole picture of the project.\n\n**Table of contents**\n* [Usage](#Usage)\n* [Compile](#Compile)\n* [Examples](#Examples)\n* [Demo](#Demo)\n* [Contributors](#Contributors)\n* [Credits](#Credits)\n\n## Usage\n\nSome helpful scripts are prepared for you. All you need to do is to download and unpack [the latest release](https://github.com/alexzaitsev/apk-dependency-graph/releases) and type the next command in your command line:  \n\n*For Windows*:\n\n```shell\nrun.bat full\\path\\to\\the\\apk\\app-release.apk full\\path\\to\\the\\filterset.json\n```\n\nWhere:\n* `run.bat` is a path to script in your local repository\n* `full\\path\\to\\the\\apk\\app-release.apk` is a full path to the apk file you want to analize\n* `full\\path\\to\\the\\filterset.json` is a full path to the filterset file\n\nThe tool is provided with the [default filterset](https://github.com/alexzaitsev/apk-dependency-graph/blob/master/filters/default.json). However, you're **highly encouraged** to customize it. Read [filter instructions](https://github.com/alexzaitsev/apk-dependency-graph/blob/master/filters/instructions.txt) for the details.\n\n*For Unix*:\n\n```shell\n./run.sh full/path/to/the/apk/app-release.apk full/path/to/the/filterset.json\n```\n\nWait until the command finishes:\n\n```shell\nBaksmaling classes.dex...\nAnalyzing dependencies...\nSuccess! Now open index.html in your browser.\n```\n\nIt will decompile your apk and create `output/apk-file-name` folder in the same folder where the script is. After this it will analyze the smali code and generate `gui/analyzed.js` file which contains all dependencies.  \n**Now open `gui/index.html` in your browser and enjoy!**\n\n## Compile\n\nAt least **Java 8** is needed to compile and run the `jar` file.\n\nWays to compile `build/jar/apk-dependency-graph.jar`:\n\n`\u003e\u003e gradle build` (Gradle 5.0 or newer)  \n`\u003e\u003e gradlew build` (Gradle Wrapper)  \n\nClasses will be generated to `build/classes` folder and jar file will appear onto `build/libs` folder.\n\n###### To get more information please check our [wiki page](https://github.com/alexzaitsev/apk-dependency-graph/wiki).\n\n## Examples\n\nHere is the sample of good architecture with low class coupling:  \n![Good sample](image-good-example.jpg)\n\nAnd this one looks like a spaghetti:  \n![Good sample](image-bad-example.jpg)\n\nDoes your project look like the first or the second picture? :)\n\n## Demo\n\nWatch [demo video](https://www.youtube.com/watch?v=rw501tvT4ko).\n\n## Contributors\n\nI want to say thank you to all the people who made even tiny pull request. This project is intended to improve current state of Android architecture all over the world so each detail is important. In the [contributors page](https://github.com/alexzaitsev/apk-dependency-graph/graphs/contributors) you can find a list of people who have found some time to improve this tool.\n\n## Credits\n\nThere is the same tool for iOS: \u003chttps://github.com/PaulTaykalo/objc-dependency-visualizer\u003e  \nI have used `gui/index.html` of that project. Thanks Paul for the great tool.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falexzaitsev%2Fapk-dependency-graph","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falexzaitsev%2Fapk-dependency-graph","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falexzaitsev%2Fapk-dependency-graph/lists"}