buildtypes
}
這個proguard-android.txt是sdk中groguard預設的檔案,具體位址在:/opt/sdk/tools/proguard/proguard-android.txt
而proguard-rules.pro是as中專用的proguard配置檔案,其實只是字尾名不同,與eclipse中的proguard-project.txt是一樣的,配置規則相同,後面會詳細提到。
老版本開啟混淆的命令是runproguard,現在統一用minifyenabled命令了,將其設為true就好了。
編譯的時候可以使用命令:
./gradlew assemblerelease
eclipse:
在project.properties檔案中開啟proguard配置(放開注釋),如下:
proguard.config=$/tools/proguard/proguard-android.txt:proguard-project.txt
同樣,生成簽名時**就會被混淆。
混淆語法
請參考$/tools/proguard/proguard-android.txt檔案,需要注意的是檔案中雖然有了不混淆parcelable的語句,如下:
-keep class * implements
android.os.parcelable
但是還是要自己把繼承自parcelable的類寫進來避免混淆,否則會出現badparcelableexception異常。
-keep class com
.linc
.datatype
.xxinfo
-keep class com
.tencent.**
-keep class com
.tencent
.mm.sdk
.openapi
.wxmediamessage
-keep class com
.tencent
.mm.sdk
.openapi.** implements com
.tencent
.mm.sdk
.openapi
.wxmediamessage$imediaobject
為了驗證是否混淆成功,可以使用下面的反編譯工具驗證。
主要用到三個工具:
dex2jar:將dex檔案轉為jar檔案
jd-gui:反編譯jar檔案
axmlprinter2.jar:反編譯xml檔案
使用方法參見《反編譯apk檔案,得到其源**的方法》
對於ubuntu64位,執行jd-gui或許會報錯:
嘗試解決如下:
$ sudo
apt-get
install
libgtk2
.0-0
:i386
libnss3
:i386
libcurl3-gnutls
:i386
libidn11
:i386
libpango1
.0-0
:i386
libpangox-1
.0-0
:i386
libpangoxft-1
.0-0
:i386
librtmp0
:i386
libxft2
:i386
又報錯:
$ /opt/sdk/tools/jd-gui: error while loading shared libraries: libxxf86vm.so.1: cannot open
shared object file: no such file
or directory
解決辦法如下:
$ sudo
apt-get
install
libgtk2
.0-0
:i386
libxxf86vm1
:i386
libsm6
:i386
lib32stdc++6
參考: android混淆和反編譯
buildtypes 這個proguard android.txt是sdk中groguard預設的檔案,具體位址在 opt sdk tools proguard proguard android.txt 而proguard rules.pro是as中專用的proguard配置檔案,其實只是字尾名不同...
Android混淆編譯
1.android studio gradle android android studio會同時使用預定義 預設 的混淆編譯規則和自定義的混淆規則 在proguard rules.pro檔案中 android proguard doc thegetdefaultproguardfile progu...
proguard混淆與防反編譯
混淆也只是加大反編譯成本,不能真的防反編譯。最大的功能是對 的壓縮與優化。proguard配置 android buildtypes 常見的混淆配置 保持該包名或者類名下的所有不混淆 keep public class com.droidyue.com.widget.所有繼承android.view...