IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> Android SDK开发,解决生成aar本地嵌套及远程依赖嵌套 -> 正文阅读

[移动开发]Android SDK开发,解决生成aar本地嵌套及远程依赖嵌套

在这里插入图片描述

需求及问题描述

需求:把lib module打成一个包 提供给第三方,依赖方式可以是maven依赖也可以是本地aar文件。

问题:我的lib module中引用了第三方的本地库和一些远程库,正常的打包方式无法把这些嵌套的库打进去。

解决方案

借助第三方打包插件:fat-aar-android
插件使用方法:

一 、Apply plugin

添加以下代码到你工程根目录下的build.gradle文件中:

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.kezong:fat-aar:1.2.12'
    } }

添加以下代码到你的主library的build.gradle中:

apply plugin: 'com.kezong.fat-aar'

二、Embed dependencies

修改嵌套依赖方式

dependencies {
    implementation fileTree(dir: 'libs', include: '*.jar')
    // java dependency
    embed project(path: ':lib-java', configuration:'default')
    // aar dependency
    embed project(path: ':lib-aar', configuration:'default')
    // local full aar dependency, just build in flavor1
    flavor1Embed project(path: ':lib-aar-local', configuration:'default')
    // local full aar dependency, just build in debug
    debugEmbed (name:'lib-aar-local2',ext:'aar')
    // local full aar dependency
    embed (name:'lib-aar-local3',ext:'aar')
    local full aar dependency only compile,不会打包进去
    embed files('libs/hjffmpeg-1.0.2.aar')
    // remote jar dependency
    embed 'com.google.guava:guava:20.0'
    // remote aar dependency
    embed 'com.facebook.fresco:fresco:1.11.0'
    // don't want to embed in
    // 不建议使用implementation,因为该依赖可能与application的依赖版本不一致,使用implementation可能会导致R类找不到的问题
    compileOnly 'com.android.support:appcompat-v7:27.1.1' }

三、打包aar

1.打包成本地aar包

运行gradlew assemble 命令即可,会在build目录中生成aar文件。

2.上传maven

1.gradle.properties中添加:
GROUP_ID=com.cui.demo
POM_ARTIFACT_ID=libname
LOCAL_REPO_URL=http://nexus.cui.net/repository/mymaven/
LOCAL_REPO_URL_SNAP_SHOT=http://nexus.cui.net/repository/mymaven-Snapshot/
USER_NAME=cui
PASSWORD=cui
maven_pom__packaging=aar
maven_pom__description=test upload
2.lib module build.gradle中添加:
apply plugin: 'maven'

android{
	defaultConfig {
	        minSdk 21
	        targetSdk 27
	        versionCode 1
	        versionName "1.0.0"
	        
	        ndk {
	            abiFilters = ['armeabi-v7a']
	        }
	    }
}
// type显示指定任务类型或任务, 这里指定要执行Javadoc这个task,这个task在gradle中已经定义
task androidJavadocs(type: Javadoc) {
    // 设置源码所在的位置
    source = android.sourceSets.main.java.sourceFiles
}

// 生成javadoc.jar
task androidJavadocsJar(type: Jar) {
    // 指定文档名称
    classifier = 'javadoc'
    from androidJavadocs.destinationDir
}

// 生成sources.jar
task androidSourcesJar(type: Jar) {
    classifier = 'sources'
    from android.sourceSets.main.java.sourceFiles
}

// 产生相关配置文件的任务
artifacts {
    archives androidSourcesJar
    archives androidJavadocsJar
}
//上传 到 maven 的任务
uploadArchives {
    repositories.mavenDeployer {

        repository(url: project.LOCAL_REPO_URL) {
            authentication(userName: project.USER_NAME, password: project.PASSWORD)
        }

        snapshotRepository(url: project.LOCAL_REPO_URL_SNAP_SHOT) {
            authentication(userName: project.USER_NAME, password: project.PASSWORD)
        }

        pom.project {
            // 注意:【这里通过切换 versionName 的赋值来区分上传快照包还是正式包(snapshot 版本必须以 -SNAPSHOT 结尾)】
            version android.defaultConfig.versionName+'-SNAPSHOT'
//            version android.defaultConfig.versionName
            artifactId POM_ARTIFACT_ID
            groupId GROUP_ID
            packaging maven_pom__packaging
            description maven_pom__description
        }
    }
}

执行gradlew uploadArchives 即可。

在这里插入图片描述

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-12-14 16:03:59  更:2021-12-14 16:07:16 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 9:40:56-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码