Android Studio導出Jar包並混淆


在Android Studio中,自帶反編譯查看class文件,如果沒有混淆的話,class文件跟java文件基本沒有區別了,為了保護,還是混淆的好。

網上看了不少資料,都是直接下載proguard額外jar,直接生成,覺得不方便,既然apk都能混淆,為什么不直接通過Android Studio來混淆jar包呢。

做法其實很簡單,一個build文件,一個proguard文件就可以了。

首先要明白jar從哪里來,以前在Eclipse中是一個project設置為library,然后另外一個主project依賴它。build一下,在library中就會生成jar文件了。

在Android Studio是module的概念,其實也相當於project。主app module依賴其它子module,在打包時,會將其它module打成aar,賦給主app。所以jar是針對整個module來make的。

如果module內僅僅是java代碼,生成jar是沒問題的,但如果還有resource文件,那就得打aar文件了。

在你要打jar包的module build文件中,加上一個生成jar包的task。其實即使不添加,在整個工程build時也會生成jar文件的。在build/intermediates/bundles/release/classes.jar可以找到。只是沒混淆罷了。

task makeJar(type: proguard.gradle.ProGuardTask, dependsOn: "build") {
// 未混淆的jar
injars 'build/intermediates/bundles/release/classes.jar'
// 混淆后的jar路徑
outjars 'build/http.jar'
// 具體需要keep住的類
configuration 'proguard-rules.pro'
}

這個時候,在Termial中就輸入./gradlew makeJar就能將classes.jar復制倒http.jar了。這個時候還是沒混淆的,因為混淆根本沒寫。

如果module中同時也依賴其它libs,那需要在proguard中聲明那些libs。比如:#-libraryjars libs\gson-2.2.2.jar,大部分都跟apk混淆類似的,只不過是局限於某個module而已。

附送一個proguard供大家參考,也是網上找的。最后混淆效果並不是很好,只是簡單的將部分變量改成了abcd這樣,不過也夠了。總不能將方法也混淆,這樣外部調用就麻煩了。

proguard-rules.pro

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM