{"id":29179752,"url":"https://github.com/trendyol/android-dev-tools","last_synced_at":"2026-03-16T15:04:47.554Z","repository":{"id":40520166,"uuid":"365201013","full_name":"Trendyol/android-dev-tools","owner":"Trendyol","description":"Android QA/Debug tools to speed up and streamline the development progress.","archived":false,"fork":false,"pushed_at":"2025-02-24T12:17:37.000Z","size":10106,"stargazers_count":112,"open_issues_count":3,"forks_count":6,"subscribers_count":36,"default_branch":"develop","last_synced_at":"2025-03-22T05:33:00.664Z","etag":null,"topics":["android-debug-tools","android-library","autofill-service","http-inspection","http-interceptor"],"latest_commit_sha":null,"homepage":"","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/Trendyol.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":"2021-05-07T10:43:41.000Z","updated_at":"2025-03-06T22:29:54.000Z","dependencies_parsed_at":"2024-10-20T14:44:38.879Z","dependency_job_id":null,"html_url":"https://github.com/Trendyol/android-dev-tools","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Trendyol/android-dev-tools","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Trendyol%2Fandroid-dev-tools","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Trendyol%2Fandroid-dev-tools/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Trendyol%2Fandroid-dev-tools/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Trendyol%2Fandroid-dev-tools/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Trendyol","download_url":"https://codeload.github.com/Trendyol/android-dev-tools/tar.gz/refs/heads/develop","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Trendyol%2Fandroid-dev-tools/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":263021821,"owners_count":23401148,"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-debug-tools","android-library","autofill-service","http-inspection","http-interceptor"],"created_at":"2025-07-01T19:06:24.725Z","updated_at":"2026-03-16T15:04:47.546Z","avatar_url":"https://github.com/Trendyol.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"## Android Dev Tools\n\nAndroid Dev Tools is a library that contains various QA/Debug tools to speed up and streamline the development progress.\n\n[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)\n![Maven Central](https://img.shields.io/maven-central/v/com.trendyol.android.devtools/autofill-service?label=Autofill%20Service\u0026color=%2373c248)\n![Maven Central](https://img.shields.io/maven-central/v/com.trendyol.android.devtools/analytics-logger?label=Analytics%20Logger\u0026color=%2373c248)\n![Maven Central](https://img.shields.io/maven-central/v/com.trendyol.android.devtools/http-inspector?label=Http%20Inspector\u0026color=%2373c248)\n![Maven Central](https://img.shields.io/maven-central/v/com.trendyol.android.devtools/environment-manager?label=Environment%20Manager\u0026color=%2373c248)\n![Maven Central](https://img.shields.io/maven-central/v/com.trendyol.android.devtools/debug-menu?label=Debug%20Menu\u0026color=%2373c248)\n![Maven Central](https://img.shields.io/maven-central/v/com.trendyol.android.devtools/deeplink-launcher?label=Deeplink%20Launcher\u0026color=%2373c248)\n![Maven Central](https://img.shields.io/maven-central/v/com.trendyol.android.devtools/sharedpref-manager?label=SharedPref%20Manager\u0026color=%2373c248)\n\n## Tools ##\n* [Autofill Service](#autofill-service)\n* [Analytics Logger](#analytics-logger)\n* [Http Inspector (Alpha)](#http-inspector-alpha)\n* [Environment Manager](#environment-manager)\n* [Debug Menu](#debug-menu)\n* [DeepLink Launcher](#deeplink-launcher)\n* [SharedPref Manager](#sharedpref-manager)\n\n## Autofill Service\nAutofill Service allows developers and QA to fill form inputs automatically with predefined form data.\n\n### How it Works?\nIt observes both activity and fragment lifecycle events via application class to detect layout inflations.\nAfter each inflation, it seeks for determined input views in the inflated layout.\nIf it has all required inputs, then shows the autofill action.\nAutofill data that suitable with inflated form inputs are shown in the selection dialog.\n\n### Demo\n\u003ctable\u003e\n \t\u003ctr\u003e\n  \t\t\u003ctd\u003e\u003cimg src=\"/art/autofill_service_1.png\" width=\"200\" /\u003e\u003c/td\u003e\n  \t\t\u003ctd\u003e\u003cimg src=\"/art/autofill_service_2.png\" width=\"200\" /\u003e\u003c/td\u003e\n  \t\t\u003ctd\u003e\u003cimg src=\"/art/autofill_service_3.png\" width=\"200\" /\u003e\u003c/td\u003e\n  \t\t\u003ctd\u003e\u003cimg src=\"/art/autofill_service_4.png\" width=\"200\" /\u003e\u003c/td\u003e\n \t\u003c/tr\u003e\n\u003c/table\u003e\n\n### Usage\nAutofill will automatically started if added as dependency. It checks `autofill.json` file on assets directory of the\nproject. If you want to disable Autofill to be initialized, you can modify `AndroidManifest.xml` like below on `main` or\n desired flavor/variant.\n\n```xml\n\u003c?xml version=\"1.0\" encoding=\"utf-8\"?\u003e\n\u003cmanifest xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    xmlns:tools=\"http://schemas.android.com/tools\"\u003e\n\n    \u003capplication\u003e\n\n        \u003cprovider\n            android:name=\"androidx.startup.InitializationProvider\"\n            android:authorities=\"${applicationId}.androidx-startup\"\n            tools:node=\"remove\"\u003e\n\n            \u003cmeta-data\n                android:name=\"com.trendyol.android.devtools.autofillservice.AutofillInitializer\"\n                android:value=\"androidx.startup\" /\u003e\n        \u003c/provider\u003e\n    \u003c/application\u003e\n\u003c/manifest\u003e\n```\n\n### Configuration\nConfiguration Json file can be located in `/[variant/flavor or main]/assets` folder. You can define autofill data by\nfollowing this structure. You should also note that the order of the defined form field resource id's and order of\ninput values must match.\n\n```json\n{\n  \"forms\": [\n    {\n      \"fields\": [\"inputEmail\", \"inputPassword\"],\n      \"matchAnyField\": true,\n      \"categories\": {\n        \"Temporary Users\": [\n          { \"description\": \"Temporary test user.\", \"values\": [\"test@mail.com\", \"123456\"] },\n          { \"description\": \"Temporary tool user.\", \"values\": [\"tools@mail.com\", \"123456\"] }\n        ],\n        \"Test Users\": [\n          { \"description\": \"Test regular user.\", \"values\": [\"test@mail.com\", \"123456\"] },\n          { \"description\": \"Test tool user.\", \"values\": [\"tools@mail.com\", \"123456\"] }\n        ]\n      }\n    }\n  ]\n}\n```\n\n- `forms` object declares the forms that will be cheched on activity/fragment screen.\n- `fields` are input view ids.\n- `matchAnyField` is optional flag to enable the feature whether if all `fields` should be exist or not. Default is `false`.\n- `categories` declares inputs, you can provide multiple category and multiple input values.\n\n### Setup\nSince Autofill not requires any initialization code, all you need to add the dependency on desired variant/flavor like\nbelow.\n\n```kotlin\ndependencies {\n\n    debugImplementation(\"com.trendyol.android.devtools:autofill-service:$version\")\n}\n```\n\n![Maven Central](https://img.shields.io/maven-central/v/com.trendyol.android.devtools/autofill-service?color=%2373c248)\n\n## Analytics Logger\nAnalytics Logger allows to log \u0026 inspect analytics events sent by client.\n\n### Demo\n\u003ctable\u003e\n \t\u003ctr\u003e\n  \t\t\u003ctd\u003e\u003cimg src=\"/art/analytics_logger_1.png\" width=\"200\" /\u003e\u003c/td\u003e\n  \t\t\u003ctd\u003e\u003cimg src=\"/art/analytics_logger_2.png\" width=\"200\" /\u003e\u003c/td\u003e\n  \t\t\u003ctd\u003e\u003cimg src=\"/art/analytics_logger_3.png\" width=\"200\" /\u003e\u003c/td\u003e\n \t\u003c/tr\u003e\n\u003c/table\u003e\n\n### Usage\n```kotlin\nAnalyticsLogger.init(applicationContext)\n\nAnalyticsLogger.report(\n    key = \"eventKey\",\n    value = \"{\\\"category\\\": \\\"Cart\\\", \\\"data\\\": \\\"TestData\\\" }\", // Should be Json string.\n    platform = \"EventPlatform\",\n)\n// or\nAnalyticsLogger.report(\n    key = \"eventKey\",\n    value = \"{\\\"category\\\": \\\"Cart\\\", \\\"data\\\": \\\"TestData\\\" }\", // Should be Json string.\n    platform = \"EventPlatform\",\n    isSuccess = true, // send your event result\n)\n```\n\n### Setup\n```gradle\n\"com.trendyol.android.devtools:analytics-logger:$version\"\n\"com.trendyol.android.devtools:analytics-logger-no-op:$version\"\n```\n![Maven Central](https://img.shields.io/maven-central/v/com.trendyol.android.devtools/analytics-logger?color=%2373c248)\n\n## Http Inspector (Alpha)\nHttp Inspector provides an OkHttp interceptor and web interface to inspect, manipulate in realtime and mock HTTP request and responses.\n\nYou can access the web client with `http://deviceip:5001`. If you are running on virtual a device, you need to forward port by `adb forward tcp:5001 tcp:5001`.\n\u003ctable\u003e\n \t\u003ctr\u003e\n  \t\t\u003ctd\u003e\u003cimg src=\"/art/http_inspector_1.png\" width=\"650\" /\u003e\u003c/td\u003e\n \t\u003c/tr\u003e\n\u003c/table\u003e\n\n### How it Works\n\u003ctable\u003e\n \t\u003ctr\u003e\n  \t\t\u003ctd\u003e\u003cimg src=\"/art/http_inspector_4.png\" width=\"650\" /\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n\u003c/table\u003e\nAny request passing through the interceptor is held in the request queue to sync with each other.\nHeld requests are being sent to the web interface via Ktor local webserver.\nAfter doing any changes in the response data using web interface, it waits for the acceptance, then sends manipulated response back to the request queue.\nThe actual response data is replaced with the manipulated one and reflected to the application.\n\n### Mocking Requests\n\u003ctable\u003e\n \t\u003ctr\u003e\n  \t\t\u003ctd\u003e\u003cimg src=\"/art/http_inspector_2.png\" width=\"400\" /\u003e\u003c/td\u003e\n  \t\t\u003ctd\u003e\u003cimg src=\"/art/http_inspector_3.png\" width=\"400\" /\u003e\u003c/td\u003e\n \t\u003c/tr\u003e\n\u003c/table\u003e\nWith this feature, we can imitate the API by preparing mock request and response data for the REST API that has not been prepared yet.\nIt provides a web interface where we can create mock request and response data, and allows us to enable/disable the previously added mock data.\nThe point to be considered is which requests will be answered with mock data rather than going to the real API is decided by comparing the URL, method and request body data of the request in the real request and mock data. If this data is completely matched, the mock response will be served to the client.\n\n### Usage\n```kotlin\nval client = OkHttpClient.Builder()\n    .addInterceptor(MockInterceptor(context))\n    .build()\n```\n\n### Setup\n```gradle\n\"com.trendyol.android.devtools:http-inspector:$version\"\n\"com.trendyol.android.devtools:http-inspector-no-op:$version\"\n```\n![Maven Central](https://img.shields.io/maven-central/v/com.trendyol.android.devtools/http-inspector?color=%2373c248)\n\n## Environment Manager\nEnvironment Manager provides environment selection dialog can be opened from the app notifications with predefined environment data.\n\n### Setup\n```gradle\n\"com.trendyol.android.devtools:environment-manager:$version\"\n```\n![Maven Central](https://img.shields.io/maven-central/v/com.trendyol.android.devtools/environment-manager?color=%2373c248)\n\n## Debug Menu\nDebug Menu provides a debug page build with predefined custom action and events.\n\n### Setup\n```gradle\n\"com.trendyol.android.devtools:debug-menu:$version\"\n```\n![Maven Central](https://img.shields.io/maven-central/v/com.trendyol.android.devtools/debug-menu?color=%2373c248)\n\n## DeepLink Launcher(Beta)\nDeepLink Launcher allows you, trigger deepLinks, and keep triggered deepLinks in history.\n\nWhen a deepLink launched, it will be recorded to roomDB. And recorded datas will be listed under the History Tab.\n\nAnd also you can import your deepLinks data to DeepLink Launcher. They will be listed under the *APP'S DEEPLINK* tab.\n\n### Demo\n\u003ctable\u003e\n \t\u003ctr\u003e\n  \t\t\u003ctd\u003e\u003cimg src=\"/art/deeplink_launcher_1.png\" width=\"200\" /\u003e\u003c/td\u003e\n  \t\t\u003ctd\u003e\u003cimg src=\"/art/deeplink_launcher_2.png\" width=\"200\" /\u003e\u003c/td\u003e\n  \t\t\u003ctd\u003e\u003cimg src=\"/art/deeplink_launcher_3.png\" width=\"200\" /\u003e\u003c/td\u003e\n  \t\t\u003ctd\u003e\u003cimg src=\"/art/deeplink_launcher_4.png\" width=\"200\" /\u003e\u003c/td\u003e\n \t\u003c/tr\u003e\n\u003c/table\u003e\n\n### Initialize\n\nYou need to initialize it first\n```kotlin\nDeepLinkLauncher.init(this)\n```\n\nIf you have a deepLink json file which is includes your app deepLinks, you can init them like that.\nThat's an optional area.\n```kotlin\nDeepLinkLauncher.importAppDeepLinks(jsonString)\n```\n\nFor importing external list to DeepLink Launcher, your json format be like that sample:\n```json\n{\n    \"deepLinks\": [\n        \"dl://?Page=Home\u0026Tab=Man\",\n        \"dl://?Page=AppLink\u0026Data=1\",\n        \"dl://?Page=AppLink\u0026Data=2\"\n    ]\n}\n```\n\n### Usage\n\nAnd just call this function to open DeepLink Launcher screen.\n```kotlin\nDeepLinkLauncher.show()\n```\n\n### Setup\n```gradle\n\"com.trendyol.android.devtools:deeplink-launcher:$version\"\n```\n![Maven Central](https://img.shields.io/maven-central/v/com.trendyol.android.devtools/deeplink-launcher?color=%2373c248)\n\n## SharedPref Manager\nSharedPref Manager allows you manage shared preferences\n\n### Demo\n\u003ctable\u003e\n \t\u003ctr\u003e\n  \t\t\u003ctd\u003e\u003cimg src=\"/art/sharedpref_manager_1.png\" width=\"200\" /\u003e\u003c/td\u003e\n  \t\t\u003ctd\u003e\u003cimg src=\"/art/sharedpref_manager_2.png\" width=\"200\" /\u003e\u003c/td\u003e\n  \t\t\u003ctd\u003e\u003cimg src=\"/art/sharedpref_manager_3.png\" width=\"200\" /\u003e\u003c/td\u003e\n  \t\t\u003ctd\u003e\u003cimg src=\"/art/sharedpref_manager_4.png\" width=\"200\" /\u003e\u003c/td\u003e\n \t\u003c/tr\u003e\n\u003c/table\u003e\n\n### Initialize\n\nYou need to initialize the library with with your `android.app.Application` instance.\n```kotlin\nSharedPrefManager.init(this)\n```\n\n### Usage\n\nAnd just call this function to open SharedPref Manager screen.\n```kotlin\nSharedPrefManager.show(\"shared_pref_name\")\n```\n\n### Setup\n\n```gradle\n\"com.trendyol.android.devtools:sharedpref-manager:$version\"\n```\n\n![Maven Central](https://img.shields.io/maven-central/v/com.trendyol.android.devtools/sharedpref-manager?color=%2373c248)\n\nLicense\n--------\n\n\n    Copyright 2022 Trendyol.com\n\n    Licensed under the Apache License, Version 2.0 (the \"License\");\n    you may not use this file except in compliance with the License.\n    You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n    Unless required by applicable law or agreed to in writing, software\n    distributed under the License is distributed on an \"AS IS\" BASIS,\n    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n    See the License for the specific language governing permissions and\n    limitations under the License.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftrendyol%2Fandroid-dev-tools","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftrendyol%2Fandroid-dev-tools","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftrendyol%2Fandroid-dev-tools/lists"}