Kotlin 打包 Jar

Java 一条评论

由于最近打算用Kotlin来开发项目,我们的项目基本是一些SDK项目,要对外输出Jar,所以想先看看用Android Studio来打包Kotlin写的代码看看有没有坑,在这里记录一下,和原来的Java打包Jar的方式基本一样,只是有个路径不同,并且需要同时将Java(历史遗留下来的旧代码)与Kotlin编写的class文件一起打进一个Jar。


task makeJar(dependsOn: ['compileReleaseJavaWithJavac'], type: Jar) {
    delete 'build/libs/kotlin_and_java.jar' //生成的jar存放路径
    appendix = "demo"
    baseName = "androidJar"
    version = "1.0.0"
    classifier = "release"
    //后缀名
    extension = "jar"
    //最终的 Jar 包名,如果没设置,默认为 [baseName]-[appendix]-[version]-[classifier].[extension]
    archiveName = "kotlin_and_java.jar"
    //需打包的资源所在的路径集
    def srcClassesDir1 = [project.buildDir.absolutePath + "/tmp/kotlin-classes/release"] //Kotlin 生成的classes文件路径
    def srcClassesDir2 = [project.buildDir.absolutePath + "/intermediates/classes/release"] //Java 生成的classes文件路径
    //初始化资源路径集
    from srcClassesDir1, srcClassesDir2
    //去除路径集下部分的资源
    exclude "**/R.class"
    exclude "**/R\$*.class"
    //只导入资源路径集下的部分资源
    include "com/turbo/testapplication/**/*.class"
}

上面只贴了生成jar的代码,没有混淆,网上常见的混淆都是自己写一个”ProGuard Task”,需要的可以自己搜索,我这里就不贴了。本人比较喜欢用的方式是直接用将“minifyEnabled”置为”true”,这样”build”以后生成的classes文件就已经混淆过了,再用上面的代码生成Jar就可以了。


buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

上一篇:
下一篇:

1条评论

d
dev says: 回复

请问下,kotlin混淆打包之后,Named Argument就没法使用了

发表评论

邮箱地址不会被公开。 必填项已用*标注

昵称 *