Android studio打包生成Jar包並混淆

問題:打jar包時候,發現多次打了個空包

原因:應該是全部都被混淆忽略掉了,此時需要留一個入口class文件不可混

 

開發過程中往往會引用到第三方的jar包或者library或者so文件,那麼怎樣將自己的一些文件打成jar包供別人使用或者自己使用呢,還有那些文件中的jar中可能會涉及到一些重要的接口和方法,又怎樣混淆呢?今天小冷總結一下如何將library打包成jar包並做混淆處理

準備好自己將要打包的library

圖一中的library是我即將打包的library裏面含有兩個工具類文件

圖一

 

在mylibrary.gradle文件中做混淆打包的配置

因爲IDE環境問題 classes.jar生成的位置也不同否則構建工程時候會報錯,這邊小冷得批評下谷歌

 

* What went wrong
Cannot expand ZIP 'mylibrary\build\intermediates\bundles\release\classes.jar

Android Studio3.1.2之前的配置

 

def SDK_BASENAME = "myjar";
def SDK_VERSION = "_v1.0.0";
def sdkDestinationPath = "build/outputs/jar/";
def zipFile = file('build/intermediates/bundles/release/classes.jar')
task deleteBuild(type: Delete) {
    delete sdkDestinationPath + SDK\_BASENAME + SDK\_VERSION + ".jar"
}
task makeJar(type: Jar) {
    from zipTree(zipFile)
 from fileTree(dir: 'src/main', includes: \['assets/**'\]) // 打包assets目錄下的所有文件

 baseName = SDK\_BASENAME + SDK\_VERSION
    destinationDir = file(sdkDestinationPath)
}
makeJar.dependsOn(deleteBuild, build)

Android Studio3.1.2之後的配置

 

def SDK_BASENAME = "myjar";
def SDK_VERSION = "_v1.0.0";
def sdkDestinationPath = "build/outputs/jar/";
def zipFile = file('build/intermediates/packaged-classes/release/classes.jar')
task deleteBuild(type: Delete) {
    delete sdkDestinationPath + SDK\_BASENAME + SDK\_VERSION + ".jar"
}
task makeJar(type: Jar) {
    from zipTree(zipFile)
 from fileTree(dir: 'src/main', includes: \['assets/**'\]) // 打包assets目錄下的所有文件

 baseName = SDK\_BASENAME + SDK\_VERSION
    destinationDir = file(sdkDestinationPath)
}
makeJar.dependsOn(deleteBuild, build)

如下圖:

圖二

 

在proguard-rules.pro文件中配置混淆文件

proguard-rules.pro混淆文件地址點我查看

在Terminal命令窗口下輸入打包命令:

 

$ gradlew makeJar

直到下面生成BUILD SUCCESSFUL的提示就打包成功了。我剛開始在輸入這個gradlew makeJar命令時候多次報 找不到 Tool.jar的錯誤,沒辦法我只能重裝了一遍jdk(淚奔)然後順利解決。最後就神奇在output文件夾下發現一個jar文件。如下圖

圖三

 

引用自己的jar測試能不能用

引用後發現系統已經將裏面的參數做了混淆 如下圖

圖四

 

小冷在打jar包時候,發現多次打了個空包。應該是全部都被混淆忽略掉了,此時需要留一個入口class文件不可混略。在生成Jar時可能會出現各種奇葩的錯誤,只要根據錯誤提示來修改就沒啥問題。

github中的demo地址

Android studio下將library打包成jar並加密混淆github中demo傳送門



作者:shawnleng
鏈接:https://www.jianshu.com/p/e23ccaf4b41f
來源:簡書
著作權歸作者所有。商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。

發佈了52 篇原創文章 · 獲贊 119 · 訪問量 80萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章