分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!
android studio:
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
同樣,生成簽名時**就會被混淆。
混淆語法
-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
參考:
給我老師的人工智慧教程打call!
Android實戰技巧 ViewStub的應用
在開發應用程式的時候,經常會遇到這樣的情況,會在執行時動態根據條件來決定顯示哪個view或某個布局。那麼最通常的想法就是把可能用到的view都寫在上面,先把它們的可見性都設為view.gone 然後在 中動態的更改它的可見性。這樣的做法的優點是邏輯簡單而且控制起來比較靈活。但是它的缺點就是,耗費資源...
Android實戰技巧 ViewStub的應用
在開發應用程式的時候,經常會遇到這樣的情況,會在執行時動態根據條件來決定顯示哪個view或某個布局。那麼最通常的想法就是把可能用到的view都寫在上面,先把它們的可見性都設為view.gone 然後在 中動態的更改它的可見性。這樣的做法的優點是邏輯簡單而且控制起來比較靈活。但是它的缺點就是,耗費資源...
Swift實戰技巧
swift實戰技巧 給oc呼叫的方法需要新增 objc標記,一般的action target的處理方法,通知的處理方法等需要新增 objc標記 objc func onrefresh 使用方法型如 selector 方法名稱 eg.selector self.onrefresh 更加詳細的介紹可以看...