Android Studio構(gòu)建第三方j(luò)ar和混淆jar

步驟

  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'])
//    導(dǎo)出的jar文件的名稱
    archiveName = "paysdk-debug.jar"

    //需打包的資源所在的路徑集
    from('build/intermediates/classes/release')
    destinationDir = file('../libs')  // //導(dǎo)出的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"

    //設(shè)置不刪除未引用的資源(類,方法等)
    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

運行g(shù)radle命令(或者點擊右邊的腳本文件)

構(gòu)建jar包


Paste_Image.png

混淆jar包


Paste_Image.png

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

Paste_Image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容