Gradle如何发布一个Android开源框架到JitPack

2024-06-03 09:12

本文主要是介绍Gradle如何发布一个Android开源框架到JitPack,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

序言

在Android领域耕耘了多年的老司机们,技术大多已经沉淀到足以自己写各种各样的框架了。你有没有想过?其实你可以将写好的框架开源出来,让更多人受益,提升开发效率。亦或者是引用过别人com.github打头的开源框架,但是不知道自己如何发布这样一个框架出去。如果你对这样的写法不熟悉,那么,你还有待加油。

// 添加以下代码到项目根目录下的build.gradle
allprojects {repositories {maven { url "https://jitpack.io" }}
}
// 添加以下代码到app模块的build.gradle
dependencies {def latest_version = '1.0'implementation 'com.github.dora4:dora-eventbus-support:$latest_version'
}
旧版本Gradle发布方式

那么我们言归正传,由于库项目不是一个app项目,所以不应该保留app模块。当然保留也没关系,只不过看着有些别扭罢了。我们第一步是要创建一个app项目,然后有两种选择。要么你再创建一个lib模块,然后把app模块删除掉。也可以直接将app模块更名为lib。改文件夹名称还不行,接下来你应该在settings.gradle中包含这个文件夹。

include ':lib'

然后把测试相关的一些东西去掉,只留纯净的你的框架的代码。你一顿操作猛如虎,咚咚咚地将框架代码写好了,也调试好了,现在到了发布环节了。

classpath "com.github.dcendents:android-maven-gradle-plugin:1.5"

在项目根目录到build.gradle引入这个gradle插件,然后在lib模块的build.gradle中加入以下代码。

apply plugin: 'com.android.library'
apply plugin: 'com.github.dcendents.android-maven'

细心的小伙伴应该发现了,这里是com.android.library,而不是com.android.application。因为我们是库项目,不是app项目。接下来我们将代码提交到GitHub这个全球最大的同性交友平台,号称“GuyHub”。然后我们在这里添加库的发布。

截屏2023-04-10 00.53.58.png

点击Craft a new release。

截屏2023-04-10 00.55.13.png
然后在输入框填入框架的版本号。

截屏2023-04-10 00.57.13.png
点击Publish release就可以了。

截屏2023-04-10 01.00.07.png
最后打开 https://jitpack.io 查看开源框架的编译进度。

新版本Gradle发布方式

如果可以一直使用上续代码发布框架那该多好啊!很遗憾,当gradle版本发生了一次重大更新后,写法就千差万别了,但大体流程还是一致的。笔者也是研究了许久,才又重新将开源框架使用高版本的gradle发布出去。我觉得这里应该有个👍。

新版本的gradle的发布我采用kts脚本,当然这个不是必须的,只不过kts有代码提示罢了。新版本gradle发布开源框架参考这个项目https://github.com/dora4/dora-eventbus-support ,这个库比较简洁,方便学习。我使用另一个库的代码讲解。

plugins {id("com.android.library")id("kotlin-android")id("maven-publish")
}android {namespace = "dora.dcache"compileSdk = 33defaultConfig {minSdk = 21targetSdk = 33}buildTypes {release {isMinifyEnabled = falseproguardFiles(getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro")}}compileOptions {sourceCompatibility = JavaVersion.VERSION_1_8targetCompatibility = JavaVersion.VERSION_1_8}
}dependencies {implementation("androidx.appcompat:appcompat:1.2.0")implementation("androidx.lifecycle:lifecycle-livedata-ktx:2.2.0")implementation("com.squareup.okhttp3:okhttp:4.8.0")implementation("com.squareup.retrofit2:converter-gson:2.8.1")implementation("com.squareup.retrofit2:retrofit:2.8.1")implementation("com.squareup.retrofit2:adapter-rxjava2:2.8.1")implementation("io.reactivex.rxjava2:rxjava:2.0.4")implementation("io.reactivex.rxjava2:rxandroid:2.0.1")implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.5.10")implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.4.2")implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.4.2")
}afterEvaluate {publishing {publications {register("release", MavenPublication::class) {from(components["release"])groupId = "com.github.dora4"artifactId = "dcache-android"version = "1.6.19"}}}
}

最主要的是要apply maven-publish这个插件,然后在afterEvaluate中加入发布的配置信息。你别看代码很简单,但是网上的资料大多都有各种各样的问题,找到可以让你编译过的并不容易。在此之前你要在settings.gradle.kts中加入以下代码。

pluginManagement {resolutionStrategy {eachPlugin {if (requested.id.namespace == "com.android.tools.build") {useModule("com.android.tools.build:gradle:4.1.2")}if (requested.id.namespace == "org.jetbrains.kotlin") {val kotlin_version = "1.8.10"useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version")}if (requested.id.namespace == "com.github.dcendents") {useModule("com.github.dcendents:android-maven-gradle-plugin:1.5")}}}
}

然后在项目根目录的build.gradle.kts加入以下代码。

plugins {id("com.android.library") version("7.3.1") apply(false)id("org.jetbrains.kotlin.android") version("1.7.20") apply(false)id("com.github.dcendents.android-maven") version("1.5") apply(false)
}

OK,大功告成!剩下的跟旧版本的发布方式类似。

对写开源框架的一点看法

作为一个开发开源框架的Android工程师,一定要有一种精益求精的精神,在一个比较小的功能上尽可能做到完美,把各种情况都考虑到位。因为框架冗余代码太多,别人在选框架的时候也会考虑对apk安装包大小影响的。尽量做到小而精,而不是大而全。代码越多,越容易出bug,而开源框架是要给很多人使用的,别人不太可能使用你有很多bug的框架,除非那人本来也不太懂。大家一起把自己擅长的领域开源出来,这样可以节省大家的开发时间,不是很好的一件事吗?

这篇关于Gradle如何发布一个Android开源框架到JitPack的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1026570

相关文章

Android 悬浮窗开发示例((动态权限请求 | 前台服务和通知 | 悬浮窗创建 )

《Android悬浮窗开发示例((动态权限请求|前台服务和通知|悬浮窗创建)》本文介绍了Android悬浮窗的实现效果,包括动态权限请求、前台服务和通知的使用,悬浮窗权限需要动态申请并引导... 目录一、悬浮窗 动态权限请求1、动态请求权限2、悬浮窗权限说明3、检查动态权限4、申请动态权限5、权限设置完毕后

定价129元!支持双频 Wi-Fi 5的华为AX1路由器发布

《定价129元!支持双频Wi-Fi5的华为AX1路由器发布》华为上周推出了其最新的入门级Wi-Fi5路由器——华为路由AX1,建议零售价129元,这款路由器配置如何?详细请看下文介... 华为 Wi-Fi 5 路由 AX1 已正式开售,新品支持双频 1200 兆、配有四个千兆网口、提供可视化智能诊断功能,建

Android里面的Service种类以及启动方式

《Android里面的Service种类以及启动方式》Android中的Service分为前台服务和后台服务,前台服务需要亮身份牌并显示通知,后台服务则有启动方式选择,包括startService和b... 目录一句话总结:一、Service 的两种类型:1. 前台服务(必须亮身份牌)2. 后台服务(偷偷干

修改若依框架Token的过期时间问题

《修改若依框架Token的过期时间问题》本文介绍了如何修改若依框架中Token的过期时间,通过修改`application.yml`文件中的配置来实现,默认单位为分钟,希望此经验对大家有所帮助,也欢迎... 目录修改若依框架Token的过期时间修改Token的过期时间关闭Token的过期时js间总结修改若依

Android kotlin语言实现删除文件的解决方案

《Androidkotlin语言实现删除文件的解决方案》:本文主要介绍Androidkotlin语言实现删除文件的解决方案,在项目开发过程中,尤其是需要跨平台协作的项目,那么删除用户指定的文件的... 目录一、前言二、适用环境三、模板内容1.权限申请2.Activity中的模板一、前言在项目开发过程中,尤

五大特性引领创新! 深度操作系统 deepin 25 Preview预览版发布

《五大特性引领创新!深度操作系统deepin25Preview预览版发布》今日,深度操作系统正式推出deepin25Preview版本,该版本集成了五大核心特性:磐石系统、全新DDE、Tr... 深度操作系统今日发布了 deepin 25 Preview,新版本囊括五大特性:磐石系统、全新 DDE、Tree

Linux Mint Xia 22.1重磅发布: 重要更新一览

《LinuxMintXia22.1重磅发布:重要更新一览》Beta版LinuxMint“Xia”22.1发布,新版本基于Ubuntu24.04,内核版本为Linux6.8,这... linux Mint 22.1「Xia」正式发布啦!这次更新带来了诸多优化和改进,进一步巩固了 Mint 在 Linux 桌面

多模块的springboot项目发布指定模块的脚本方式

《多模块的springboot项目发布指定模块的脚本方式》该文章主要介绍了如何在多模块的SpringBoot项目中发布指定模块的脚本,作者原先的脚本会清理并编译所有模块,导致发布时间过长,通过简化脚本... 目录多模块的springboot项目发布指定模块的脚本1、不计成本地全部发布2、指定模块发布总结多模

gradle安装和环境配置全过程

《gradle安装和环境配置全过程》本文介绍了如何安装和配置Gradle环境,包括下载Gradle、配置环境变量、测试Gradle以及在IntelliJIDEA中配置Gradle... 目录gradle安装和环境配置1 下载GRADLE2 环境变量配置3 测试gradle4 设置gradle初始化文件5 i

Android数据库Room的实际使用过程总结

《Android数据库Room的实际使用过程总结》这篇文章主要给大家介绍了关于Android数据库Room的实际使用过程,详细介绍了如何创建实体类、数据访问对象(DAO)和数据库抽象类,需要的朋友可以... 目录前言一、Room的基本使用1.项目配置2.创建实体类(Entity)3.创建数据访问对象(DAO