{"id":19710819,"url":"https://github.com/rootstrap/android-base","last_synced_at":"2025-04-29T17:31:23.914Z","repository":{"id":41968320,"uuid":"184807903","full_name":"rootstrap/android-base","owner":"rootstrap","description":"Rootstrap Android Base project","archived":false,"fork":false,"pushed_at":"2022-09-26T13:12:37.000Z","size":5964,"stargazers_count":41,"open_issues_count":13,"forks_count":6,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-04-05T18:51:59.609Z","etag":null,"topics":["android","base-project","boilerplate","kotlin","kotlin-android","starter-project","template-project"],"latest_commit_sha":null,"homepage":"https://rootstrap.com","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/rootstrap.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":"CODEOWNERS","security":null,"support":null}},"created_at":"2019-05-03T19:12:43.000Z","updated_at":"2025-01-28T11:22:53.000Z","dependencies_parsed_at":"2023-01-18T13:16:01.605Z","dependency_job_id":null,"html_url":"https://github.com/rootstrap/android-base","commit_stats":null,"previous_names":[],"tags_count":0,"template":true,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rootstrap%2Fandroid-base","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rootstrap%2Fandroid-base/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rootstrap%2Fandroid-base/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rootstrap%2Fandroid-base/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rootstrap","download_url":"https://codeload.github.com/rootstrap/android-base/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251549220,"owners_count":21607370,"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","base-project","boilerplate","kotlin","kotlin-android","starter-project","template-project"],"created_at":"2024-11-11T22:08:35.592Z","updated_at":"2025-04-29T17:31:22.705Z","avatar_url":"https://github.com/rootstrap.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Maintainability](https://api.codeclimate.com/v1/badges/0178f2031dec54c86ff9/maintainability)](https://codeclimate.com/repos/5cd1d8c8af2ce517db016a12/maintainability)\n[![License](https://img.shields.io/github/license/rootstrap/ios-base.svg)](https://opensource.org/licenses/MIT)\n\n# Android Base\n\n**Android Base** is a boilerplate project created by Rootstrap for new projects using Kotlin 1.3.61. The main objective is helping any new projects jump start into feature development by providing a handful of functionalities.\n\n## Prerequisites\n- Android SDK\n- Android Studio\n- Firebase google-services.json file.\n- Change your release key information on the build.gradle:\n```\nsigningConfigs {\n    releaseConfig {\n        keyAlias setAlias\n        keyPassword setPassword\n        storeFile file(setStoreFile)\n        storePassword setStorePassword\n    }\n}\n```\n- Build the project with Android Studio.   \n\n## Installation\n1. Clone\n\n2. Build with Android Studio\n\nTo manage user and session after sign in/up we store that information in Preferences. The parameters that we save are due to the usage of Device Token Auth for authentication on the server side.\n\nPlease Check\n```\nResponseInterceptor.kt\nAuthenticationInterceptor.kt\n```\nto handle the server side authentication, in case you need to modify them:\n\n## Usage\n- You can use this open source project as a template of your new Android projects.\n\n## Key File encryption\n\nBuild signing requires a developer-owned keystore. Location and credentials for it are specified in `gradle.properties`. Likewise submission to Google Play requires a Developer API key in .json format (`google-api.json`).\nIt is recommended that these files remains outside the source repo\n\nWe suggest using [git secret](https://git-secret.io/) as a simple and secure solution for keeping these sensitive files in the repo. See [Config](./secure/Readme.md) for detailed instructions.\n\n\n## Build and Release with Fastlane\n\nWe provide configuration files for automating build, test and submission of the application using [Fastlane](https://docs.fastlane.tools/)\n\n### Requirements\n\n* Ensure JDK 1.8 is installed\n* Ensure proper version of Android SDK command line tools is installed\n* Install _fastlane_ using\n```\n[sudo] gem install fastlane -NV\n```\nor alternatively using `brew cask install fastlane`\n\n### Usage\nLanes for each deployment target example are provided with some basic behavior:\n- Each target has two options: `debug_x` and `deploy_x`.\n- Each option will:\n  - Increment the build number.\n  - Run `gradlew clean`\n  - Run `gradlew androidDependencies`\n  - Build the app (`gradle assemble`) for the target flavor.\n- The `deploy` lanes will additionaly submit the APK to the corresponding track in the Play Store.\n\nCheck `fastlane/Appfile` and `fastlane/Fastfile` for more information.\n\n## CI/CD configuration with Bitrise (updated on Dec 12th 2021)\n\nWe are going to start using a tool called Bitrise to configure the CI/CD pipelines for mobiles apps.\n\n--\u003e For Android apps you can find how to do it in this link: https://www.notion.so/rootstrap/Android-CI-CD-26d4abd4f2454224be8f617110147366\n\n## Continuous Integration with GitHub Actions (DEPRECATED)\n\nWe provide an example workflow [cicd.yml](.github/workflows/cicd.yml) including two jobs for running under [GitHub Actions](https://docs.github.com/en/actions), which can be modified according to the specifics of each project:\n\n* `ci`\n    * runs upon every push and PR\n    * installs Fastlane and runs `debug_dev` lane\n* `release`\n    * runs upon every push to `develop` or `master`\n    * downloads keystore and Google api key from S3 (credentials need to be present in repo Secrets)\n    * installs Fastlane and runs `deploy_*` lane depending on branch (`Dev` if in `develop`, `Stsaging` if in `master`) - This could be easily modified to release `Prod` instead \n\n## Analytics\n- Add analytics manager:\n    1. Firebase\n    2. MixPanel[Optional]\n\n**How use:**\nIn the Application class -\u003e onCreate\n```\nAnalytics.addProvider(GoogleAnalytics(applicationContext))\nAnalytics.addProvider(MixPanelAnalytics(applicationContext))\n```\nor an array of providers\n`Analytics.addProviders(arrayOfProviders)`\n\nthen use:\n`Analytics.track(PageEvents.visit(VISIT_MAIN))`\nor for events\n`Analytics.track(UserEvents.login())`\nin order to track the login event.\n\n- For firebase replace the file: google-services.json with the once for your App and follow the Firebase instructions.\n- For MixPanel, you have to replace the API key: \n`\u003cstring name=\"mixpanel_api_key\"\u003emixpanel_api_key\u003c/string\u003e`\n\n\n## Utility extensions\nWe have a bunch of pre-made extensions usually used on every project to accelerate feature development.\nyou can access them in the util.extensions package. They include but are not limited to :\n\n- `Fragment.collectOnLifeCycle(...)` extension to reduce the boiler plate code and indentation when\n  collecting flows from a fragment.\n- `ProgressBar.progressTo(...)` extension to animate progress updates in one line with ease \n  and with good support for older android versions.\n- `TextView.setClickableKeyword(...)` extension to add clickable functions to words or prhases inside a \n  Textview, allowing to also change their color, font (for example, to bold the keyword), and underline\n- `TextView.setColoredKeyword(...) ` extension to change the color of a word or prhase in a Textview.\n\n\n## Code Quality Standards\nIn order to meet the required code quality standards, this project uses [Ktlint](https://github.com/pinterest/ktlint) and [Detekt](https://github.com/arturbosch/detekt)\n\n## Contributing\nBug reports (please use Issues) and pull requests are welcome on GitHub at [android-base](https://github.com/rootstrap/android-base). This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.\n\n## License\nThe library is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).\n\nNOTE: Remove the free LICENSE file for private projects or replace it with the corresponding license.\n\n## Credits\n**Android Base** is maintained by [Rootstrap](http://www.rootstrap.com) with the help of our [contributors](https://github.com/rootstrap/android-base/contributors).\n\n[\u003cimg src=\"https://s3-us-west-1.amazonaws.com/rootstrap.com/img/rs.png\" width=\"100\"/\u003e](http://www.rootstrap.com)\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frootstrap%2Fandroid-base","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frootstrap%2Fandroid-base","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frootstrap%2Fandroid-base/lists"}