Androd studio Gradle 打包 jar 和 混淆 配置


出处: 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-






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值