音视频移动开发【免费下载链接】vlc-androidVLC for Android, Android TV and ChromeOS项目地址https://gitcode.com/gh_mirrors/vl/vlc-android点击查看免费下载本文是 vlc-android 仓库维护者Release Manager专用的发布操作指南完整讲解如何将 libvlc、medialibrary 与 remote-access 三个 Android 库构件AAR签名并部署到 Sonatype 的 Maven Central。读者按本文操作可完成从「打 git tag 触发 CI 构建」→「下载 dbg.zip 产物」→「运行 deploy-to-mavencentral.sh 签名上传」→「在 Nexus Repository Manager 中 Close / Release」→「在 Maven Central 验证发布结果」的端到端发布闭环。发布对象与整体流程vlc-android 仓库对外发布的 Maven 构件由三个 Android 库模块产出统一使用org.videolan.android作为 groupId构件模块路径AAR 命名版本来源libvlc-alllibvlcjni/libvlcCI 中拉取libvlc-all-version.aarbuild.gradle 中的libvlcVersionmedialibrary-allmedialibrary/build.gradlemedialibrary-abi-version.aarbuild.gradle 中的medialibraryVersionremote-accessapplication/remote-access-client/build.gradlevlc-android-remote-access-version.aarbuild.gradle 中的remoteAccessVersion三个模块统一通过 buildsystem/publish.gradle 完成发布配置group org.videolan.androidversion library_version并定义了sourcesJar源码包与javadocJarJavadoc 包两个附加产物任务最终以archives形式挂载到构件集合中——这正是mvn gpg:sign-and-deploy-file所需的-Dsources与-Djavadoc参数来源。以当前仓库为例build.gradle 中定义的版本为VLC 3.x 分支下libvlcVersion 3.7.7、medialibraryVersion 0.13.24、remoteAccessVersion 0.24.0VLC 4.0 预览分支则分别为4.0.0-eap29与0.13.22-vlc4。实际发布版本以打出的 git tag 为准。整体发布流程如下打一个形如libvlc-版本的 git tag触发 GitLab CI 构建全部 ABI 的库并打包从 CI pipeline 下载名为dbg.zip的产物压缩包将压缩包放入buildsystem/maven目录插入 YubiKey 后执行部署脚本在 Sonatype Nexus 门户中关闭Close并发布Releasestaging 仓库在 Maven Central 与搜索门户中核验构件可被拉取。前置条件Prerequisites签名YubiKey 与 VideoLAN 签名密钥所有部署到 Maven Central 的构件都必须是 GPG 签名的。VideoLAN 使用 YubiKey 智能卡承载官方 Maven 签名密钥需按照官方 YubiKey 智能卡配置指南完成密钥迁移与 PIN 设置将以下密钥导入卡片49A7E6FE58DCF183F0B349DFB83763AD62ED0721该 key id 同时被写死在 deploy-to-mavencentral.sh 中作为mvn gpg:sign-and-deploy-file的-Dgpg.keyname参数即部署脚本会强制使用这把密钥签名发布者本人的密钥无法替代。工具Apache Maven部署过程依赖 Maven 的gpg:sign-and-deploy-file目标因此需要预先安装 Apache Mavensudo apt install maven凭证Sonatype 账号需要具备 Sonatype 平台的发布凭证用户名与密码脚本阶段使用。申请方式为注册 Sonatype JIRA 账号然后在对应的申请工单编号OSSRH-65611中请求加入org.videolan命名空间。只有被授予该命名空间权限的账号才能完成后续的 staging 上传与 release 操作。生成构件打 tag 触发 CI仓库不会手工构建发布用的 AAR而是通过 git tag 驱动 CI 产出。发布流程的起点是创建如下格式的 taglibvlc-[libvlc-version]例如libvlc-3.7.7。从 buildsystem/gitlab/.gitlab-ci.yml 的 CI 配置可以印证这一点.build-libs-base的触发规则为$CI_COMMIT_TAG ~ /^libvlc-3.*$/VLC 4 分支则匹配/^libvlc-4.*$/remote-access 构件由$CI_COMMIT_TAG ~ /^remoteaccess-.*$/独立触发见 publish_remote_access_lib 任务。触发后CI 会为arm64-v8a、armeabi-v7a、x86、x86_64四个 ABI 分别执行./buildsystem/compile.sh -l -a ${ARCH} -t -m2 $M2_REPO release ./buildsystem/compile.sh -ml -a ${ARCH} -t -m2 $M2_REPO release -b即先构建 libvlc-l、再构建 medialibrary-ml并使用-m2 $CI_PROJECT_DIR/aars/repository将产物安装到 CI 内的本地 Maven 仓库M2_REPO变量随后在 package 阶段执行publishToMavenLocal汇总各 ABI 产物。最终 pipeline 会打包两个关键产物.dbg/目录包含各 ABI 的调试符号.so文件供崩溃符号化使用$M2_REPO即aars/repository目录内含标准 Maven 布局的org/videolan/android/{medialibrary-all,libvlc-all,remote-access}构件树。两者的压缩包以libvlc-[版本].dbg命名挂在 pipeline artifacts 上对应文档中描述的dbg.zip。发布者需要做的就是把这个 zip 下载并复制到本仓库的buildsystem/maven目录下。执行部署脚本deploy-to-mavencentral.sh使用方法插入 YubiKey 后在buildsystem/maven目录下执行./deploy-to-mavencentral.sh [FILE_PATH]其中[FILE_PATH]是上一步下载的 zip 文件的路径。脚本采用set -euo pipefail严格模式任何一步失败都会立即中止保证发布过程可预期。脚本执行步骤拆解对照 deploy-to-mavencentral.sh 源码脚本依次执行以下动作检查并解压先校验参数非空无参数时直接报错退出随后检查 zip 是否存在存在则unzip到artifacts/目录否则以红色提示报错退出探测构件版本按 Maven 仓库标准布局检查artifacts/aars/repository/org/videolan/android/下是否存在medialibrary-all、libvlc-all、remote-access三个目录并用ls -tUd .../*/取时间戳最新的子目录名作为版本号三个版本分别存入MEDIALIB_VERSION、LIBVLC_VERSION、REMOTE_ACCESS_VERSION变量人工确认打印探测到的三个版本号等待输入y确认输入其他字符则安全退出读取 zip 密码交互式-sp隐藏输入读取settings.xml.zip的解压密码并进行 XML 转义→amp;等解压发布凭证用该密码unzip -P $pass settings.xml.zip解出settings.xml内含 Sonatype 凭证的 Maven server 配置与pwd.txt用于后续 API 调用的 token与此同时trap cleanup EXIT被注册保证脚本无论正常结束还是中途异常都会删除settings.xml与pwd.txt。安全警告原文强调一旦脚本执行到第 5 步之后settings.xml文件就包含明文凭证。若脚本在此之后失败务必手动删除该文件避免凭证泄露。脚本自身的trap cleanup EXIT机制只覆盖正常路径中断后的残留文件需人工兜底清理。签名并部署对三个构件存在的分别执行mvn gpg:sign-and-deploy-file。以 libvlc 为例脚本实际运行的命令为mvn gpg:sign-and-deploy-file \ --settings settings.xml \ -DpomFile$BASE_DIR/libvlc-all-$LIBVLC_VERSION.pom \ -Dfile$BASE_DIR/libvlc-all-$LIBVLC_VERSION.aar \ -Dsources$BASE_DIR/libvlc-all-$LIBVLC_VERSION-sources.jar \ -Djavadoc$BASE_DIR/libvlc-all-$LIBVLC_VERSION-javadoc.jar \ -Durlhttps://ossrh-staging-api.central.sonatype.com/service/local/staging/deploy/maven2/ \ -DgroupIdorg.videolan.android \ -Dgpg.keyname49A7E6FE58DCF183F0B349DFB83763AD62ED0721 \ -DrepositoryIdcentral参数含义参数作用--settings settings.xml使用刚解压出的、含 Sonatype 凭证的 Maven settings 文件-DpomFile构件对应的 POM 文件-Dfile要发布的 AAR 文件本体-Dsources/-Djavadoc源码包与 Javadoc 包对应 publish.gradle 中生成的sourcesJar/javadocJar-DurlSonatype 的 staging 部署端点maven2 协议-DgroupId固定为org.videolan.android-Dgpg.keyname固定为 VideoLAN 官方签名密钥 id-DrepositoryId对应 settings.xml 中server的 idcentral通知 Sonatype 手动上传部署完成后脚本还会对每个构件发起一次curlPOST携带Authorization: Bearer $PWDtoken 来自pwd.txt请求ossrh-staging-api.central.sonatype.com/manual/upload/defaultRepository/org.videolan将 staging 内容正式挂载到org.videolan仓库清理通过trap cleanup EXIT删除settings.xml与pwd.txt。缺失构件的容错脚本对三个构件逐一判断若 zip 中缺少某构件目录例如只发布了 libvlc 而未包含 remote-access对应版本变量为空脚本会打印 No version for xxx. Skipping 并跳过该构件的部署步骤不影响其他构件发布。在 Nexus Repository Manager 中发布ReleaseMaven 部署脚本只是把构件上传到了 Sonatype 的 staging 区发布者还需要在 Nexus 门户中完成最后的发布操作登录 Sonatype 的 Nexus Repository Manager 门户s01.oss.sonatype.org进入Build Promotion→Staging Repositories在列表中选择org.videolan仓库——该仓库中应已能看到脚本上传的构件点击CloseSonatype 会校验构件的完整性POM 合法性、GPG 签名、sources/javadoc 是否齐备等等待其状态变为已关闭closed点击Release将 staging 仓库推送到 Maven Central。发布后验证Release 完成后构件通常会在几分钟内同步到 Maven Central 的官方仓库可分别访问以下路径核验libvlcrepo1.maven.org/maven2/org/videolan/android/libvlc-all/medialibraryrepo1.maven.org/maven2/org/videolan/android/medialibrary-all/数小时后构件还会被索引到 Maven 中央仓库的搜索引擎中search.maven.org按g:org.videolan.android检索。届时任何 Android 工程只需在 Gradle 中声明implementation org.videolan.android:libvlc-all:version即可直接拉取使用。小结整套发布体系的核心设计可以总结为三点git tag 驱动 CI 出包版本与源码一一对应CI 配置见 buildsystem/gitlab/.gitlab-ci.yml、脚本化签名上传deploy-to-mavencentral.sh 将解压、版本探测、GPG 签名、staging 上传与凭证清理收敛为一个命令、Nexus 人工把关Close/Release 两步避免未经确认的构件流入 Maven Central。对需要 fork 或自建镜像的团队这套流程与脚本同样可以整体复用——只需替换settings.xml中的凭证与自己命名空间下的groupId即可。赞分享音视频移动开发【免费下载链接】vlc-androidVLC for Android, Android TV and ChromeOS项目地址https://gitcode.com/gh_mirrors/vl/vlc-android点击查看免费下载相关推荐EasyPermissions 库发布指南从 GPG 签名到 Maven Central 的完整发布流程EasyPermissions 库发布指南从 GPG 签名到 Maven Central 的完整发布流程 EasyPermissions 是用于简化 Andr移动开发认证鉴权Android Library 分发实战使用 Android Studio 将自研库发布到 jCenter 与 Maven CentralAndroid Library 分发实战使用 Android Studio 将自研库发布到 jCenter 与 Maven Central 导读在 Andr文档教程知识库Buzz 离线音频转录完整指南一条录音到字幕导出的快速上手Buzz 离线音频转录完整指南一条录音到字幕导出的快速上手 你录下十分钟的会议Buzz 把它变成一份完整的文字稿。Buzz 是一款离线音频转录工具它调用人工智能语音音频本地部署桌面应用上一篇BepInEx完整教程5分钟掌握Unity游戏模组框架安装与使用下一篇3分钟快速上手XNBCLI免费工具让你的星露谷物语模组制作更简单创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考