Android Studio 生成Jar并混淆
初探:
android studio生成Jar.
android studio 自動生成aar.
1.android studio 自動生成.jar, 首先將工程作為依賴庫,build即可。
2.手動打包jar
1> 僅打包class文件
task makeJar(type: Jar, dependsOn:['build', 'targetJar']) { from file('build/intermediates/classes/release') //目標文件名稱 archiveName = 'un_proguard.jar' destinationDir = file('build/libs') exclude "lbs/tmplibary/BuildConfig.class" exclude "lbs/tmplibary/BuildConfig\$*.class" exclude "**/R.class" exclude "**/R\$*.class" //只導入資源路徑集下的部分資源 include "lbs/**/*.class" }
2>添加assets文件
(1)直接includes assets文件即可
task makeJar(type: Jar, dependsOn:['build', 'targetJar']) { from file('build/intermediates/classes/release') from fileTree(dir: 'src/main', includes: ['assets/**']) //目標文件名稱 archiveName = 'un_proguard.jar' destinationDir = file('build/libs') exclude "lbs/tmplibary/BuildConfig.class" exclude "lbs/tmplibary/BuildConfig\$*.class" exclude "**/R.class" exclude "**/R\$*.class" //只導入資源路徑集下的部分資源 include "lbs/**/*.class" include "assets/**" }
(2)使用zipTree
將所需打包的assets文件打包成.zip,如下:
def zipFile = "src/main/assets.zip" task makeJar(type: Jar, dependsOn:['build', 'targetJar']) { from zipTree(zipFile) from file('build/intermediates/classes/release') //目標文件名稱 archiveName = 'un_proguard.jar' destinationDir = file('build/libs') exclude "lbs/tmplibary/BuildConfig.class" exclude "lbs/tmplibary/BuildConfig\$*.class" exclude "**/R.class" exclude "**/R\$*.class" //只導入資源路徑集下的部分資源 include "lbs/**/*.class" }
3.混淆
task proguard(type: proguard.gradle.ProGuardTask, dependsOn: makeJar) { // 輸入路徑 injars "build/libs/un_proguard.jar" // 輸出路徑 outjars 'libs/app_proguard.jar' // 添加配置信息 configuration 'proguard-rules.pro' }
proguard-rules.pro需要配置一下路徑
-libraryjars <java.home>/lib/rt.jar -libraryjars xxxxx/android/sdk/platforms/android-22/android.jar
注:代碼編譯出錯的情況下 添加
-dontpreverify
盡可能的時候使用
-dontwarn
忽略一些不必要的警告,以便成功打包。
完結,~_~
來自: http://my.oschina.net/u/2531612/blog/591366?fromerr=Xd1Kd7dY
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!