美文网首页
Android Studio构建第三方jar和混淆jar

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

作者: Alien的小窝 | 来源:发表于2016-08-11 23:55 被阅读890次

    步骤

    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

    相关文章

      网友评论

          本文标题:Android Studio构建第三方jar和混淆jar

          本文链接:https://www.haomeiwen.com/subject/umvssttx.html