Submitting to F-Droid Quick Start Guide

Doing this is apparently the best way to get your own package into the repository, since you can provide a direct merge request for the metadata about your package, making it easy for the maintainers.

Para entender a visão geral do processo, leia a seção Proposta por solicitação de fusão de metadados do Instruções de inclusão.

Primeiros passos

Na fonte do aplicativo que você deseja incluir, encontre todos os arquivos AndroidManifest.xml e build.gradle, e anote em qual subdiretório está o mais detalhado deles.

Registre-se no GitLab e bifurque o repositório fdroiddata.

Metadados a montante

Cada confirmação de lançamento oficial no repositório Git upstream do aplicativo deve ter uma tag. Por exemplo, se o AndroidManifest contiver versionName: '1.0', o commit precisa de uma tag v1.0. É altamente recomendável adicionar metadados no repositório de origem do aplicativo também:

  • metadata/en-US/short_description.txt (30-50 caracteres, sem ponto final)
  • metadata/en-US/full_description.txt
  • metadata/en-US/images/icon.png
  • metadata/en-US/images/phoneScreenshots/screenshot.png

Se o AndroidManifest contiver versionCode: 123, deve haver uma explicação correspondente do que há de novo nesta versão:

  • metadata/en-US/changelogs/123.txt (máximo de 500 caracteres)

Navegue no diretório F-Droid metadados do cliente para ver um exemplo real.

Outros formatos e locais da descrição, gráficos e capturas de tela também são suportados. Por exemplo, o diretório metadata/en-US pode ser fastlane/metadata/android/en-US.

Envie à equipe de desenvolvimento do aplicativo uma solicitação de fusão se o repositório não tiver esses arquivos e abra um problema se ele não tiver tags de versão. Ter este metadados no lugar permite que ele esteja sob controle direto do desenvolvedor, e suas atualizações e traduções futuras serão puxadas automaticamente.

Ambiente de construção

Em um laptop com Ubuntu 21.10 em fevereiro de 2022, foram necessários 2 GB de tráfego e 5 GB de espaço em disco para configurar um ambiente de construção do F-Droid.

Requisitos de rede:

  • 60 MB: clone fdroiddata and fdroidserver
  • 75 MB: instale docker.io
  • 1000 MB: carregar o contêiner
  • 800 MB: construir

Requisitos de armazenamento:

  • 1000 MB: clone os repositórios e instale docker.io
  • 4000 MB: carregar o contêiner e construir

Baixe seu fork e crie uma novo ramo e um arquivo de metadados. Por exemplo, se o aplicativo build.gradle diz applicationId "com.example":

git clone --depth=1 https://gitlab.com/YOUR_ACCOUNT/fdroiddata ~/fdroiddata
cd ~/fdroiddata
git checkout -b com.example
cp templates/app-full metadata/com.example.yml

Preencha ~/fdroiddata/metadata/com.example.yml de acordo com a referência build metadata reference. Se você convenceu a equipe de desenvolvimento do aplicativo a incluir as descrições e usar as tags de versão em seu repositório como explicado acima, o arquivo será muito conciso:

Categories:
  - Internet
  - Navigation
License: GPL-3.0-or-later
SourceCode: https://gitlab.com/APPLICATION_UPSTREAM/ExampleCom

RepoType: git
Repo: https://gitlab.com/APPLICATION_UPSTREAM/ExampleCom

Builds:
  - versionName: '1.0'
    versionCode: 123
    commit: v1.0
    # Where build.gradle is:
    subdir: app
    sudo:
      - apt-get update || apt-get update
      - apt-get install -y librsvg2-bin openjdk-11-jdk-headless
      - update-alternatives --auto java
    gradle:
      - yes

AutoUpdateMode: Version
UpdateCheckMode: Tags
CurrentVersion: '1.0'
CurrentVersionCode: 123

Ajuste ou remova as linhas relevantes sudo se necessário:

  • O aplicativo de exemplo build.gradle executa rsvg-convert para rasterizar seus ícones vetoriais, por isso instalamos librsvg2-bin a partir dos repositórios oficiais do Debian. Todas essas dependências devem ser especificadas no aplicativo README.

  • build.gradle menciona com.android.tools.build:gradle:7.1.0, e o plugin Gradle Android versão 7 é conhecido por depender do Java 11. Então nós instalamos openjdk-11-jdk-headless e o selecionamos como a alternativa java.

Baixe e inicie a versão mais recente do contêiner de ferramentas do servidor:

git clone --depth=1 https://gitlab.com/fdroid/fdroidserver ~/fdroidserver
sudo sh -c 'apt-get update &&apt-get install -y docker.io'
sudo docker run --rm -itu vagrant --entrypoint /bin/bash \ \ \
  -v ~/fdroiddata:/build:z {\i1}
  -v ~/fdroidserver:/home/vagrant/fdroidserver:Z {\i1}
  registry.gitlab.com/fdroid/fdroidserver:buildserver

No contêiner:

. /etc/profile
export PATH="$fdroidserver:$PATH" PYTHONPATH="$fdroidserver"
cd /build
fdroid readmeta
fdroid rewritemeta com.example
fdroid checkupdates --allow-dirty com.example
fdroid lint com.example
fdroid build com.example

Se algum comando, tal como fdroid readmeta, retornar um erro, edite ~/fdroiddata/metadata/com.example.yml em conformidade e tente executar o comando novamente. Após uma compilação bem sucedida, saia do container, submeta seu arquivo de metadados com um New App label, e empurre-o para o seu fork:

saída
cd ~/fdroiddata
git adicionar metadados/com.example.yml
git commit -m "Nova aplicação: com.example"
git push origin com.example

Crie uma solicitação de fusão no repositório fdroiddata, selecionando sua ramificação de origem com.example. Aguarde os empacotadores pegarem sua solicitação de fusão. Por favor, acompanhe se eles fizeram alguma pergunta e responda o mais rápido possível.

Troubleshooting

You can get help with F-Droid via IRC, Matrix, XMPP, e-mail and some other channels.