前言
AndroidStudio中,如果需要把一个库Module打包成Jar包,需要自己在对应的库Module下对应的gradle.build脚本编写相应的gradle脚本。
jar包和aar包概述
本质上无论是jar或者aar包都是压缩文件,和普通的压缩文件无本质差别,至于后缀那是Windows系统下的设计为了便于找到指定的软件打开不同后缀的文件,这也是我们可以把jar、aar等这些后缀改成.zip或者rar也可以用压缩软件打开不报错的原因,也正是因为才有加密加固dex的需求。但是jar和aar来说又还是有一些细微的区别的。
1,jar包是Java开发时期的产物,而在Android环境下主要是包含class字节码文件和清单文件,没有res、asset等Android资源文件。
2,aar
Android 库在结构上与 Android 应用 模块相同,它可以提供构建应用所需的几乎一切内容包括:class字节码文件、libs库、jni库、aidl文件、res、assets资源文件和 Android 清单。
Android Studio库项目打包成jar
1,配置库依赖中的build.gradle
添加
//常量
def supportV4 = file('libs/android-support-v4.jar')
//删除原来的jar
task deleteBuild(type: Delete) {
delete "general-notification.jar"
}
//定义makeJar任务打包jar包 start
task makeJar(type: Copy) {
delete 'build/libs/general-notification.jar'//先删除存在的jar包
from('build/intermediates/packaged-classes/release/')
from zipTree(supportV4)
into('build/libs/')//打包后生成的jar包的存放目录
include('classes.jar')//include、exclude参数过滤,这里只关注classes.jar
rename('classes.jar', 'general-notification.jar')
}
//定义执行
makeJar.dependsOn(deleteBuild, build)
2,配置完成后,同步下,在右侧直接执行gradle命令,即可实现jar的生成
窗口输入命令生成JAR包:gradlew makeJar
3,完整配置
apply plugin: 'com.android.library'
android {
compileSdkVersion 28
defaultConfig {
minSdkVersion 14
targetSdkVersion 28
versionCode 2
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
// implementation 'com.android.support:appcompat-v7:28.0.0'
}
def supportV4 = file('libs/android-support-v4.jar')
task deleteBuild(type: Delete) {
delete "general-notification.jar"
}
//定义makeJar任务打包jar包 start
task makeJar(type: Copy) {
delete 'build/libs/general-notification.jar'//先删除存在的jar包
from('build/intermediates/packaged-classes/release/')
from zipTree(supportV4)
into('build/libs/')//打包后生成的jar包的存放目录
include('classes.jar')//include、exclude参数过滤,这里只关注classes.jar
rename('classes.jar', 'general-notification.jar')
}
//定义执行
makeJar.dependsOn(deleteBuild, build)
// 2017-10-17 在Terminal 窗口输入命令生成JAR包:gradlew makeJar
4,打包完成

网友评论