Criando e distribuindo Android SDKs com Gitlab

Gabriel Marcos
luizalabs
Published in
4 min readJun 8, 2021

Entenda como criar e publicar um sdk, para compartilhar suas ferramentas entre aplicações android.

Muitas vezes, nos deparamos com o seguinte problema: Como podemos reaproveitar funcionalidades já existentes, sem termos que duplicar todo o código.

Pensando nisso, resolvi desvendar alguns mistérios que envolvem as criações de SDKs, e criar um pequeno guia para quem deseja desenvolver seu primeiro SDK.

Nesse guia abordaremos os seguintes tópicos:

  • O que são SDKs e para que servem?
  • O que iremos fazer?
  • Desenvolvendo nosso SDK
  • Distribuindo o SDK

O que são SDKs e para que servem?

Software Development Kit, nada mais é, do que pequenas caixas de ferramentas que auxiliam no desenvolvimento e no reaproveitamento de código/funcionalidades.

Para exemplificar melhor, vamos utilizar como cenário a seguinte situação:

Atualmente grandes companhias estão cada vez mais expandindo e absorvendo outras marcas. Com isso temos cada vez mais a necessidade de criar ferramentas, que possam ser compartilhadas entre aplicações.

E é aí que entram os SDKs, um conjunto de ferramentas de fácil integração que podem equalizar tanto serviços, quanto unificar a UI entre as identidades das aplicações.

O que iremos fazer?

Iremos utilizar a API de Endereço: https://viacep.com.br/ . Com ela, a partir do CEP teremos algumas informações do endereço correspondente como: logradouro, bairro, etc…

Nesse guia iremos somente até a obtenção dos dados de um determinado endereço a partir do CEP, mas sinta-se à vontade para continuar e integrar alguma api que realize o cálculo de frete.

Desenvolvendo nosso SDK

Então vamos ao que interessa, iniciaremos montando nosso modelo de resposta da API.

Uma coisa importante é entender quando iremos utilizar ou não os atributos como opcionais. Nesse caso todos os atributos serão opcionais, pois não temos o controle da API e não conseguimos garantir todos os retornos dos atributos.

Utilizamos o @SerializedName da lib GSON. A utilização ou não dessa biblioteca fica ao seu critério, mas é sempre bom lembrar a importância de serializar os atributos, para que os mesmos não se percam em uma possível ofuscação.

Uhuul, já temos o nosso modelo pronto para receber a resposta da nossa API. Iremos agora adicionar a camada de requisição, nesse ponto utilizaremos a biblioteca do retrofit como HTTP client, mas fique a vontade para utilizar o client de sua preferência.

Agora já temos basicamente todo o fluxo da nossa requisição configurada. Mas ainda precisamos fazer a comunicação do que futuramente será nossa camada de entrypoint do SDK com a nossa camada de rede.

Iremos então construir nossa camada de comunicação entre o entrypoint e a requisição e assim efetivamente finalizar o fluxo de requisição, para a nossa API.

E voilà, temos nossa camada de comunicação entre o disparo do método e a resposta da API.

Estamos quase finalizando a construção do nosso SDK, e com isso já podemos notar algumas coisas. Os SDKs nada mais são do que pequenos módulos embarcados nas aplicações, então por isso devemos tomar bastante cuidado com as dependências que adicionamos dentro delas, pois as mesmas também passarão a fazer parte da aplicação principal.

Devemos principalmente tomar cuidado com dependências de libs externas, que possam ser compartilhadas entre o SDK e a aplicação principal, como por exemplo:

Nesse caso, tanto o SDK quanto quem o implementa, precisarão ter a dependência da biblioteca OkHttp3 adicionadas em seu projeto. Mas se por um acaso do destino a versão da biblioteca que o nosso SDK utiliza, conter recursos diferentes da versão que roda na aplicação principal, isso poderia ocasionar um CRASH !.

Então por isso é recomendado que se utilize o mínimo possível de dependências em SDKs e menos ainda dependências compartilhadas.

Maaasss voltando ao nosso SDK, agora iremos criar o nosso entrypoint para o mundo. Essa classe irá expor os métodos que a aplicação principal terá acesso dentro do nosso SDK.

Estamos prontos para dominar o mundo, não pera. Estamos prontos para distribuir nosso SDK rs.

Distribuindo o SDK

Para distribuir nosso SDK utilizaremos o maven + gitlab (Packages and Registries). Na minha visão essa é a forma mais fácil e rápida de desenvolver e publicar nossos artefatos.

Para isso, precisaremos usar o gitlab como ferramenta de versionamento do nosso código.

Feito isso, iremos adicionar as dependências do maven no nosso build.gradle do projeto, e criar o personal token api no gitlab.

Para rodar a task de publicação do maven basta executar no terminal o comando:

./gradlew publishLibraryPublicationToMavenRepository

Feito isso, basta navegar até a seção Package Registry do seu repositorio e admirar seu primeiro SDK publicado.

Com isso, terminamos nosso tempo juntos, espero que tenha gostado e que esse artigo possa ajudar.

Obrigadx.

--

--