Android Jitpack制作远程仓库aar流程

开发高效提速系列目录

  1. 软件多语言文案脚本自动化方案
  2. Android Jitpack制作远程仓库aar流程

Android Jitpack制作远程仓库aar流程

  • 背景
  • aar制作与使用
    • 1. aar制作
    • 2. aar使用
  • 异常解决
  • 总结

博客创建时间:2023.08.24
博客更新时间:2023.08.24

以Android studio gradle=8.7,SDKVersion 34来分析讲解。如图文和网上其他资料不一致,可能是别的资料版本较低而已。

背景

多年的Android工作,希望制作一个属于自己的Android 开发库,便于日常的使用。于是想到制作一个远程依赖库,通过比较多种方式,最终选定使用Jetpack的方案。通过自己亲测实验,按照网上一些人写的Jitpack aar制作方法踩了不少坑,最终总结一下制作远程仓库aar包的流程,避免大家踩同样的坑或者使用了不靠谱的方案。

aar制作与使用

1. aar制作

  1. 在制作aar之前先创建一个工程,创建两个library分别为Jitpack和Res,在两个module中分别创建两个类
    在这里插入图片描述

  2. Jitpack和Res的build.gradle文件中配置maven-publish插件
    在这里插入图片描述

  3. 添加jitpack.yml文件,不然会构建远程aar会失败

    jdk:- openjdk17#  如果还要指定特别的版本,还需要输入以下内容:
    #before_install:
    #  - sdk install java 11.0.10-open
    #  - sdk use java 11.0.10-open
    
  4. 在library 的build.gradle文件中配置artifactId参数

    dependencies {...
    }
    afterEvaluate {publishing {publications {// Creates a Maven publication called "release".release(MavenPublication) {from components.releasegroupId = 'com.gitee.xuanyuanxinyu'artifactId = 'Res'version = '1.0.9'}}}
    }
    
  5. 将项目打一个tag取名如v1.2.0,将其pull到远程仓库,然后就能在远程仓库看到新的tag(我用的是gitee)
    [图片]
    [图片]

  6. 然后在https://jitpack.io 搜索你的远程仓库,你会发现jitpack在自动帮你打包制作aar。当让https://jitpack.io 需要进行登陆和配置,这个简单百度一下就好
    [图片]

  7. 打开Jitpack构建日志,发现构建成功,且生成了Res.aar和Jitpack.aar两个,这就是方便我们一个项目中同时制作多个module aar库
    [图片]

2. aar使用

aar远程包制作好后接下来就是如何使用

  1. 在需要使用的Project的settings.gradle中配置远程依赖仓库
dependencyResolutionManagement {repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)repositories {google()mavenCentral()maven { url "https://jitpack.io" }}
}
  1. 在需要使用的module中配置库依赖,如我在app模块中依赖使用
implementation 'com.gitee.xuanyuanxinyu:SmartJitpack:1.2.0'

[图片]

  1. 使用aar中的资源[图片]
    [图片]

如果在一个groupId中有多个artifactId,如我这有两个artifactId 为Res和JitPack,如果只想使用其中一个aar则可以差异性配置·

// 仅依赖Res library
implementation("com.gitee.xuanyuanxinyu.SmartJitpack.Res:1.2.0")// 仅依赖Jitpack  library
implementation("com.gitee.xuanyuanxinyu.SmartJitpack.Jitpack:1.2.0")// 同时依赖Res和Jitpack library
implementation("com.gitee.xuanyuanxinyu:SmartJitpack:1.2.0")

异常解决

  1. No matching variant of com.android.tools.build:gradle:X.X.0 was found
    Jitpack中提示构建失败,提示错误如下
    [图片]

失败原因
这是因为Java 编译版本错误引起的
解决方案
添加一个jitpack.yml就解决了

jdk:- openjdk17#  如果还要指定特别的版本,还需要输入以下内容:
#before_install:
#  - sdk install java 11.0.10-open
#  - sdk use java 11.0.10-open

总结

最新最简单jitpack制作aar包教程,也可以参考我的Gitee Demo Project,希望能帮助你我他。
gitee地址:https://gitee.com/xuanyuanxinyu/SmartJitpack

参考资料:
Jitpack官方文档:https://docs.jitpack.io](https://docs.jitpack.io
Jitpack Github:https://docs.jitpack.io/
Jitpack官网:https://docs.jitpack.io/


相关链接

  1. 软件多语言文案脚本自动化方案
  2. Android Jitpack制作远程仓库aar流程

扩展链接:

  1. 项目开发混淆从初识到理解

博客书写不易,您的点赞收藏是我前进的动力,千万别忘记点赞、 收藏 ^ _ ^ !

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/407932.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【闪送-注册安全分析报告】

前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 暴力破解密码,造成用户信息泄露短信盗刷的安全问题,影响业务及导致用户投诉带来经济损失,尤其是后付费客户,风险巨大,造成亏损无底洞…

如何使用ssm实现农家乐信息平台的设计与实现+vue

TOC ssm066农家乐信息平台的设计与实现vue 第1章 绪论 1.1 课题背景 互联网发展至今,无论是其理论还是技术都已经成熟,而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播,搭配信息管理工具可以很好地为人们提供服务。所以各…

第12章 网络 (6)

12.8 网络层 12.8.4 分组转发 转发IP分组,根据目标地址分为: 1. 直接和本地相连。 2. 不直接相连,需要网关转发。 int ip_route_input_noref(skb, daddr, saddr, tos, net_dev): //查找路由表。 如果 skb->_skb_r…

AI产品经理的35岁危机_产品经理会有35岁危机吗

01 被裁的35岁朋友 去年,一家知名公司大裁员,很多 35 岁的非高管员工被牵连,包括我的一位朋友。 我第一时间联系了他,看看有没有能够帮上忙的地方。 我:传闻XX公司要收购你们? 朋友:是的。我要…

基于element-ui 日期选择器el-date-picker, 即对日期做区间限制

需求&#xff1a; 有时候需求会让我们对日期选择器做限制&#xff0c;即控制最多可跨越多少个月份&#xff0c;其中涉及到不同年份该如何计算。 HTML&#xff1a; <el-date-pickerv-model"timePeriod"type"monthrange"value-format"yyyyMM"…

鸿蒙Harmony编程开发:HTTPS服务端证书四种校验方式

如果你还是使用HttpRequest的话&#xff0c;答案是否定的。但是&#xff0c;鸿蒙开发者很贴心的推出了远场通信服务&#xff0c;可以使用rcp模块的方法发起请求&#xff0c;并且在请求时指定服务端证书的验证方式&#xff0c;关键点就在SecurityConfiguration接口上&#xff0c…

Kafka·概述

概览 Producer 生产者发送消息给broker&#xff0c;并不是生成一条消息后立刻发送&#xff0c;而是积攒多条后&#xff0c;批量发送到broker。可以通过配置参数batch.size&#xff08;单位字节&#xff09;调整积攒多少后发送 Consumer Topic 消息的分类 当Producer发送指定…

OpenAI 重回巅峰:ChatGPT-4O 最新模型超越谷歌 Gemini 1.5,多项测试夺冠!

谷歌上周发布的Gemini 1.5 Pro模型&#xff0c;在LMSYS办的聊天机器人竞技场Chatbot Arena中获得第一名。但是&#xff0c;OpenAI迅速反应&#xff0c;推出了最新的chatgpt-4o-latest模型&#xff0c;重新夺回了冠军头衔。 chatgpt-4o-latest模型简介 OpenAI最近推出了名为gpt-…

Unity教程(十二)视差背景

Unity开发2D类银河恶魔城游戏学习笔记 Unity教程&#xff08;零&#xff09;Unity和VS的使用相关内容 Unity教程&#xff08;一&#xff09;开始学习状态机 Unity教程&#xff08;二&#xff09;角色移动的实现 Unity教程&#xff08;三&#xff09;角色跳跃的实现 Unity教程&…

C语言-从键盘输入一个字符串,将其中的小写字母全部转换成大写字母,然后输出到一个磁盘文件test中保存,输人的字符串以“!”结束

题目要求&#xff1a; 从键盘输入一个字符串,将其中的小写字母全部转换成大写字母,然后输出到一个磁盘文件test中保存,输人的字符串以"!”结束 1.实现程序&#xff1a; #define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> int main() {FILE* fp fopen("…

鸿蒙内核源码分析(用户态锁篇) | 如何使用快锁Futex(上)

快锁上下篇 鸿蒙内核实现了Futex&#xff0c;系列篇将用两篇来介绍快锁&#xff0c;主要两个原因: 网上介绍Futex的文章很少&#xff0c;全面深入内核介绍的就更少&#xff0c;所以来一次详细整理和挖透。涉及用户态和内核态打配合&#xff0c;共同作用&#xff0c;既要说用户…

深入理解滑动窗口算法及其经典应用

文章目录 什么是滑动窗口&#xff1f;经典题型分析与讲解**1. 长度最小的子数组****2. 无重复字符的最长子串****3. 最长重复子数组****4. 将x减到0的最小操作数**5. 水果成篮 (LeetCode 904)6. 滑动窗口最大值 (LeetCode 239)7. 字符串中的所有字母异位词 (LeetCode 剑指 Offe…

区块链基础通识(1)——分布式系统的共识问题

分布式系统 我们最初了解区块链的时候&#xff0c;很多人会形容这个区块链是一个“分布式的不可篡改账本”&#xff0c;这是一个很形象的说法&#xff0c;但是我认为更为准确的形容是“所有节点共同维护的状态机”。为什么分布式和区块链不能划等号呢&#xff1f; 两种常见的…

数字身份革命:探索Web3对个人隐私的保护

在数字化时代&#xff0c;个人隐私和数据保护成为越来越重要的话题。随着Web3的兴起&#xff0c;这一领域正在经历一场深刻的变革。Web3不仅仅是技术的演进&#xff0c;更是对个人隐私保护的一次革命性革新。本文将探讨Web3如何通过去中心化技术重新定义数字身份&#xff0c;并…

npm install报错,解决记录:11个步骤诊断和解决问题

在处理npm install报错时&#xff0c;可以遵循以下步骤来诊断和解决问题&#xff1a; 查看错误信息&#xff1a; 错误信息通常会给出问题的线索&#xff0c;例如依赖包版本冲突、网络问题、权限问题等。 更新npm和Node.js&#xff1a; 首先尝试更新npm和Node.js到最新版本&…

电子电气架构--- 智能汽车电子架构的核心诉求

我是穿拖鞋的汉子&#xff0c;魔都中坚持长期主义的汽车电子工程师。 老规矩&#xff0c;分享一段喜欢的文字&#xff0c;避免自己成为高知识低文化的工程师&#xff1a; 屏蔽力是信息过载时代一个人的特殊竞争力&#xff0c;任何消耗你的人和事&#xff0c;多看一眼都是你的不…

Windows平台SDKMAN工具使用

为方便jvm生态的软件版本管理&#xff0c;可以使用sdkman工具来安装和管理诸如java、gradle等软件的当前使用版本。尤其是大多数程序员都是在windows平台开发&#xff0c;团队开发通常都需要统一的jvm相关软件的版本。这里给大家演示下windows平台如何安装和使用sdkman来实现这…

安全架构设计

目录 1安全需求分析 2安全架构原则 3安全架构方法 系统架构完整实例_系统架构设计案例-CSDN博客 1安全概述 系统安全架构设计&#xff0c;主要包含&#xff1a;物理安全&#xff0c;网络安全&#xff0c;系统安全&#xff0c;数据安全&#xff0c;应用安全。 完整性(Integ…

内存管理篇-05物理页面的迁移类型migratetype

本节内容依旧是对上节课伙伴系统的补充&#xff0c;主要介绍了新版伙伴系统的页面迁移相关的内容 为什么要引入页面迁移类型&#xff1f;新版本伙伴系统针对老版本的伙伴系统的升级改进。主要优化memory compaction内存碎片整理的过程。 页面迁移实际上就是伙伴系统中free_area…

构建高效的串行任务执行器:SerialExecutor深度解析

本文主要介绍怎么去实现一个支持串行执行任务的SerialExecutor执行器 摘要 在复杂的异步编程中&#xff0c;有时我们需要确保任务以串行的方式执行&#xff0c;以维护任务间的依赖关系或顺序。SerialExecutor 是一个自定义的执行器&#xff0c;它封装了 Java 的 Executor 接口…