使用Eclipse的时候打包jar很方便,换成Android Studio之后jar包就不那么方便了,尤其是移植过来的Eclipse的项目。手头上有个SDK要维护,接手的时候是Eclipse下的项目,lib跟demo是分开的,说白了lib也是一个独立的工程。接过来就Studio下放到一个工程里了,demo是app,lib就是lib的module。
问题来了,studio默认是生成的是arr不是Jar!WTF!好吧,当时还是gradle小白,然后就找了各种打包jar的脚本,五花八门,线面就介绍下我用的脚本(以mac为例)。
1. 首先配置gradle脚本
先配置环境变量:
1)终端输入 cd ~切换到home,然后 open -e .bash_profile,如果没有的话先touch。2)输入环境变量:
export PATH=$PATH:/Applications/Android\ Studio.app/Contents/gradle/gradle-4.1/bin
export ANDROID_HOME=~/Library/Android/sdk
3)source .bash_profile 更新环境变量
4)gradle -v 如下就正常了
2 写脚本
脚本其实很简单的,lib的build.gradle如下:
//脚本开始
applyplugin:'com.android.library'
android {
compileSdkVersion26
buildToolsVersion"26.0.2"
lintOptions {
abortOnError false
}
defaultConfig {
minSdkVersion14
targetSdkVersion21
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
buildTypes {
release {
minifyEnabled true
proguardFiles'proguard.cfg' //别忘了混淆
}
}
}
dependencies {
compile'com.android.support:support-v4:26.0.2'
compile files('libs/XXX.jar')
}
//打jar包
def SDK_BASENAME ="XXsdk" //jar包的名字
def sdkJarPath ="build" //jar包的位置
def zipFile = file('build/intermediates/bundles/release/classes.jar') //需要打包的jar
task makeJar(type: Jar) {
from zipTree(zipFile)
from fileTree(dir:'src/main',includes: ['assets/**']) //需要加入的资源那文件
baseName = SDK_BASENAME
destinationDir = file(sdkJarPath)
}
makeJar.dependsOn(build)
//脚本结束
3 打包
在项目的终端输入 ./gradlew makeJar,最后会有
到此就可以了。