---
# System prepended metadata

title: Android dev guidelines

---

# Android dev guidelines

## Style Guides
- Java
    - [The official Java style guide for raywenderlich.com](https://github.com/raywenderlich/java-style-guide)
- Kotlin
    - [The official Kotlin style guide for raywenderlich.com](https://github.com/raywenderlich/kotlin-style-guide)

## Minimum SDK versions
- [Android 6.0](https://developer.android.com/about/dashboards?hl=pt-br)
  

**Notas:** Ou pelo menos um que garanta mais de 50% dos devices activos, como primeiro critério; Subir a versão mínima de acordo com as necessidades do projeto, no entanto tem que ser discutido com o Gestor de Projeto.

## Third-Party libraries

Utilizar esta secção para partilhar as bibliotecas utilizadas de modo a simplificar algum desenvolvimento:
- Android
    - [Kotest](https://kotest.io/)
        - Lib para testes unitários
    - [Gradle](https://gradle.org/)
    - [Retrofit](https://square.github.io/retrofit/)
    - [SDP](https://github.com/intuit/sdp)
        - Scalable Size Unit for DP
    - [SSP](https://github.com/intuit/ssp)
        - Scalable Size Unit for SP
    - [View Binding](https://developer.android.com/topic/libraries/view-binding)
    - [Glide](https://github.com/bumptech/glide) ou [Fresco](https://frescolib.org/docs/index.html)
    - [KPermissions](https://android-arsenal.com/details/1/6689)
        - Biblioteca que facilita a gestão das permissões
    - [Room](https://developer.android.com/training/data-storage/room/index.html)
    - [LifeCycle Extensions](https://developer.android.com/jetpack/androidx/releases/lifecycle)
    - [Circle ImageView](https://github.com/hdodenhof/CircleImageView)
    - [Input Mask, by RedMadRobot](https://github.com/RedMadRobot/input-mask-android)
    - [BiometricPrompt](https://www.androidauthority.com/add-fingerprint-authentication-app-biometricprompt-943784/)
        - "By using this library for biometric authentication, we can assure an interface consistency for every app we make, so users know what to expect from this functionality."
    - [Sectioned-RecyclerView](https://android-arsenal.com/details/1/4867)
    - [Material UI](https://material.io/components/)


## Git
Via terminal ou via [SourceTree](https://www.sourcetreeapp.com/).

## Android Gitignore
Aceder ao ficheiro [aqui](https://github.com/github/gitignore/blob/master/Android.gitignore)

### GitFlow
- 2 branches
    - master
    - development
- Trabalhar sempre no development
- Quando se está a desenvolver uma feature, criar branch com nome "feature/{nome_feature}"
- Quando se está a fazer um bugfix, criar branch com nome "bugfix/{nome_do_bugfix}"
- Quando é enviada uma versão para a Store e esta é aprovada
    - Criar um branch a partir de development com o nome da versão. Ex: release/v1.2.1
    - fazer pull request para o master com uma tag da versão ex: v1.2.1
    - No branch de release:
        1. git add .
        2. git commit -m "v1.2.1"
        3. git tag v1.2.1
            - [Git Basics - Tagging](https://git-scm.com/book/en/v2/Git-Basics-Tagging)
        4. git pull
        5. git push
        6. E agora é possível fazer o pull request para o master via gitlab ou terminal e alguém com permissões de admin irá aceitar o merge request no master
- Continuar a trabalhar no development

![](https://i.imgur.com/YicWVAF.png)


**NOTA:** Fazer push sempre no final do dia, caso se esteja a trabalhar em algo, adicionar "WIP:" na mensagem. WIP -> Work In Progress



## Ferramentas de apoio
- [JSON Generator](https://www.json-generator.com/)
- [JsonSchema2POJO](http://www.jsonschema2pojo.org)
- https://jsongrid.com/json-parser
    - Converte um JSON em grelha, o que permite exportar também para CSV, agrupando os dados mais relevantes, para facilitar uma compreensão do resultado produzido por uma dada API
- https://pushtry.com/
- [CookieCutter](https://github.com/alexfu/cookiecutter-android)
    - Para criar templates de projetos
- [Postman](https://www.getpostman.com/)
- [MakeAppIcon](https://makeappicon.com)
    - Best app icon resizer for mobile developers.
- [Android Asset Studio](https://romannurik.github.io/AndroidAssetStudio/index.html)
    - A collection of tools to easily generate assets such as launcher icons for your Android app.
- [Android XML naming convention](https://jeroenmols.com/blog/2016/03/07/resourcenaming/)
- [Android Shadow Generator](http://inloop.github.io/shadow4android/)
    - A tool to create shadows for Android Views.
