1

Pitch: Safe Woman Operational System: começando a criar um sistema baseado no AOSP

Eu comecei um novo experimento dentro do projeto Mulher Amparada: o Safe Woman Operational System.
A ideia é criar uma camada própria de sistema baseada no Android Open Source Project (AOSP), com o objetivo de integrar o Mulher Amparada diretamente ao sistema operacional.
E antes que pareça que eu coloquei o AOSP inteiro no GitHub: não coloquei. 😅
O repositório contém somente uma pequena parte de toda a estrutura necessária do AOSP. O restante continuaria vindo de uma árvore AOSP completa.

O que eu criei

A estrutura atualmente é:
Safe Woman Operational System/
├── device/
│ └── safe_woman/
│ ├── AndroidProducts.mk
│ ├── BoardConfig.mk
│ ├── safe_woman.mk
│ └── privapp-permissions-mulher-amparada.xml
│
└── packages/
└── apps/
└── MulherAmparada/
├── Android.bp
└── app/
└── src/
└── main/
A ideia é que device/safe_woman contenha as configurações específicas do sistema e que packages/apps/MulherAmparada contenha a integração do aplicativo.
O aplicativo utiliza o pacote:
com.mulheres
E o módulo foi preparado para o sistema de build do AOSP através do Android.bp.

E o AOSP inteiro?

Não está aqui.
O AOSP é enorme e possui componentes como Framework, ART, Bionic, System, HALs, kernel, Cuttlefish, bibliotecas, ferramentas de build, componentes externos, prebuilts e vários outros projetos.
O que existe neste repositório é somente a parte específica do Safe Woman OS.
A ideia é, futuramente, ter algo conceitualmente parecido com:
AOSP completo
+
Safe Woman OS
+
Mulher Amparada
↓
safe_woman-userdebug
↓
imagem do sistema
↓
Cuttlefish

Por que Cuttlefish?

Eu não estou começando com hardware físico.
A ideia inicial é utilizar o Cuttlefish, que permite executar uma versão virtual do Android.
Isso torna possível experimentar com a estrutura do sistema antes de pensar em qualquer hardware real.

O Mulher Amparada dentro do sistema

Uma das partes que acho mais interessantes é que o aplicativo deixa de ser pensado apenas como um APK que alguém instala depois.
A intenção é integrá-lo como parte da própria imagem do sistema.
Para isso, o projeto já possui uma configuração de aplicativo baseada no Soong:
android_app {
name: "MulherAmparada",
...
privileged: true,
}
Isso ainda não significa que todas as permissões do aplicativo sejam concedidas automaticamente. O Android possui regras próprias para permissões privilegiadas e permissões de runtime.

Ainda não é um sistema operacional completo

Essa parte é importante.
Eu não estou dizendo que já criei um Android completo do zero.
O que existe neste momento é uma estrutura experimental própria que foi organizada para ser incorporada a uma árvore AOSP completa.
Ainda existem várias etapas antes de isso virar uma imagem Android realmente inicializável.
Mas a estrutura já está sendo pensada seguindo a organização usada pelo próprio AOSP.

O que estou tentando aprender com isso

Mais do que simplesmente "criar um Android", a ideia é entender como um sistema baseado em AOSP é organizado:

  • configuração de produtos;
  • device/;
  • packages/apps/;
  • Soong e Android.bp;
  • aplicativos integrados ao sistema;
  • permissões privilegiadas;
  • dispositivos virtuais;
  • construção de uma imagem Android;
  • e, futuramente, execução no Cuttlefish.
    É um projeto experimental e ainda está no começo.
    Mas agora o Mulher Amparada não está sendo pensado apenas como um aplicativo.
    Estou começando a experimentar a ideia de construir o sistema ao redor dele.

Projeto

Repositório:
https://github.com/mulher-amparada/mulher-amparada-app
Pasta do Safe Woman Operational System:
https://github.com/mulher-amparada/mulher-amparada-app/tree/main/Safe%20Woman%20Operational%20System

Carregando publicação patrocinada...