Android Studio构建第三方jar和混淆jar

2016-08-11  本文已影响890人  Alien的小窝

步骤

  1. 新建一个library作为Android studio的module
  2. 在module里面写自己的类库(可以引用第三方的jar文件,但打包时候不带这些jar,用的时候在主项目里面再次引用即可)
  3. 配置gradle

gradle文件

apply plugin: 'com.android.library'
import com.android.build.gradle.AppPlugin
import com.android.build.gradle.LibraryPlugin
import proguard.gradle.ProGuardTask


android {
    compileSdkVersion 23
    buildToolsVersion "23.0.2"

    defaultConfig {
        minSdkVersion 8
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:23.4.0'


}


task buildJar(type: Jar, dependsOn: ['compileReleaseJavaWithJavac']) { //  task buildJar(type: Jar, dependsOn: ['build'])
//    导出的jar文件的名称
    archiveName = "paysdk-debug.jar"

    //需打包的资源所在的路径集
    from('build/intermediates/classes/release')
    destinationDir = file('../libs')  // //导出的jar文件的存放目录(未指定则默认存放在build/libs下)  destinationDir = file('D:/libs')

    exclude "net/dbo/mylibrary/BuildConfig.class"  //去掉不要的类
    exclude('**/R.class')
    exclude('**/R\$*.class')
    include "**/*.*"    //需要打包的类 如 // include('com/reginer/mytest/*.class')

}

task proguardJar(dependsOn: ['buildJar'], type: ProGuardTask) {
    println('proguard '+project.name+' jar')
    //Android 默认的 proguard 文件
    configuration android.getDefaultProguardFile('proguard-android.txt')
    //加载各模块proguard配置文件
    configuration 'proguard-rules.pro'

    String inJar = buildJar.archivePath.getAbsolutePath()
    injars inJar
    outjars inJar.substring(0, inJar.lastIndexOf('-')) + "-release.jar"

    //设置不删除未引用的资源(类,方法等)
    dontshrink

    //运行时jar包不混淆
    Plugin plugin = getPlugins().hasPlugin(AppPlugin) ?
            getPlugins().findPlugin(AppPlugin) :
            getPlugins().findPlugin(LibraryPlugin)
    if (plugin != null) {
        List<String> runtimeJarList
        if (plugin.getMetaClass().getMetaMethod("getRuntimeJarList")) {
            runtimeJarList = plugin.getRuntimeJarList()
        } else if (android.getMetaClass().getMetaMethod("getBootClasspath")) {
            runtimeJarList = android.getBootClasspath()
        } else {
            runtimeJarList = plugin.getBootClasspath()
        }

        for (String runtimeJar : runtimeJarList) {
            libraryjars(runtimeJar)
        }

    }
}

proguard-rules.pro文件
就简单加了一个gson包

-libraryjars libs/gson-2.2.3.jar

运行gradle命令(或者点击右边的脚本文件)

构建jar包


Paste_Image.png

混淆jar包


Paste_Image.png

生成的文件位置都在 build.gradle的配置里面

Paste_Image.png
上一篇 下一篇

猜你喜欢

热点阅读