f-droid/fdroidserver
GitHub: f-droid/fdroidserver
F-Droid 官方维护的 Android 应用仓库服务端与构建工具集,用于发布、处理 APK 文件及管理应用仓库。
Stars: 738 | Forks: 116

# F-Droid Server
### 用于维护 F-Droid 仓库系统的工具。
## 什么是 F-Droid Server?
_fdroidserver_ 是一套用于发布和处理 Android 应用(APK 文件)及其他类型包集合的工具。它被用于维护 [f-droid.org 应用仓库](https://f-droid.org/packages)。这些工具同样可用于创建额外的或替代的发布仓库,或者协助创建、测试并将元数据提交到 f-droid.org 仓库(也称为 [_fdroiddata_](https://gitlab.com/fdroid/fdroiddata))。
有关文档,请参阅
。
起初,_fdroidserver_ 是运行 f-droid.org 的完整服务端配置。后来,网站及其他部分被拆分到了各自独立的项目中。尽管这套工具集不再包含任何真正的服务端组件,但它的名称依然是 _fdroidserver_。
## 安装
安装 _fdroidserver_ 的方式有很多种,包括使用各种包管理器。所有选项均在网站上有详细说明:
https://f-droid.org/docs/Installing_the_Server_and_Repo_Tools
## 发布
用于 f-droid.org 的 _fdroidserver_ 生产环境直接基于 _master_ 分支运行。它会按计划(目前为每周)投入生产环境。因此,开发和测试都在各个分支中进行。我们通过 merge request 来跟踪分支。因此,会有许多 WIP(进行中)和长期存在的 merge request。
此外,_fdroidserver_ 也有稳定的发布版本。这主要是为运行构建过程相互独立的自定义仓库而设计的。由于稳定版本可以通过包管理器获取,它也可以作为开始向 _fdroiddata_ 贡献包的一种简单方式。
## 测试
要运行完整的测试套件:
```
tests/run-tests
```
要运行单个 Python 模块的测试,请查看 `tests/test_*.py` 文件,例如:
```
python -m unittest tests/test_metadata.py
```
也可以运行单个测试:
```
python -m unittest tests.test_metadata.MetadataTest.test_rewrite_yaml_special_build_params
```
目前有一个不断增长的测试套件,对该代码库的许多关键部分具有良好的覆盖率。它尚未覆盖所有代码,并且有些部分由于技术债务,使得编写单元测试变得困难。新的测试应为标准的 Python _unittest_ 测试用例。只要有可能,_tests/run-tests_ 中用 _bash_ 编写的旧测试都应移植到 Python。
这个测试套件随着时间的推移有些随意地建立起来,因此它并不是那么干净、有条理或完整。我们欢迎贡献。我们的目标是向标准的 Python 测试模式靠拢,并扩大单元测试覆盖率。在对其中任何部分进行重构之前,请务必先[联系我们](https://f-droid.org/about)讨论这些更改。
### 针对 Linux 不同发行版的额外测试
这些测试也会通过 GitLab CI 在各种配置下运行。这仅对 `master@fdroid/fdroidserver` 启用,因为它的完成时间比常规 CI 测试要长。大多数情况下您不需要担心它们,但有时在您的 merge request 中运行它们也是有意义的。在这种情况下,您需要[从 .gitlab-ci.yml 中移除这些行](https://gitlab.com/fdroid/fdroidserver/-/blob/0124b9dde99f9cab19c034cbc7d8cc6005a99b48/.gitlab-ci.yml#L90-91),并将其推送到您 fork 的新分支中。
或者,像这样[在本地运行它们](https://docs.gitlab.com/runner/commands/README.html#gitlab-runner-exec):`gitlab-runner exec docker ubuntu_lts`
## 文档
基于 docstring 生成的 API 文档会在每次提交到 `master` 分支时自动[在此处](https://fdroid.gitlab.io/fdroidserver)发布。
它也可以通过以下命令在本地构建:
```
pip install -e .[docs]
cd docs
sphinx-apidoc -o ./source ../fdroidserver -M -e
sphinx-autogen -o generated source/*.rst
make html
```
要额外对代码进行 lint,请调用:
```
pydocstyle fdroidserver --count
```
在编写 docstring 时,您应遵循 [numpy 风格指南](https://numpydoc.readthedocs.io/en/latest/format.html)。
## 翻译
所有内容都可以翻译。有关更多信息,请参阅[翻译与本地化](https://f-droid.org/docs/Translation_and_Localization)。
[](https://hosted.weblate.org/engage/f-droid)
查看所有语言的翻译状态。
[](https://hosted.weblate.org/engage/f-droid/?utm_source=widget)
标签:Android, DSL, F-Droid, 应用仓库, 应用安全, 打包部署, 服务器, 逆向工具