1. 程式人生 > >Android Studio使用gradle匯出jar包並混淆程式碼程式碼記錄一

Android Studio使用gradle匯出jar包並混淆程式碼程式碼記錄一

建立一個Android module 和一個AndroidLibrary module
這裡寫圖片描述
在jardemo下的gradle檔案中編寫對應的導Jar包Task和混淆Task
1.導Jar包Task

task makeJar(type: Jar, dependsOn: ['compileReleaseJavaWithJavac']) {
    appendix = 'demo'
    baseName = 'AndroidJar'
    version = '1.0.0'
    classifier = 'release'
    //字尾名
    extension = 'jar'
    //最終的 Jar 包名,如果沒設定,預設為 [baseName]-[appendix]-[version]-[classifier].[extension]
//archiveName = 'Demo.jar' //需打包的資源所在的路徑集 def srcClassDir = [project.buildDir.absolutePath + "/intermediates/classes/release"] //初始化資源路徑集 from srcClassDir //去除路徑集下部分的資源 exclude 'com/scott/jardemo/BuildConfig.class' exclude '**/R.class' exclude '**/R\$*.class' //只匯入資源路徑集下的部分資源 include
'com/scott/jardemo/**/*.class' }

在Teminal中cd jardemo 進入jardemo目錄下,敲命令 gradle makeJar 執行完畢就將Jar匯出來了,在build/lib 下
這裡寫圖片描述
使用jd-gui.exe開啟如下
這裡寫圖片描述
如果要在MANIFEST.MF中新增其他的資訊,下篇文章繼續說。
這裡簡單說下,type是Jar,這個就不用說了,dependsOn的意思是依賴於哪個任務,在執行這個任務之前會先執行依賴的任務

2.混淆jar包

task proguardJar(dependsOn: ['makeJar'], type: proguard.gradle.ProGuardTask) {
    //Android 預設的 proguard 檔案
configuration android.getDefaultProguardFile('proguard-android.txt') //manifest 註冊的元件對應的 proguard 檔案 configuration 'proguard-rules.pro' String inJar = makeJar.archivePath.getAbsolutePath() //輸入 jar injars inJar //輸出 jar outjars inJar.substring(0, inJar.lastIndexOf(File.separator)) + "/proguard-${makeJar.archiveName}" //設定不刪除未引用的資源(類,方法等) dontshrink 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) { //給 proguard 新增 runtime libraryjars(runtimeJar) } }

proguard-rules.pro檔案
這裡我沒有做什麼程式碼過濾混淆的,只寫了一句

#忽略警告
-ignorewarnings

執行gradle proguardJar 執行完畢生成混淆包
這裡寫圖片描述
這裡寫圖片描述
本文到此結束。