当前位置: 首页 > news >正文

android下library打包aar并上传到maven,嵌入版的app

android嵌入版

    • 准备工作
    • 简化代码到三方app
    • 上传maven
    • 自动打包
    • 上面已经完成了library到三方app的流程

这几天在研究android下怎么把自己的项目当作一个library给到另一个app做嵌入使用,把这些记录下来,方便以后参考

准备工作

1.需要了解一些gradle 命令打包的知识
2.了解publish推送maven的知识

简化代码到三方app

我们把自己的项目简称A,三方项目简称B
1.我们需要先把自己项目A,进行简化,因为项目B不一定需要我们所有的功能,我们只用保留项目B使用的功能即可。
2.在项目B中新建moudle,并且命名library的名称
3.在新建成功后,复制项目A的libs,src二个文件过到项目B的library下
4.修改library下的build.gradle文件的依赖和报错
5.在项目B的build下面找到assemble执行,会在build的outputs生成aar包。
6.可以在项目B的app下面添加Implementation project(‘library名称’) 验证

上传maven

1.在上面打好aar包后,在build的outputs下面找到aar,拷贝到libs下面
2.在library的build.gradle下面放入push代码,代码里变量的定义在gradle.properties下面。

publishing {publications {def fileName = "libs/库名.aar";//注意修改def taskId = "pushtomaven";println "${fileName}"publishing.publications.create(taskId, MavenPublication) {artifact "${fileName}"groupId GROUP_IDartifactId "maven名称"version "1.0.14" }}repositories {maven {url MAVEN_AAR_RELEASE_URLcredentials {username NEXUS_USERNAMEpassword NEXUS_PASSWORD}}}
}

3.点击library下的publishing的publish开始上传,成功即可。这个上传只能添加,不能删除。

自动打包

这个是简化代码成功后,从打包到上传的linux命令操作,方便我们自动化操作,减轻错误代码

rm -rf ../项目名/库名/build/outputs/aar/*
cd ../项目名
gradle -continue 库名:build
//这个步可以不要,我是修改了包名
mv ../项目名/库名/build/outputs/aar/包名.aar ../项目名/库名/build/outputs/aar/包名.aar
rm -rf ../项目名/库名/libs/包名.aar
cp ../项目名/库名/build/outputs/aar/包名.aar ../项目名/库名/libs/
gradle -continue 库名:publish

上面已经完成了library到三方app的流程

但是如果,三方代码很多,我们想简化对三方app的依赖。
1、我们需要新建一个新项目,新建一个library到新的项目里
2、引入对三方app的依赖,只保留三方app中被用到的代码
注意:这里会有问题,因为简化了代码,所以打出来的R文件会比上面出来的小,少了很多没有用的资源,还要验证是不是有影响。

相关文章:

  • 爬虫笔记(三):实战qq登录
  • 视频上传 - 断点续传那点事
  • IDEA新建文件夹后右击不能创建class类排错方法
  • QT QDialog 中的按钮,如何按下后触发 accepted 消息?
  • Java+SpringBoot:构建稳定高效的计算机基础教学平台
  • UE中的Cast和CastChecked
  • 「云原生可观测团队」获选「InfoQ 年度技术内容贡献奖」
  • day38WEB攻防-通用漏洞XSS跨站绕过修复http_onlyCSP标签符号
  • 【Nginx】nginx入门
  • 一个 SpringBoot 项目能同时处理多少请求?
  • jmeter-03界面介绍
  • [SWPUCTF 2021 新生赛]Do_you_know_http
  • 红队打靶练习:PHOTOGRAPHER: 1
  • 使用No-SQL数据库支持连接查询用例的讨论
  • HarmonyOS远程真机调试方法
  • [Vue CLI 3] 配置解析之 css.extract
  • hadoop集群管理系统搭建规划说明
  • Java 内存分配及垃圾回收机制初探
  • Js基础知识(四) - js运行原理与机制
  • MySQL Access denied for user 'root'@'localhost' 解决方法
  • SAP云平台里Global Account和Sub Account的关系
  • unity如何实现一个固定宽度的orthagraphic相机
  • vue.js框架原理浅析
  • webpack4 一点通
  • 树莓派 - 使用须知
  • 思考 CSS 架构
  • 问题之ssh中Host key verification failed的解决
  • LevelDB 入门 —— 全面了解 LevelDB 的功能特性
  • raise 与 raise ... from 的区别
  • RDS-Mysql 物理备份恢复到本地数据库上
  • 移动端高清、多屏适配方案
  • !! 2.对十份论文和报告中的关于OpenCV和Android NDK开发的总结
  • #NOIP 2014#Day.2 T3 解方程
  • #我与Java虚拟机的故事#连载08:书读百遍其义自见
  • #我与Java虚拟机的故事#连载11: JVM学习之路
  • $L^p$ 调和函数恒为零
  • (C语言)strcpy与strcpy详解,与模拟实现
  • (Java)【深基9.例1】选举学生会
  • (vue)el-checkbox 实现展示区分 label 和 value(展示值与选中获取值需不同)
  • (二)丶RabbitMQ的六大核心
  • (附源码)springboot建达集团公司平台 毕业设计 141538
  • (剑指Offer)面试题34:丑数
  • (六)什么是Vite——热更新时vite、webpack做了什么
  • (十二)springboot实战——SSE服务推送事件案例实现
  • (转)Android学习笔记 --- android任务栈和启动模式
  • (转)socket Aio demo
  • *1 计算机基础和操作系统基础及几大协议
  • .MyFile@waifu.club.wis.mkp勒索病毒数据怎么处理|数据解密恢复
  • .net core Swagger 过滤部分Api
  • .NET DevOps 接入指南 | 1. GitLab 安装
  • .NET MVC 验证码
  • .NET 使用 ILMerge 合并多个程序集,避免引入额外的依赖
  • @RequestBody详解:用于获取请求体中的Json格式参数
  • [20171106]配置客户端连接注意.txt
  • [BT]BUUCTF刷题第8天(3.26)