参考
二者区别:
jar: 只包含了class文件与清单文件 ,不包含资源文件,如图片等所有res中的文件。
aar: 包含jar包和资源文件,如图片等所有res中的文件。
个人觉得还是用as提供的aar包比较好,编译完就生成了aar了,不用担心资源问题
一、生成jar
1、创建一个类库
2、类库工程下的build.gradle中加上:
//修改jar名字+将指定jar生成的地方
task makeJar(type: Copy){
//删除存在的
delete "build/libs/dlBle.jar"
//设置拷贝文件
from('build/intermediates/bundles/debug/')
//打井jar包的目录
into('build/libs/')
//将classes.jar放入build/libs/目录下
//include,exclude参数来设置过滤
//(我们只关心classes.jar这个文件)
include('classes.jar')
//重命名
rename('classes.jar','dlBle.jar')
}
makeJar.dependsOn(build)
3、确保项目工程下有gradlew可执行文件
在Terminal 运行 ./gradlew makeJar
构建成功就会在build/libs/下生成一个dlBle.jar
二、混淆Jar
方式一,使用Android Studio打包混淆的Jar(有时更改混淆文件没生效,推荐用方式二)
参考
方式二,使用androidsdk-tools-proguard-bin-proguardgui.sh
打开终端,使用命令: sh XXX/proguardgui.sh
参考
混淆时出错提示Unsupported class version number [52.0] (maximum 51.0, Java 1.7))
参考
Version 5.0 以后才支持java8,建议下载最新的。
官网下载
三、生成aar和使用
1、将工程改为库工程(将apply plugin: ‘com.android.application’改为apply plugin: ‘com.android.library’
注释掉applicationId,)
2、build一下工程,会生成aar文件
3、注释掉主入口Activity(否则运行带aar的主工程会出现两个应用图标,要保证一个apk只有一个入口)
4、将aar复制到主工程的lib目录下,并增加
repositories{
flatDir{
dirs 'libs'
}
}
compile(name: 'app-debug', ext: 'aar') //依赖
5、sync project就可以调用aar里面的类了,如果调不到,查看项目的External Libraries里面的这个aar包是否有包含需要的类,如果没有,需要删除aar包再clean生成aar包。