Android已有应用生成aar 并集成到其他应用内部(本地AAR)

本文介绍如何将项目打包成aar并在另一项目中集成使用。包括修改配置、处理清单文件冲突及资源冲突等问题。

1、假设已经有了项目A打算将A项目生成aar

(1)在主app的build.gradle下 将 apply plugin: ‘com.android.application’ 修改为 apply plugin: ‘com.android.library’
(2)在主app的build.gradle下 将 defaultConfig {} 中的applicationId 去掉
如下图:
在这里插入图片描述
(3)处理插件应用中的AndroidMenifest.xml 文件。将启动activity去掉,其他activity 不用屏蔽,直接保留即可。这里必须屏蔽掉,因为应用加载aar时会自动合并AndroidMenifenst文件到主应用的清单文件中。否则就会在主应用的清单文件中出现两个启动activity。
在这里插入图片描述
按上述步骤修改完成后,重新rebuild 项目即可,之后会生成aar文件
路径如下:
在这里插入图片描述
需要注意的是我的demo中,添加了aar内部页面跳转,主要是为了测试一下aar是否和安装apk一样,能不能自行跳转,有没有完整的生命周期。

2、使用aar

新建一个demo主应用项目
(1)在app/libs 下放置刚刚的aar文件
在这里插入图片描述

(2)在app/build.gradle 下 android{} 节点中添加:

repositories {
   
   
        flatDir {
   
   
           dirs 'libs'
        }
    }

并引入依赖

implementation(name:'app-debug',ext:'arr')

build 后发现报错:

Build was configured to prefer settings repositories over project repositories but repository 'flatDir' was added by build file 'build.gradle'

上述方式在gradle7 版本以下是没问题的。如果是在gradle7+ 版本,需要如下解决方式:

dependencies {
   
   
    implementation fileTree(include: ['*.jar','*.aar'], dir: 'libs')
    implementation(name:'app-debug',ext:'arr')
}

或:

implementation fileTree("libs\\sdk_Login.aar")   // 括号内是aar包相对路径

不需要写firDir。

(3)build 出现them 冲突问题。在application标签中添加:
在这里插入图片描述

(4)打包apk,分析apk 可发现aar中的AndroidMenifest 全部合并到了主应用的清单中。
启动apk测试出现问题:

  • 主apk打开首页跳转到了aar的首页
  • aar内部跳转页面后出
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

senda66

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值