设置 F-Droid 应用存储库
F-Droid.org 是 F-Droid 客户端中的默认包存储库(repo),但这不是唯一的可能性。任何人都可以创建自己的存储库,用户可以控制他们的客户端使用的存储库,甚至包括禁用默认的 f-droid.org 存储库。这个模型有点模仿 Debian GNU/Linux 发行版。与 Debian 和 Ubuntu 一样,你也可以设置自己的存储库供任何人使用。自定义存储库甚至不需要构建 APK,它们可以是任何 APK 的 简单二进制存储库。
概况
如果你想维护一个简单的二进制库,即从其他地方获得的 APK 和软件包,这个过程非常简单:
- 设置服务器工具
- 创建一个名为
fdroid
的目录,然后在该目录中运行fdroid init
,以生成唯一标识存储库的签名密钥。 - 可选择编辑
config.yml
文件以满足你的需要,详细例子见 examples/config.yml - 在
fdroid
中,建立一个名为repo
的目录,并将 APK 文件放入其中。 - 运行
fdroid update
。 - 如果它报告缺少任何元数据文件,你可以在
metadata
目录中创建它们,然后再次运行它。 - 为了简化元数据文件的创建,请使用
-c
选项运行fdroid update
。它将创建丢失的 骨架 元数据文件,然后你可以编辑它们并填写详细信息。 - 然后,如果你更改了内容,请再次运行
fdroid update
。 - 运行
fdroid update
将icons
目录添加到存储库目录中,并且还会创建存储库索引文件(index.xml
、index.jar
] 等)注意:要确保此过程安全,请阅读下面的 真实世界设置 ! - 将
repo
目录的结果内容发布到你的 Web 服务器(或在config.yml
中设置serverwebroot
,然后使用fdroid deploy
)
按照上述过程将产生一个 repo
目录,你只需要把它推送到任何 HTTP(或者最好是 HTTPS)服务器上,使其可以访问。
虽然有关应用(及其版本)的一些信息是直接从 APK 文件中检索的,但大部分信息来自 metadata/
目录中的相应文件。覆盖特定应用所有版本的 元数据文件 被命名为 package.id.yml
,其中 package.id 是该包的唯一标识符。所有构建元数据字段都与二进制 APK 相关,但 Builds:
条目除外,该条目应被省略。
本地演示存储库 HOWTO
这是一个完整的 HOWTO,可以在你想要托管它的任何位置设置自己的存储库。这有点技术性,你将使用终端,但你不需要成为终端专家即可跟进。首先,本 HOWTO 将逐步介绍如何设置不太安全的测试存储库。然后,它将逐步完成设置存储库以供实际使用的过程,并将签名密钥放在与公共 Web 服务器不同的计算机上。在开始之前,你需要获取 fdroidserver
工具 和一个 Web 服务器。对于 Web 服务器,此 HOWTO 将使用 nginx
,因为它的轻量级,但是如果你已经运行了一个,则可以使用。
sudo apt-get install nginx
在本 HOWTO 的情况下,我们将设置一个 简单的二进制存储库 来托管一组 APK。存储库将设置在推荐的 fdroid/
子目录中。这为 fdroid
工具提供了自己的工作目录,并使存储库 URL 清楚地标记为 F-Droid 存储库。此外,如果用户仅进入服务器(例如 https://f-droid.org ),F-Droid 客户端将自动在 /fdroid/repo
路径中搜索存储库。让我们让普通用户控制 web root 中的这个子目录,这样我们就不需要以 root 身份运行 F-Droid 工具(使用 nginx
,webroot 是 /usr/share/ nginx/www
,其他网络服务器不同):
sudo mkdir /usr/share/nginx/www/fdroid
sudo chown -R $USER /usr/share/nginx/www/fdroid
cd /usr/share/nginx/www/fdroid
fdroid init
现在将你的 APK 文件放入 /usr/share/nginx/www/fdroid/repo
,你就可以运行命令来构建存储库(如果 fdroid init
找不到你的 Android SDK 在 /opt/android-sdk
或 $ANDROID_HOME
,它会提示你输入路径):
cd /usr/share/nginx/www/fdroid
cp /path/to/\*.apk /usr/share/nginx/www/fdroid/repo/
fdroid update --create-metadata
瞧!现在你有一个可用的 F-Droid 存储库!请记住,这是__只是一个测试__设置,记住在此之后继续进行 真实世界设置 !将你的新存储库添加到 Android 设备上的 F-Droid 客户端以进行测试。这是在菜单中可用的 Manage Repos 屏幕中完成的。你的存储库 URL 将是你机器的主机名或 IP 地址,并在其末尾添加 /fdroid/repo/
,即 https://mysecureserver.com/fdroid/repo/
] 或 http://192.168.2.53/fdroid/repo/
。你可以暂时取消选中官方存储库,以便轻松查看 F-Droid 在你的新存储库中找到的内容。
虽然你可以在任意 URL 上提供存储库,但习惯上使其在以 /fdroid/repo/
结尾的 URL 上可用。真正这样做的一个很好的理由是 F-Droid 客户端设置了一个意图过滤器并为这些 URL 注册自己。因此,安装了 F-Droid 应用并打开这样一个格式良好的 URL 的用户将使他们的设备打开 F-Droid 并引导他们直接向其中添加存储库。
定制化
你还可以通过编辑配置文件来自定义你的存储库。请务必使用编程文本编辑器,例如 editor /usr/share/nginx/www/fdroid/config.yml
。在配置文件中,你可以设置存储库的名称、描述、图标、特定版本构建工具的路径、相关 wiki 的链接以及是否保留统计信息。这是基本的存储库描述块:
repo_url = "https://www.wenjiangs.com/wp-content/uploads/2023/docimg24/2-a3iqlwg1awo.png"
repo_description = """
A local test repository of Hans-Christoph Steiner <hans@guardianproject.info>.
It is a repository of Guardian Project apps. """
要将你的图标放入你的存储库,请选择一个 PNG 图像放入你的存储库。 PNG 进入 /usr/share/nginx/www/fdroid/
,该文件可以任意命名(默认为 fdroid-icon.png
)。如果更改默认名称,请务必更新 /usr/share/nginx/www/fdroid/config.yml
中的 repo_icon
和 archive_icon
。
关于安全性的最后一点说明:对于真正的公共存储库来说,此设置不是一个好的设置,而是一种快速简便的方法来测试 F-Droid。至少,在就地生成存储库时,请确保无法通过 Web 访问 config.yml
,因为它包含密码。如果文件权限正确(例如 chmod 0600 config.yml
),则 config.yml
将无法被 Web 服务器读取。
应用元数据
你可以通过编辑应用的元数据来控制应用程序在你的存储库中的表示方式的许多方面。运行 fdroid update --create-metadata
会为你创建存根文件,以便拥有一个有效的存储库。然后你可以编辑这些文件以添加描述、捐赠链接、错误跟踪器、许可证、主页等。有关所有选项的详细信息,请参阅 构建元数据参考 。
CurrentVersionCode
提供了一种在与完整版本相同的流中部署 Beta 版本的便捷方式。你可以将 CurrentVersionCode
设置为你当前的稳定版本,然后将 APK 添加到你的存储库中。用户只会自动更新到你指定的版本代码。将不会自动安装存储库中具有较新版本代码的给定应用的任何 APK。相反,用户可以在客户端的应用详细信息视图中看到它们,并且可以手动安装它们。
真实世界设置
现在,你已经有了一个有效的存储库,可以直接创建一个真实的设置。像我们上面所做的那样,在适当的位置生成存储库非常容易,这就是为什么这个 HOWTO 从那里开始,但是如果你的存储库将成为你的主要分发点,它并不像它应该的那样安全。例如,存储库签名密钥不应位于公用服务器上。
要改善这种情况,请在非公共计算机(如笔记本电脑)上生成存储库,仅将 config.yml
和密钥库保留在该计算机上(请记住进行备份!然后使用 fdroid deploy
通过 ssh 将更改发布到单独服务器上的存储库。因此,在非公共计算机上从头开始新的存储库:
mkdir ~/fdroid
cd ~/fdroid
fdroid init
cp /path/to/\*.apk ~/fdroid/repo/
fdroid update --create-metadata
emacs config.yml # add the serverwebroot, etc.
fdroid deploy -v
现在编辑 config.yml
设置 serverwebroot
,它是标准 SCP 文件目的地的形式。然后 fdroid deploy
将通过 ssh 上的 rsync 进行发布。因此,两台计算机都必须安装和设置 ssh 和 rsync。你也可以使用自己现有的签名密钥而不是 fdroid init
生成的密钥,只需编辑 repo_keyalias
、 keystore
、 keystorepass
, keypass
和 keydname
在 ~/fdroid/config.yml
。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论