Saltar para o conteúdo principal
Desenvolvimento · Odoo App Store

Publicar um módulo na Odoo App Store: as regras escritas e as que se aprendem depois de 117 publicações

Temos 105 módulos publicados na Odoo App Store, no Odoo 19, 18 e 17. Isto é o que a documentação diz, o que não diz, e o processo que seguimos para que uma publicação saia à primeira e se mantenha em três versões.

Ecrã de Apps do Odoo com a lista de módulos instalados num backend real

A Odoo App Store é o único canal onde um módulo de Odoo se vende sem comercial: alguém procura-o, compra-o e instala-o. Publicar é gratuito e qualquer pessoa pode fazê-lo com um repositório git e um manifest bem escrito. O que não está escrito em lado nenhum é porque é que uma publicação demora dias a aparecer, porque é que uma descrição sai estragada, ou porque é que um módulo que compila na sua máquina não se instala no Odoo do comprador. Isto é o que aprendemos a publicar 105 módulos e a mantê-los no Odoo 19, 18 e 17.

Ideia-chave: a App Store não instala o seu módulo para o verificar. Lê o manifest, a descrição e as imagens, e publica. Se o módulo não se instala num Odoo real, quem o descobre é o primeiro comprador. Toda a disciplina de publicar consiste em não deixar que isso aconteça.

As regras escritas: repositório, ramo e manifest

O mecanismo é simples e convém respeitá-lo à letra. Regista um repositório git na sua conta de apps.odoo.com; a App Store analisa-o e publica cada módulo que encontrar nele. O ramo importa: o ramo 19.0 alimenta as fichas do Odoo 19, o 18.0 as do 18, o 17.0 as do 17. Um mesmo nome técnico nos três ramos é uma única ficha com três versões, e é isso que quer: um URL, uma página de avaliações, três botões de descarga. Nomes técnicos diferentes por versão são três fichas que repartem as visitas.

Do manifest, o que a App Store lê e mostra:

  • name, summary e category: o título da ficha, a linha por baixo e onde aparece no catálogo. O nome tem de ser único em toda a loja.
  • version com o prefixo da versão do Odoo (19.0.1.0.0): sem esse prefixo a ficha não sabe a que Odoo pertence.
  • license: OPL-1 para módulos pagos, LGPL-3 ou AGPL-3 para os gratuitos. Um módulo pago com licença livre é uma oferta que não queria fazer.
  • price e currency: o preço da ficha. A Odoo fica com uma parte de cada venda e paga-lhe o resto; a proporção está publicada nas condições da App Store.
  • images: a lista de capturas, começando pelo banner que se vê no catálogo. Sem banner, a ficha aparece com um espaço cinzento ao lado das que o têm.
  • static/description/index.html: a descrição longa. HTML sem scripts, imagens relativas dentro do módulo e, por experiência, caracteres ASCII: um acento ou umas aspas tipográficas mal codificados podem deixar a ficha com símbolos estragados que só vê depois de publicada.

As regras que não estão escritas

O re-scan manda, e não se força com um zip

Depois de um push, a ficha não muda de imediato: a App Store volta a analisar o repositório ao seu próprio ritmo, que pode ser de horas ou de dias. A tentação é carregar um zip à mão para «acelerar». Não o faça: uma versão carregada à mão e uma versão analisada do repositório convivem mal, e acaba com uma ficha cuja origem desconhece. A regra que seguimos é uma só fonte, o repositório, e paciência. Se precisar que a análise repare numa alteração, suba o número de versão do manifest: uma alteração de conteúdo com a mesma versão às vezes não é recolhida.

Compilar não é instalar

A análise não instala o módulo. Que o manifest seja válido e o código importe sem erros não significa que o módulo se instale. No Odoo 19 isto tornou-se especialmente traiçoeiro: os grupos de segurança mudaram de modelo (res.groups.privilege), ir.cron já não admite o campo numbercall, e as vistas de lista chamam-se list, não tree. Um módulo escrito para o 17 passa a análise do 19 sem queixas e falha ao instalar no Odoo do comprador. Detalhamo-lo em porque é que um módulo de Odoo 19 compila mas não se instala.

Três versões são três módulos parecidos

Manter o mesmo módulo no 19, 18 e 17 não é copiar a pasta para três ramos. Cada versão tem as suas diferenças de API, e a única maneira de saber que as três funcionam é instalá-las num Odoo real de cada versão. Nós fazemo-lo no Odoo.sh: uma build por versão, instalação limpa, testes, e só então o push para o ramo que a App Store analisa. E com o Odoo 20, que saiu em setembro de 2026, o processo é o mesmo com mais um ramo. Um módulo testado apenas na versão em que foi escrito é um módulo que se venderá três vezes e falhará duas.

O processo que seguimos, por ordem

  1. Nome técnico único e definitivo. Procura-se na App Store antes de escrever a primeira linha; mudá-lo depois é perder a ficha e as suas avaliações.
  2. Manifest completo desde o primeiro commit: versão com prefixo, licença, preço, categoria, imagens, dependências exatas.
  3. Instalação limpa em Odoo.sh real de cada versão que se vai publicar, com os testes em verde. Sem isto não há push.
  4. Descrição em ASCII com capturas reais do módulo instalado, não maquetes. O comprador compara o que vê na ficha com o que instala.
  5. Push para o ramo da versão e esperar pela análise. Nada de zips. Se for preciso corrigir, sobe-se a versão e volta-se a esperar.
  6. Verificar a ficha publicada nas três versões: banner, descrição sem símbolos estragados, preço, botão de descarga.

O que a publicação não faz por si

Publicar não é vender. Uma ficha bem feita aparece quando alguém procura exatamente esse problema, e é tudo. O que faz com que se instale é que o módulo funcione à primeira, que a descrição diga o que faz e o que não faz, e que as perguntas de suporte sejam respondidas. Por isso tratamos cada módulo publicado como um produto com a sua manutenção, não como um ficheiro carregado. E por isso, quando uma empresa de software nos pede um conector para o seu produto, a publicação na App Store faz parte do trabalho, não é um extra: é onde os seus utilizadores de Odoo o vão procurar.

Perguntas frequentes

Quanto tempo demora a aparecer um módulo depois do push?

O que demorar a análise seguinte do repositório, que não controla: pode ser de horas ou de dias. Se ao fim de alguns dias nada tiver mudado, o primeiro passo é verificar que o ramo é o correto e subir o número de versão do manifest; o último, carregar um zip à mão.

É possível publicar o mesmo módulo para Odoo 17, 18 e 19 numa só ficha?

Sim, e é o recomendável: o mesmo nome técnico nos ramos 17.0, 18.0 e 19.0 do mesmo repositório produz uma ficha com as três versões. Cada ramo tem de se instalar de facto na sua versão; a App Store não o verifica por si.

Que licença uso se o módulo for pago?

OPL-1, a licença proprietária da Odoo, que permite vender o módulo e proíbe redistribuí-lo. Com LGPL-3 ou AGPL-3 o comprador pode redistribuí-lo livremente, que é o que quer se for gratuito e o que não quer se cobrar por ele.

Ligações úteis dentro da FlexigoTech

Os 105 módulos publicadosO catálogo completo, por família, no Odoo 19, 18 e 17Um conector para o seu software, publicado na App StorePara partners tecnológicos: construir, testar e publicarUm módulo de Odoo 19 compila mas não se instalaAs armadilhas de API do 19 que a análise não vêTestes verdes e o conector falha em produçãoPorque é que o teste que vale é a instalação real

Tem um módulo que quer publicar, ou um publicado que não se vende?

Dizemos-lhe o que falta ao manifest, à descrição ou à instalação, e como levá-lo às três versões. Escreva para comercial@flexigobe.com ou ligue para +34 616 809 504.

Falar com um engenheiro