日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

android studio如何生成混淆代码的jar

發布時間:2024/4/15 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android studio如何生成混淆代码的jar 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

今天,簡單講講android里如何在生成jar包時,同時對jar包的代碼進行混淆,避免別人看到核心代碼。

之前,我對領導說我打包生成的SDK,別人使用android studio導入后可以看所有的源碼。結果領導說這樣不可以,核心代碼不能給別人看到。于是在網上搜索如何不讓別人看到jar包里的代碼,最終發現混淆核心代碼就可以做到,不過最后發現混淆還是存在問題,這里記錄一下。

?

網上的這些內容很多,但是很容易使人看不明白。這里記錄我自己如何混淆jar包的過程。

1:首先修改指定模塊的build.gradle文件,在末尾加上下述代碼(網上的代碼)

task makeJar(type: proguard.gradle.ProGuardTask, dependsOn: "build") {//刪除之前編譯混淆jar包delete'build/outputs/jar/SystemInfo.jar'// 未混淆的jarinjars 'build/intermediates/bundles/release/classes.jar'// 混淆后的jar路徑outjars 'build/outputs/jar/SystemInfo.jar'// 混淆文件configuration 'proguard-rules.pro' }

說明:AS會自動對模塊進行打包,即build/intermediates/bundles/release/classes.jar,只是未進行混淆工作而已;

簡單講講,這個其實是手動配置了使用proguard-rules.pro對生成的jar進行混淆,我自己這樣嘗試過,發現這樣編譯報錯,于是自己使用的其他代碼:

apply plugin: 'com.android.library'android {compileSdkVersion 23buildToolsVersion "25.0.2"defaultConfig {minSdkVersion 8targetSdkVersion 21}buildTypes {release {/** 不顯示LOG **//** 混淆 **/minifyEnabled trueproguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'}debug {/** 不顯示LOG **//** 混淆 **/minifyEnabled trueproguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'}}}

這里面主要是配置了Debug和release版本編譯的jar都使用proguard-rules.pro進行混淆,核心代碼是:

buildTypes {release {/** 不顯示LOG **//** 混淆 **/minifyEnabled trueproguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'}debug {/** 不顯示LOG **//** 混淆 **/minifyEnabled trueproguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'}}

proguard-android.txt是android自帶的文檔,我們不需要配置。這樣當我們編譯工程時,自動生成的jar包會進行混淆,但是我們需要配置proguard-rules.pro文檔,不然直接編譯會報錯。在和build.gradle同一目錄下新建一個txt文檔,修改文件名為proguard-rules.pro,接下來進行混淆的配置。

?

2:配置proguard-rules.pro文件

(1)把AS自帶的協議配置進來

# This is a configuration file for ProGuard. # http://proguard.sourceforge.net/index.html#manual/usage.html # Starting with version 2.2 of the Android plugin for Gradle, these files are no longer used. Newer # versions are distributed with the plugin and unpacked at build time. Files in this directory are # no longer maintained.#表示混淆時不使用大小寫混合類名 -dontusemixedcaseclassnames#表示不跳過library中的非public的類 -dontskipnonpubliclibraryclasses#打印混淆的詳細信息 -verbose# Optimization is turned off by default. Dex does not like code run# through the ProGuard optimize and preverify steps (and performs some# of these optimizations on its own). -dontoptimize##表示不進行校驗,這個校驗作用 在java平臺上的 -dontpreverify# Note that if you want to enable optimization, you cannot just # include optimization flags in your own project configuration file; # instead you will need to point to the # "proguard-android-optimize.txt" file instead of this one from your # project.properties file. -keepattributes *Annotation*-keep public class com.google.vending.licensing.ILicensingService-keep public class com.android.vending.licensing.ILicensingService# For native methods, see http://proguard.sourceforge.net/manual/examples.html#native -keepclasseswithmembernames class * {native <methods>; }# keep setters in Views so that animations can still work. # see http://proguard.sourceforge.net/manual/examples.html#beans -keepclassmembers public class * extends android.view.View {void set*(***);*** get*();}# We want to keep methods in Activity that could be used in the XML attribute onClick -keepclassmembers class * extends android.app.Activity {public void *(android.view.View); }# For enumeration classes, see http://proguard.sourceforge.net/manual/examples.html#enumerations-keepclassmembers enum * {public static **[] values();public static ** valueOf(java.lang.String);}-keepclassmembers class * implements android.os.Parcelable {public static final android.os.Parcelable$Creator CREATOR;}-keepclassmembers class **.R$* {public static <fields>;}# The support library contains references to newer platform versions. # Don't warn about those in case this app is linking against an older# platform version. We know about them, and they are safe. -dontwarn android.support.**# Understand the @Keep support annotation. -keep class android.support.annotation.Keep-keep @android.support.annotation.Keep class * {*;}-keepclasseswithmembers class * {@android.support.annotation.Keep <methods>;}-keepclasseswithmembers class * {@android.support.annotation.Keep <fields>;}-keepclasseswithmembers class * {@android.support.annotation.Keep <init>(...);}

(2)引入依賴包路徑

#引入依賴包rt.jar(jdk路徑) -libraryjars 'D:\Program Files\Java\jdk1.8.0_101\jre\lib\rt.jar' #引入依賴包android.jar(android SDK路徑) -libraryjars 'E:\Android\AndroidSdk\platforms\android-25\android.jar' #如果用到其他包,需要引入#忽略警告 -ignorewarnings #保證是獨立的jar,沒有任何項目引用,如果不寫就會認為我們所有的代碼是無用的,從而把所有的代碼壓縮掉,導出一個空的jar -dontshrink #保護泛型 -keepattributes Signature

這里注意一點,rt.jar在自己安裝的jdk的jre包下找,需要根據自己的路徑進行配置。android.jar也需要根據自己的安裝SDk的路徑進行配置。這前面的配置代碼直接拷到proguard-rules.pro文件里就可以了,不然無法編譯通過。但是僅僅這樣不夠,因為這樣會混淆所有的代碼,那么對外的接口也會被混淆為a,b這類函數名,導致使用者無法找到接口,所以需要對接口不進行混淆。

(3)加入自己不想混淆的配置

根據實際情況選擇性配置

#自己不想混淆的配置,保證com下的類名不被混淆 -keep class com.csdn.info.**{*;}

簡單講講,這個其實就是告訴編譯器com.csdn.info包下的所以文件不要混淆,還可以這樣寫

-keep class com.csdn.info.**{public <fields>;public <methods>; }

這個是告訴編譯器不要混淆com.csdn.info包下的所以文件的public變量和函數。

?

接著直接編譯工程,就會在生成混淆的jar包,在build/intermediates/bundles/release/classes.jar目錄里。關于怎么打包生成jar包,我之前寫過一篇博客,網上也很多資料,大家可以自己去看看。

?

android studio如何生成混淆代碼的jar就講完了。、

?

就這么簡單。

總結

以上是生活随笔為你收集整理的android studio如何生成混淆代码的jar的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产精品久久久久91 | 福利二区 | 伊人影院综合 | 国产精品500部 | 久久精品aⅴ无码中文字字幕重口 | 日韩毛片儿 | 黑人巨大精品一区二区在线 | 欧洲精品久久 | 国产xx在线观看 | 久久99精品久久久久久国产越南 | 好吊操这里只有精品 | 亚洲福利在线播放 | 成人在线视频一区二区 | 激情成人综合网 | 亚欧在线免费观看 | wwwwww日本| avtt在线观看| 国产黄色a| 在线免费观看成年人视频 | 精品熟妇一区二区三区 | 精东av在线 | 99精品福利| 6080一级片 | 国产一区二区三区日韩 | 国产精品亚洲天堂 | 美女久久久久久 | 国产在线中文字幕 | 五月开心激情网 | 日日摸天天添天天添破 | 天天爽夜夜爽人人爽 | 欧美涩涩涩 | 9.1成人免费看片 | 国产在线日本 | 欧州一区二区三区 | 亚洲午夜精品在线 | 欧美午夜久久 | 一道本无吗一区 | 欧美一级淫片免费 | 写真福利片hd在线播放 | 午夜在线视频 | 国产主播毛片 | 成人av在线看 | 女同在线观看 | 亚洲精品男人天堂 | 污污视频网站在线免费观看 | 精品成人av一区二区三区 | 日韩视频一区二区三区 | 日本国产在线播放 | 嫩草影院懂你的影院 | 影音先锋黄色资源 | 午夜免费剧场 | av在线视屏| 不卡的一区二区 | 在线免费观看福利 | 欧美成人极品 | 福利影院在线观看 | 天堂网av在线 | 鲁鲁在线 | 国产精品成人一区二区网站软件 | 午夜寂寞视频 | 国产无遮挡一区二区三区毛片日本 | 国产美女菊爆在线播放APP | 无码精品国产一区二区三区 | 国产香蕉在线视频 | 精品久久久久国产 | 国产卡一卡二卡三无线乱码新区 | 国产对白在线 | 国产 欧美 日韩 | 国产日韩欧美一区二区东京热 | 免费观看一区二区三区视频 | 欧洲日韩一区二区三区 | 99久久综合国产精品二区 | jizzjizz在线播放 | 青青91| 国产偷国产偷av亚洲清高 | 美乳人妻一区二区三区 | 亚洲免费视频一区二区 | 亚洲欧美另类日韩 | wwwa级片| 日韩欧美天堂 | 亚洲视频123 | 操日本女人 | 日韩毛片基地 | 99热只有这里有精品 | 欧美bbbbb性bbbbb视频 | 欧美视频免费在线观看 | 欧美一区二区三区激情 | 91精品国产高清一区二区三区蜜臀 | 国产免费无遮挡吸奶头视频 | 青草福利 | 星空大象mv高清在线观看免费 | 欧美成人手机在线视频 | 人人草人人爱 | 91av视频在线| 少妇精品无码一区二区免费视频 | 国产精品视频观看 | 精品无人国产偷自产在线 | 日韩视频中文字幕在线观看 | 精品免费国产一区二区三区四区 |