手把手教android studio 導(dǎo)出jar包并混淆

在android studio中可以將java library中的java 代碼編譯成jar包,注意,這里首要的前提一定是java library.
java library的創(chuàng)建過程 File -> New -> New Module...

新建的library起名字這里叫做lib,在下面創(chuàng)建一個類YourManager

然后我們寫一點內(nèi)容到Y(jié)ourManager,寫好之后, 我們打開gradle 窗口

在lib module下面有一個task的名稱叫做jar,我們雙擊這個jar文件就可以將java library中的java源碼打成jar包,將瀏覽方式切換成project,在build的目錄中, 就可以發(fā)現(xiàn)我們生成的lib.jar文件,如果是好奇jar中的內(nèi)容,可以將jar文件拷貝出來,擴展名改為zip,因為jar本質(zhì)上也是zip來的,來查看里面的內(nèi)容。當然,jar文件也是可以直接查看目錄結(jié)構(gòu)和內(nèi)容的

顯然此時的jar包尚未混淆,去看看其中的class就知道了。那么如何混淆呢。我們先創(chuàng)建一個proguard文件,這里起名字就叫做proguard.txt, 這個文件是要放在lib模塊下的,其中我們先寫一條最簡單的,這條語句翻譯過來就是,第一,java sdk文件的位置,它是libraryjars的, 就是我們要用到j(luò)ava sdk的,但是打包時候不要把它也打進去,它只是一個library。第二, 不要混淆公開類的公開方法和受保護的方法。對于proguard想了解更多,請參考 https://www.guardsquare.com/en/proguard/manual/examples

#proguard.txt

-libraryjars <java.home>/lib/rt.jar

-keep public class * {
    public protected *;
}

接著我們在lib下的build.gradle文件中配置一個混淆的task,重點是task myproguard。這一番操作后, 原來的lib.jar會進行混淆,進而在同一個目錄下生成一個新的jar包,這里起名字叫l(wèi)ibProguard。其他代碼都是創(chuàng)建lib模塊時自動生成的。

apply plugin: 'java'
dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
}

task myproguard(type: proguard.gradle.ProGuardTask) {
    configuration 'proguard.txt'
    injars 'build/libs/lib.jar’    
    outjars 'build/libs/libProguard.jar'}

sourceCompatibility = “1.7"
targetCompatibility = “1.7”

當我們在gradle的task中尋找myproguard,雙擊該task,就會生成混淆過的的libProguard.jar文件。打開看看就知道是混淆過的。注意啊,源碼中一定要寫一些private之類的方法才能被混淆,因為public和protected被我們之前的proguard給keep住了。

![](http://upload-images.jianshu.io/upload_images/4742944-a8b3ca6886ab16f0.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
到此完成,參考文檔

[1]. https://stackoverflow.com/questions/21712714/how-to-make-a-jar-out-from-an-android-studio-project/21713954#21713954
[2]. https://github.com/loopj/proguard-gradle-example
最后編輯于
?著作權(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)容