Android Studio 打Jar包和混淆的Jar包

一 打不混淆的包

1 新建 Android Library工程作爲打 jar包要用的工程

這裏寫圖片描述

2 在 library的 build.gradle文件中加入如下代碼:

task makeJar(type: Jar, dependsOn: ['build']) {
    delete 'build/libs/testSDK.jar'
    baseName 'testSDK'
    from('build/intermediates/classes/release')
    exclude "**/R.class"
    exclude { it.name.startsWith('R$'); }
}

3 生成jar包
找到Gradle目錄下的,剛剛創建的Android Library名稱目錄下的Tasks,打開other目錄,再找到makeJar,點擊便開始打包jar

這裏寫圖片描述

這裏寫圖片描述

生成的jar包位置如下:

這裏寫圖片描述


二 打包混淆的 jar

1 proguard-rules.pro 中加入以下不需要混淆的說明

-target 1.6
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
-optimizationpasses 5
-dontusemixedcaseclassnames
-keepattributes Exceptions,InnerClasses,Signature,Deprecated,SourceFile,LineNumberTable,LocalVariable*Table,*Annotation*,Synthetic,EnclosingMethod
-keepparameternames
-verbose
-ignorewarnings

-keep public class * extends android.app.Activity

-keep public class * extends android.app.Application

-keep public class * extends android.app.Service

-keep public class * extends no.nordicsemi.android.dfu.DfuBaseService

-keep public class * extends android.content.BroadcastReceiver

-keep public class * extends android.content.ContentProvider

-keep public class * extends android.app.backup.BackupAgentHelper

-keep public class * extends android.preference.Preference

-keep public class com.android.vending.licensing.ILicensingService

-keepclasseswithmembers class * {
    public <init>(android.content.Context,android.util.AttributeSet);
}

-keepclasseswithmembers class * {
    public <init>(android.content.Context,android.util.AttributeSet,int);
}

-keepclassmembers class * extends android.app.Activity {
    public void *(android.view.View);
}

-keep class * extends android.os.Parcelable {
    public static final android.os.Parcelable$Creator *;
}

# Keep - Library. Keep all public and protected classes, fields, and methods.
#-keep public class * {
#    public <fields>;
#    public <methods>;
#}

2 在 library的 build.gradle文件中繼續加入如下代碼:

task makeProguardJar(type: proguard.gradle.ProGuardTask, dependsOn: ['makeJar']) {

    // 未混淆的jar路徑
    injars 'build/libs/testSDK.jar'

    // 混淆後的jar輸出路徑
    outjars 'build/libs/proGuard_testSDK.jar'

    // 混淆協議
    configuration 'proguard-rules.pro'
}

表示生成的混淆jar包在 —> build/libs/proGuard_testSDK.jar

3 找到Gradle目錄下的,剛剛創建的Android Library名稱目錄下的 Tasks,打開 other目錄,再找到 makeProguardJar, 點擊便開始打混淆的 jar包,如下圖:

這裏寫圖片描述

4 生成jar包如圖:

這裏寫圖片描述

最後DEMO地址:
http://download.csdn.net/download/desireyaoo/10016399

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章