您的位置:首页 > 其它

Androd studio Gradle 打包 jar 和 混淆 配置

2016-01-13 14:16 218 查看
出处: 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-
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: