在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住了。

到此完成,參考文檔
[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