标签 Gradle 下的文章

一、发布前必知:价值与前提

为什么要发布到 Maven 中央仓库?

  • 全局可访问:任何使用 Maven、Gradle 的开发者都能轻松引入,无需额外配置私有仓库
  • 标准化保障:遵循严格的发布规范,提升组件的可信度与安全性
  • 版本自动管理:中央仓库会妥善保存各版本,避免依赖冲突与版本混乱
  • 社区认可:开源共享是技术成长的重要途径,优质组件能获得更多反馈与迭代

发布前提

  • 组件非敏感信息:中央仓库所有内容公开,严禁发布企业私有代码或涉密逻辑
  • 遵守开源协议:推荐使用 Apache License 2.0 等主流开源协议,避免版权纠纷
  • 准备必要工具:已安装 Maven(配置好环境变量)、可访问 GitHub/Gitee 等代码仓库

二、核心步骤:从配置到发布全流程

第一步:Sonatype 平台配置(获取发布权限)

Maven 中央仓库由 Sonatype 维护,所有发布操作需通过其平台授权:

  1. 访问 Sonatype 官网注册或登录账号,建议绑定常用邮箱
    image.png
  2. 申请 Namespace:登录后进入 Publish 页面,点击 "Add Namespace",格式需遵循反向 DNS 规则
  • 有自有域名:如 www.example.com 对应 com.example
  • 无域名:使用代码仓库地址,GitHub 用户填 io.github. 用户名,Gitee 用户填 io.gitee. 用户名
    image.png
  1. 验证 Namespace:点击 "Verify Namespace",系统会生成验证密钥,需在对应代码仓库创建同名公开仓库,完成后点击 "Verify Namespace",显示 "Verified" 即通过
    image.png
    image.png
  2. 生成访问 Token:点击右上角用户名 →View Account→Generate User Token,复制生成的用户名和密码,后续用于 Maven 认证(仅显示一次,务必保存)
    image.png
    image.png
    image.png

第二步:GPG 密钥配置(保障代码安全)

为防止组件被篡改,中央仓库要求所有发布的文件必须经过 GPG 签名:

  1. 下载安装 GPG:前往 GnuPG 官网,根据系统选择对应版本(Windows 选 Gpg4win,Mac 选 Mac GPG)
    image.png
  2. 生成密钥对:打开终端 / 命令提示符,输入 gpg --gen-key,按提示填写真实姓名、邮箱(与 Sonatype 账号一致),设置密钥密码并牢记
    image.png
    image.png
  3. 记录密钥 ID:生成成功后,找到输出中 "pub" 行后的一串字符(如 519314C3477B2B3122A13EC8123FB84FB9BC06DE),这是你的公钥 ID
    image.png
  4. 上传公钥至公共服务器:执行 gpg --keyserver hkp://keyserver.ubuntu.com:11371 --send-keys 你的密钥ID,让中央仓库能验证签名合法性
  5. 验证 gpg 秘钥: 有两种方式可以验证秘钥,一种是通过 gpg 命令: gpg --keyserver keyserver.ubuntu.com --recv-keys xxxxxx;另外一种方式直接到 https://keyserver.ubuntu.com/秘钥平台查询:
    image.png
    image.png
    出现以上内容表明秘钥发布成功。

第三步:Maven 环境配置(关联认证信息)

打开 Maven 的 settings.xml 文件(通常在 conf 目录下),添加以下配置:

<!-- Sonatype访问权限配置 -->
<servers>
    <server>
        <id>central</id>
        <username>Sonatype生成的Token用户名</username>
        <password>Sonatype生成的Token密码</password>
    </server>
</servers>
<!-- GPG签名配置 -->
<profiles>
    <profile>
        <id>gpg</id>
        <properties>
            <gpg.executable>gpg</gpg.executable>
            <gpg.keyname>你的GPG绑定邮箱</gpg.keyname>
            <gpg.passphrase>你的GPG密钥密码</gpg.passphrase>
            <gpg.useagent>true</gpg.useagent>
        </properties>
    </profile>
</profiles>

第四步:项目 POM 文件配置(标准化组件信息)

修改待发布项目的 pom.xml,补充必要信息(直接复制替换占位符即可):

<project>
    <!-- 核心信息:GroupID需与验证通过的Namespace一致 -->
    <groupId>io.github.你的用户名</groupId>
    <artifactId>组件名称</artifactId>
    <version>1.0.0.RELEASE</version>
    <!-- 必须是正式版本,禁止SNAPSHOT -->
    <url>你的代码仓库地址(如https://github.com/用户名/仓库名)</url>
    <!-- 许可证信息(推荐Apache 2.0) -->
    <licenses>
        <license>
            <name>The Apache License, Version 2.0</name>
            <url>https://www.apache.org/licenses/LICENSE-2.0</url>
        </license>
    </licenses>
    <!-- 开发者信息 -->
    <developers>
        <developer>
            <name>你的姓名</name>
            <email>你的邮箱</email>
        </developer>
    </developers>
    <!-- 代码仓库信息 -->
    <scm>
        <connection>scm:git:你的仓库克隆地址(如https://github.com/用户名/仓库名.git)</connection>
        <developerConnection>scm:git:你的仓库SSH地址(如git@github.com:用户名/仓库名.git)</developerConnection>
        <url>你的仓库网页地址</url>
    </scm>
    <!-- 必要插件配置 -->
    <build>
        <plugins>
            <!-- 源码打包插件 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-source-plugin</artifactId>
                <version>3.3.0</version>
                <executions>
                    <execution>
                        <id>attach-sources</id>
                        <goals>
                            <goal>jar-no-fork</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <!-- Javadoc打包插件 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-javadoc-plugin</artifactId>
                <version>2.9.1</version>
                <configuration>
                    <charset>UTF-8</charset>
                    <encoding>UTF-8</encoding>
                    <docencoding>UTF-8</docencoding>
                    <additionalparam>-Xdoclint:none</additionalparam>
                </configuration>
                <executions>
                    <execution>
                        <id>attach-javadocs</id>
                        <goals>
                            <goal>jar</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <!-- GPG签名插件 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-gpg-plugin</artifactId>
                <version>3.1.0</version>
                <executions>
                    <execution>
                        <id>sign-artifacts</id>
                        <phase>verify</phase>
                        <goals>
                            <goal>sign</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <!-- 中央仓库发布插件 -->
            <plugin>
                <groupId>org.sonatype.central</groupId>
                <artifactId>central-publishing-maven-plugin</artifactId>
                <version>0.4.0</version>
                <extensions>true</extensions>
                <configuration>
                    <publishingServerId>central</publishingServerId>
                    <tokenAuth>true</tokenAuth>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

第五步:打包上传与发布

  1. 推送项目代码:将配置好的项目推送到对应的 GitHub/Gitee 仓库(确保仓库公开)
  2. 执行部署命令:打开终端,进入项目根目录,执行 mvn clean deploy -Dmaven.test.skip=true,过程中会提示输入 GPG 密钥密码,输入后等待执行完成
  3. 等待 Sonatype 审核:登录 Sonatype 平台,在 Deployments 中可看到状态(PUBLISHING 为审核中),审核时间通常为几小时到 1 天,状态变为 PUBLISHED 即发布成功
    image.png

三、验证与使用:让别人轻松引入你的组件

发布成功后,可通过 Maven 中央仓库搜索页,输入 GroupID 或组件名称查询你的组件。其他开发者只需在 pom.xml 中添加以下依赖,即可直接使用:

<dependency>
    <groupId>io.github.你的用户名</groupId>
    <artifactId>组件名称</artifactId>
    <version>1.0.0.RELEASE</version>
</dependency>

四、注意事项与避坑指南

  1. 版本不可逆:发布后的版本无法删除或修改,务必做好测试再发布,建议遵循语义化版本规范
  2. 隐私保护:严禁发布包含密钥、敏感业务逻辑的组件,一旦发布无法撤回
  3. 常见错误处理:

    • 提示 "Namespace 不允许":检查 POM 文件的 GroupID 与 Sonatype 验证通过的 Namespace 完全一致
    • 提示 "SNAPSHOT 不被允许":将版本号改为正式版本(如 1.0.0.RELEASE),中央仓库不接受快照版本
    • 签名验证失败:确认 GPG 密钥已上传至公共服务器,且 settings.xml 中 GPG 配置信息正确

至此,你的组件就正式加入 Maven 中央仓库的生态了!从自己用的工具到全球开发者可复用的组件,只差这一套标准化的发布流程。如果遇到问题,可参考 Sonatype 官方文档或留言交流,祝你发布顺利 ~

Android studio安装教程 保姆级教程

如果想要彻底重装Android studio可以删除
目录C:\Users\用户名
中的以下几个文件夹。
.android
.gradle
.Android studio(Android studio 4.0版本之前才有)

隐藏文件夹(Android studio 4.0版本后才有)
C:\Users\用户名\AppData\Roaming\Google\AndroidStudio4.2
C:\Users\用户名\AppData\Local\Google\AndroidStudio4.2
比如:

**安装Win 11 环境下 Android Studio Iguana | 2023.2.1
版本为例。(部分截图为旧版本不影响使用)**

下载地址: https://pan.quark.cn/s/d557657e15a6

首先下载Android studio安装包

趁下载的时间,我们进入电脑的一个盘跟目录下面,创建我们Android
studio的安装目录,sdk的目录,项目的存放目录,方便我们日后查找

这里我们创建的是AndroidTool目录,创建如上图所示五个子目录。

AndroidStudio 存放Android studio的软件程序的地方,也就是Android

studio的安装目录
AndroidSDK 存放SDK的地方,包含adb工具等
AndroidProject 存放我们写的Android
项目代码,建议把我们所有的源代码放在此目录下方便日后查找
AndroidDrive 可选
用来存放我们虚拟机的地方,设置方法参考本文末尾,非必须。默认在C盘下存放。
AndroidGradle 可选
用来存放gradle缓存依赖的地方,非必须。默认在C盘下存放。

下载完成后运行文件,进入如下界面

点击next

点击next

选择对应的Android studio安装目录,这里我们选择我们一开始创建好的Android
studio目录即可。然后继续点击next

点击install

等待安装完成!

安装成功后会在开始菜单存在Android Studio的启动图标,点击即可启动Android
studio。

安装成功点击finish,等待启动。

随便点击一个,发不发送报告都行。

注:以下截图为旧版本截图,不过不影响使用。

进入熟悉的画面

询问我们是否有配置文件导入,这里直接选择不导入,点ok
等待文件下载。

进度条走完后出现弹窗【无法访问sdk】,先点击cancel。

再点击next

选择安装类型,这里我们自定义,第二个,点击next

设置我们的jdk目录,可以默认的,也可以自定。这里我们选择默认即可。

选择风格,黑暗模式

设置sdk目录,这里选择我们一开头创建的AndroidSDK目录。(Android Virtual
Device 无法勾选可以先跳过直接点击next)点击next

设置虚拟机相关的配置,根据电脑配置自行拉取,这里我们默认。

确认配置信息,点击next。

确认所有选项,都点击了accept,然后点击Finish。
等待下载完成。

等待下载安装完成。

下载安装完成,点击finish。

下面开始创建hello word项目,点击 new project

注:这里Empty Activity与Empty Views
Activity的区别是主要是UI框架的不同。
Empty Activity:为谷歌新推出的Jetpack
Compose声明式UI框架,主要的开发语言为kotlin,不支持java
Empty Views Activity:为Android
传统的View控件布局的项目模板,支持kotlin和java。
初学者一般建议采用Empty Views Activity进行入门学习。

选择empty activity模板,点击next

设置项目名称,包名,路径(路径选择我们一开始创建的AndroidProject目录,注意加项目名称,尽量不要有中文),选择语言(java或kotlin都可以),选择最低支持的Android
版本,这里选择6.0,点击finish。

等待下载内容的完成。

点击finish。

等待项目构建完成
这里由于是第一次启动,所以需要下载gradle以及Android项目需要引用的包,视网络好坏程度决定等待时间长短

点击绿色三角形位置,运行项目。

等待项目构建完成。

成功显示Hello World!。
到这里就安装成功啦。

常见问题:

1.在安装Android Studio
的过程中进行到设置SDK目录这一环节时,可能出现以下的情况,无法勾选需要安装的选项,导致后续步骤出现以下情况。

可以尝试修改电脑的系统时间为美国太平洋时间,然后删除文章前面所述的相关文件,重新打开Android
Studio配置一遍即可。

初学者进阶操作:

1. 下载sdk工具(可选)

从file->setting打开下面界面

这里是下载Android 版本,和sdk构建工具的地方。
一般我们只需要下载我们需要的版本和对应的工具,当然也可以全量下载,全量的话估测大概需要500G的硬盘空间。
这里演示下载最新的Android版本和构建工具。

勾选对应的版本

勾选对应的版本

点击ok。如果出现同意协议的界面,则全部点击accept,然后点击next

等待下载完成。

点击finish

这里已经下载成功了

2. ANDROID_EMULATOR_HOME 虚拟机环境变量(可选)

自从学了Android,C盘天天爆红怎么办?C盘一查,C:\Users\用户.android这个文件占了10+GB。怎么办?
这时候可以创建ANDROID_EMULATOR_HOME环境变量。对于Android studio
4.3已下的用户则需要设置ANDROID_SDK_HOME。
这里我们简单演示已下,如何配置环境变量到我们的目录。

如果不设置环境变量,开发者创建的虚拟设备默认保存在
C:\ Users \用户.android目录下;
如果设置了ANDROID_EMULATOR_HOME环境变量,那么虚拟设备就会保存在%ANDROID_EMULATOR_HOME%/.android路径下。
这里有一点非常容易混淆的地方,此处的%ANDROID_EMULATOR_HOME%环境变量并不是Android
SDK的安装目录。

3. Gradle 位置变更(可选)

C:\Users\用户.gradle也是也非常容易变成非常大的文件夹,这个可以直接在Android
studio进行改动

直接选择相应的路径即可。

​《FFmpeg开发实战:从零基础到短视频上线》一书的“第 12 章  FFmpeg的移动开发”介绍了如何使用FFmpeg在手机上剪辑视频,方便开发者更好地开发类似剪映那样的视频剪辑软件。那么在Android系统上还有一款国产的开源视频压缩工具VideoSlimmer,通过该框架可以更方便地压缩视频大小,下面就来介绍如何在App工程中使用VideoSlimmer。

VideoSlimmer是一款专为Android平台设计的开源视频压缩工具,它通过Mediacodec实现视频压缩功能,并具有较高的压缩性能。VideoSlimmer支持压缩的视频格式包括mp4和3gp。
VideoSlimmer的源码托管地址为 https://github.com/zolad/VideoSlimmer (星星数0.2k),最近版本更新于2018年10月,该版本的压缩包下载地址为 https://github.com/zolad/VideoSlimmer/archive/refs/heads/master.zip
VideoSlimmer提供了两种集成方式:引用在线库、直接导入源码,分别说明如下:

一、引用VideoSlimmer在线库

Android工程引用VideoSlimmer在线库时,需要修改以下两个配置:
1、打开模块级别的build.gradle,给dependencies节点补充下面几行配置,表示引入1.0.0版本的VideoSlimmer库:

implementation 'com.zolad:videoslimmer:1.0.0'

2、打开App模块的src/main/AndroidManifest.xml,给manifest节点补充下面两行权限配置,表示声明读写存储空间两个权限:

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

二、直接导入VideoSlimmer源码

由于VideoSlimmer的发布时间较早,为了让小海豚版本的Android Studio Dolphin能够打开它的范例工程,需要对VideoSlimmer的App工程作如下修改:

1、升级Gradle版本

打开VideoSlimmer工程的gradle/wrapper/gradle-wrapper.properties,把下面这行配置

distributionUrl=https://services.gradle.org/distributions/gradle-4.4-all.zip

改成如下这行配置,表示把Gradle版本从4.4升级到5.4.1。

distributionUrl=https://services.gradle.org/distributions/gradle-5.4.1-bin.zip

2、更新工具库的仓库位置

打开VideoSlimmer工程的build.gradle,把里面的两处“jcenter()”都改为以下配置:

// 以下四行添加阿里云的仓库地址,方便国内开发者下载相关插件
maven { url 'https://maven.aliyun.com/repository/jcenter' }
maven { url 'https://maven.aliyun.com/repository/google'}
maven { url 'https://maven.aliyun.com/repository/gradle-plugin'}
maven { url 'https://maven.aliyun.com/repository/public'}
google()
mavenCentral()

因为jcenter仓库已经废弃,所以改成引用国内的仓库位置。
此外,还要把下面两行配置

classpath 'com.android.tools.build:gradle:3.1.2'

改成下面这行配置,表示把Gradle插件版本升级到3.2.0版本:

classpath 'com.android.tools.build:gradle:3.2.0'

3、调整模块的build.gradle

打开VideoSlimmer工程的app/build.gradle,找到下面这行配置:

compileSdkVersion 28

在上面这行下方补充下面这行配置,表示指定编译工具的版本号:

buildToolsVersion "28.0.3"

还要把下面这行配置

implementation 'com.android.support:appcompat-v7:28.0.0-rc01'

改成下面这行配置:

implementation 'com.android.support:appcompat-v7:28.0.0'

改完build.gradle,记得单击Sync同步App工程配置。

完成以上三处修改后,重新编译App安装到真机上,挑选一个视频后进入视频压缩界面如下图所示:

可见选中视频正在压缩当中。稍等片刻视频压缩完成,界面下方展示结果视频的保存路径以及压缩进度,如下图所示:

发现压缩前的视频大小为85MB,压缩后的视频大小为12MB,仅为原视频的七分之一左右,可见压缩效果还是不错的。压缩之后的结果视频放在公共存储空间的Movies目录,完整路径为“我的手机/Movies/VIDEOSLIMMER_yyyymmdd_hhmiss.mp4”,其中yymmdd为年月日,hhmiss为时分秒。

更多详细的FFmpeg开发知识参见《FFmpeg开发实战:从零基础到短视频上线》一书。