ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Obtainium 如何接入 IzzyOnDroid 仓库跟踪应用更新?

Obtainium 如何接入 IzzyOnDroid 仓库跟踪应用更新? Obtainium 如何接入 IzzyOnDroid 仓库跟踪应用更新【免费下载链接】ObtainiumGet Android app updates straight from the source.项目地址: https://gitcode.com/GitHub_Trending/ob/Obtainium如果你的 Android 应用托管在 IzzyOnDroidizzysoft.de仓库中想要在不经过应用商店的情况下持续跟踪它的版本更新并在新版本发布时收到通知Obtainium 内置的IzzyOnDroid源就是为此设计的。Obtainium 从应用的 release 页面或仓库 API 直接获取最新版本信息、下载 APK 并提示更新IzzyOnDroid 与 F-Droid、GitHub 等一起列在 README 的 Currently supported App sources 中。这篇文章说明如何把一个 IzzyOnDroid 上的应用添加进 Obtainium 并验证更新跟踪生效。前提条件已安装 Obtainium。README 的 Installation 一节给出了 GitHub releases、IzzyOnDroid 与 F-Droid 三种获取方式并提供了核对信息Package ID 为dev.imranr.obtainium签名证书 SHA-256 为B3:53:60:1F:6A:1D:5F:D6:60:3A:E2:F5:0B:E8:0C:F3:01:36:7B:86:B6:AB:8B:1F:66:24:3D:A9:6C:D5:73:62该签名对 F-Droid 版本同样有效。设备有网络。后台更新检查任务要求网络连通见 docs/DEVELOPER_GUIDE.md 的 Background task architecture。哪些 URL 会被识别为 IzzyOnDroid 源源识别由SourceProvider按域名匹配完成。lib/providers/source_provider.dart 中注册了IzzyOnDroid()其构造器lib/app_sources/izzyondroid.dart声明name IzzyOnDroid; hosts [izzysoft.de]; allowSubDomains true;allowSubDomains true意味着任何*.izzysoft.de子域名都会命中该源匹配规则见 source_provider.dart 中以([^\.]\.)*开头的正则。粘贴到 Obtainium 的 URL 会被标准化成两种规范格式之一逻辑在 izzyondroid.dart# 主机名以 android. 开头时规范化为 https://android.izzysoft.de/repo/apk/appId # 其余 izzysoft.de 主机时规范化为 https://apt.izzysoft.de/fdroid/index/apk/appId例如 Obtainium 自身在 IzzyOnDroid 上的页面就是https://apt.izzysoft.de/fdroid/index/apk/dev.imranr.obtainiumREADME Installation 中的安装徽章链接标准化后末段dev.imranr.obtainium即应用的 Android package ID。IzzyOnDroid复用了 FDroid 的tryInferringAppIdizzyondroid.dart而 FDroid 源设置了inferAppIdFromUrlPath truelib/app_sources/fdroid.dart因此 app ID 直接取自规范 URL 的最后一个非空路径段见 source_provider.dart 的tryInferAppIdFromLastPathSegment。如果 URL 不符合上述路径模式会抛出InvalidURLError添加页会提示该 URL 无效。在 Obtainium 中添加应用并跟踪更新打开 Obtainium 的 Add app 页面lib/pages/add_app.dart。在 App source URL 输入框粘贴 IzzyOnDroid 上该应用的页面 URL。输入时页面会实时用SourceProvider.getSource()校验域名命中izzysoft.de后选中的源显示为IzzyOnDroid无需手动指定。页面下方会出现 Additional options for IzzyOnDroid 表单。IzzyOnDroid没有定义自己的专属选项它直接复用 FDroid 的三项每应用设置izzyondroid.dart 委托给fd.additionalSourceAppSpecificSettingFormItems定义在 fdroid.dartfilterVersionsByRegEx按正则过滤版本名可选填写时会校验是否为合法正则Try selecting suggested versionCode APK开关代码中默认值为true开启时优先采用仓库 API 返回的suggestedVersionCodeAuto-select highest versionCode APK同一版本有多个 APK 时自动取最高versionCode的一个。不修改这些选项也可以直接添加。点击添加按钮。Obtainium 会请求仓库的 packages API 拉取最新版本IzzyOnDroid的 getLatestAPKDetails 请求https://apt.izzysoft.de/fdroid/api/v1/packages/appIdAPK 下载地址前缀为https://android.izzysoft.de/frepo/appId。请求成功时应用出现在应用列表里并显示版本号此时即完成接入若返回 404 或包不存在则报NoReleasesError。更新如何被发现接入后不需要手动盯着仓库有两条路径手动应用列表下拉刷新触发checkUpdates()逐个应用请求上述 packages API 并保存结果机制见 docs/DEVELOPER_GUIDE.md 的 Update checking并发上限 8。后台Obtainium 通过workmanager注册了周期任务obtainiumBgUpdateCheck任务名见 lib/main.dart最小间隔 15 分钟且要求网络连通新 release 可用时按 README 的描述发送通知满足条件的更新可后台静默安装。版本选择逻辑在 fdroid.dart 的getAPKUrlsFromFDroidPackagesAPIResponse中IzzyOnDroid原样复用它API 返回 200 后默认取仓库给出的最高versionName若Try selecting suggested versionCode APK开启且没有版本过滤则优先选suggestedVersionCode对应的 releasefilterVersionsByRegEx填写后按versionName匹配第一个命中项。最终 APK 地址形如https://android.izzysoft.de/frepo/appId_versionCode.apk。验证与常见报错判断添加成功应用列表中出现该应用并带版本号应用详情页显示最新版本的检查时间版本值应与 packages API 中该appId的versionName一致。NoReleasesErrorpackages API 返回 404HTTP 404 会被直接映射为该错误见 source_provider.dart或响应中没有包——通常是 URL 末段不是真实 package ID或该应用已不在仓库中。RateLimitError服务端返回 429/403 时抛出并依据retry-after头估算重试分钟数source_provider.dart后台任务对限速主机也会按延迟重试。NoVersionError填写了filterVersionsByRegEx但没有任何versionName命中清空该过滤项即可。InvalidURLErrorURL 不满足android.izzysoft.de/repo/apk/…或apt.izzysoft.de/fdroid/index/apk/…的路径模式检查粘贴的页面地址是否完整。限制README 的 Limitations 一节说明部分源依赖网页抓取站点改版可能让解析失效届时更可靠的抓取方式可能不可用。IzzyOnDroid 源依赖的是仓库公开的 packages API 与android.izzysoft.de的 APK 路径约定如果这些接口行为变化更新检查同样会失败届时以 lib/app_sources/izzyondroid.dart 与 lib/app_sources/fdroid.dart 中的实际实现为准。【免费下载链接】ObtainiumGet Android app updates straight from the source.项目地址: https://gitcode.com/GitHub_Trending/ob/Obtainium创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表