安卓Android打包aar包SDK供其他项目集成踩过的坑,大概流程

时间:2022-03-04 09:12:04

教程度娘提供的很详细,在此记录下我自己碰到的百度没有或者比较难搜到的一些的坑。

1,集成到新项目后,类的全路径会加上新项目包名,有些判断任务栈的需求需注意

2,听云SDK和阿里云反馈,友盟分享在webView相关代码上有冲突

3,重复引用的jar包处理:

(包含新项目中其他的aar与你要集成的aar有重复jar)可通过将你要集成的项目的aar中的jar移到其他module,再通过依赖module的方式引用jar,即可解决冲突。


开发之前

如项目需求打成aar形式SDK,就应在开发之初注意:

1,res下所有资源文件最好带上唯一的标识,以免集成到新项目后资源文件冲突。

如果是 aar 依赖,gradle 会自动帮我们找出新版本的库而抛弃旧版本的重复依赖。但是如果你使用的是 project 依赖,gradle 并不会去去重,最后打包就会出现代码中有重复的类了。

一种是 将 compile 改为 provided,只在最终的项目中 compile 对应的代码,但是这种办法只能用于没有资源的纯代码工程或者jar包;
可以将所有的依赖写在 shell 层的 module,这个 shell 并不做事情,他只用来将所有的依赖统一成一个入口交给上层的 app 去引入,而项目所有的依赖都可以写在 shell module 里面。

gradle中加入 resourcePrefix 属性可以给xml文件加前缀,但所有的图片资源仍需要手动修改资源。

2,所有开发代码应该写在lib module下。集成三方SDK时所要以来的jar最好放在另一个lib module下,以依赖形式引用。

3,关于混淆,只需配置在主lib module下,运行module应关闭混淆,防止二次混淆,mapping文件错乱。


集成步骤

以下内容整合了网上搜到的文章

1,要输出 aar 文件,必须将 Module 配置为 library,在 gradle 文件中如下:

Android studio每次同步或build都会在lib module下生成aar文件,包含资源文件的SDK文件。

  • 输出 aar : apply plugin: 'com.android.library'
  • 输出 apk :apply plugin: 'com.android.application'

2,项目中引用aar:

gradle 依赖引用 aar:

  • compile(name: 'xxx', ext: 'aar')
3,找不到jar的情况:在project的build.gradle文件中添加

repositories {
    flatDir {
        dirs 'libs', '../xxxxx/libs'  //第一个libs是主项目的libs,其他modulelibs路径需要用逗号隔开../module/libs  }
    mavenCentral()
}