編輯:關於Android編程
混淆器通過刪除從未用過的代碼和使用晦澀名字重命名類、字段和方法,對代碼進行壓縮,優化和混淆,生成一個比較小的.apk文件,該文件比較難進行逆向工程,是一種重要的保護手段。
混淆器被集成在android 構建系統中,所以你不必手動調用它。同時混淆器僅在發布模式下進行構建應用程序的時候才會運行起來,所以在調試模式下構建程序時,你不必處理混淆代碼。這個文檔描述了怎樣啟用並配置混淆器,以及使用跟蹤(retrace)工具對混淆的堆棧跟蹤信息(stack traces)進行解碼。
當你新建了一個Android工程之後,一個proguard.cfg文件會在工程的根目錄下自動創建。這個文件定義了混淆器是怎樣優化和混淆你的代碼的,所以懂得怎樣根據你的需要來定制是非常重要的。缺省的配置文件僅覆蓋到了通常情況,所以根據你的需求,很可能需要編輯它。接下來的內容是關於通過定制混淆器配置文件來對混淆器配置。
為了讓啟用混淆器作為Ant或者Eclipse構建過程中一部分,可以在
/default.properties文件中,設置proguard.config屬性。路徑可以是絕對路徑或者工程根目錄的相對路徑。 如果你讓proguard.cfg文件在缺省位置(工程的根目錄),你可以像這樣指定位置:proguard.config=proguard.cfg,debug模式混淆無效,通過export導出有效。
(1).dump.txt
描述.apk包中所有class文件的內部結構。
(2).mapping.txt
列出了源代碼與混淆後的類,方法和屬性名字之間的映射。這個文件對於在構建之後得到的bug報告是有用的,因為它把混淆的堆棧跟蹤信息反翻譯為源代碼中的類,方法和成員名字。更多信息,查看解碼混淆過的堆棧跟蹤信息。
(3).seeds.txt
列出那些未混淆的類和成員。
(4).usage.txt
列出從.apk中剝離的代碼。
注意: 每次在發布模式下構建時,這些文件都會被最新的文件覆蓋。所以每次發布程序時候,為了反混淆來自構建時產生的bug報告,請保存這些文件的一個拷貝。需要保存這些產生的Proguard文件。
當混淆代碼並輸出了一個堆棧調試信息時,這些方法名字是混淆過的,雖然可以進行調試,但是調試變得困難。幸運的是,每當混淆器運行時候,它都會輸出到文件
/bin/proguard/mapping.txt中,該文件包含了從原始類,方法和屬性名字到混淆後名字的映射,每次打包時應注意保存好該文件。使用 /tools/proguard/retrace.sh腳本命令能把混淆後的堆棧調試信息轉換為可以未混淆前的堆棧調試信息。 retrace.bat|retrace.sh [-verbose] mapping.txt [
] $sh /Applications/ADT/sdk/tools/proguard/bin/retrace.sh -verbose /Users/zf/Documents/workspace/GridTest/proguard/mapping.txt /Users/zf/Desktop/bug.txt
(1).Android工程混淆
# This is a configuration file for ProGuard. # http://proguard.sourceforge.net/index.html#manual/usage.html # Optimizations: If you don't want to optimize, use the # proguard-android.txt configuration file instead of this one, which # turns off the optimization flags. Adding optimization introduces # certain risks, since for example not all optimizations performed by # ProGuard works on all versions of Dalvik. The following flags turn # off various optimizations known to have issues, but the list may not # be complete or up to date. (The "arithmetic" optimization can be # used if you are only targeting Android 2.0 or later.) Make sure you # test thoroughly if you go this route. -optimizations !code/simplification/arithmetic,!code/simplification/cast,!field/*,!class/merging/* -optimizationpasses 5 -allowaccessmodification -dontpreverify # The remainder of this file is identical to the non-optimized version # of the Proguard configuration file (except that the other file has # flags to turn off optimization). -dontusemixedcaseclassnames -dontskipnonpubliclibraryclasses -verbose -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; } # 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); } -keep class * implements android.os.Parcelable { public static final android.os.Parcelable$Creator *; } -keepclassmembers class **.R$* { public static ; } (2).引入Gson包
##---------------Begin: proguard configuration for Gson ---------- # Gson uses generic type information stored in a class file when working with fields. Proguard # removes such information by default, so configure it to keep all of it. -keepattributes Signature # Gson specific classes -keep class sun.misc.Unsafe { *; } -keep class com.google.gson.stream.** { *; } -keep class com.google.gson.examples.android.model.** { *; } -keep class com.google.gson.** { *;} ##---------------End: proguard configuration for Gson ----------
我們都知道,微信群主只有踢人的權限,有時候要對群成員進行清理沒有權限又不知道誰是群主可怎麼辦?其實微信群設置裡可以查看誰是群主或者創建人,那麼微信群怎麼看誰
android檢查更新、下載、安裝前言:由於友盟更新即將下線,我們就修改了更新邏輯,自己檢查更新、下載、安裝,但是檢查更新還是要依賴於友盟中的在線參數:1.MainAct
概述:利用自定義View的onDraw()方法,可以繪制很多種圖形,進度框只是其中之一。Demo這是一個模擬下載的demo。自中央逐漸充滿型圓形進度框demo1publi
前面我簡單的介紹了android的一些基礎知識,當作熱身吧,接下來接觸android的四大組件的activity活動。 1.活動Activity是是一種保護用戶界面的組件