# 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.