出处: http://chaosleong.github.io/blog/2015/08/02/android-studio-shi-yong-gradle-da-bao-jar/
最近在sdk发布有jar的打包需求,所以记录下Gradle 的配置,此文是按照出处修改的,在此也感谢作者的分享:
先上代码:
dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) } //dependsOn 可根据实际需要增加或更改 task buildJar(dependsOn: ['compileReleaseJava'], type: Jar) { appendix = "demo" baseName = "androidJar" version = "1.0.0" classifier = "release" //后缀名 extension = "jar" //最终的 Jar 包名,如果没设置,默认为 [baseName]-[appendix]-[version]-[classifier].[extension] archiveName = "SDK1.0_release.jar" //需打包的资源所在的路径集 def srcClassDir = [project.buildDir.absolutePath + "/intermediates/classes/release"] //初始化资源路径集 from srcClassDir //asset 目录路径 def assetsDir =[project.buildDir.absolutePath + "/intermediates/assets/release"] from assetsDir //去除路径集下部分的资源 // exclude "com/MainActivity.class" // exclude "com/MainActivity\$*.class" exclude "com/BuildConfig.class" exclude "com/BuildConfig\$*.class" exclude "**/R.class" exclude "**/R\$*.class" //只导入资源路径集下的部分资源 include "assets/**" include "com/**/*.class" } task proguardJar(dependsOn: ['buildJar'], type: ProGuardTask) { configuration android.getDefaultProguardFile('proguard-android.txt') String inJar = project.buildDir.getAbsolutePath()+"/libs"; //输入 jar injars inJar //输出 jar outjars inJar+ "/proguard-${buildJar.archiveName}" //设置不删除未引用的资源(类,方法等) dontshrink AppPlugin appPlugin = getPlugins().findPlugin(AppPlugin) if (appPlugin != null) { List<String> runtimeJarList if (appPlugin.getMetaClass().getMetaMethod("getRuntimeJarList")) { runtimeJarList = appPlugin.getRuntimeJarList() } else if (android.getMetaClass().getMetaMethod("getBootClasspath")) { runtimeJarList = android.getBootClasspath() } else { runtimeJarList = appPlugin.getBootClasspath() } for (String runtimeJar : runtimeJarList) { //给 proguard 添加 runtime libraryjars(runtimeJar) } } }
上面的代码需要配合自己的项目做相应的包名修改,如果需要不包含混淆的直接运行buildJar就ok了,需要混淆就执行buildProJar就可以了(在andorid studio中的terminal执行)
以下有一点需要注意,就是要打包前,先把所以的asset复制的一份copy发一份到asset目录下类似以下目录,打包的时候就能够自动把sesset一起打包了。
附上Git项目地址:https://github.com/popboyking/androidstudio-jar-