編輯:關於Android編程
在Android4.4下通過mm編譯apk時,出現一些native類找不到的情況,原因是被produard優化掉了。在Android4.2中我並沒有遇到這個問題。
1. proguard是做什麼的,ProGuard是一個免費的java類文件壓縮、優化、混淆器。它探測並刪除沒有使用的類、字段、方法和屬性。它刪除沒有用的說明並使用字節碼得到最大優化。它使用無意義的名字來重命名類、字段和方法.。ProGuard的使用是為了:
(1) 創建緊湊的代碼文檔是為了更快的網絡傳輸,快速裝載和更小的內存占用;如:LOCAL_PROGUARD_FLAG_FILES := $(LOCAL_PATH)/proguard.flags
proguard.flags的內容如下:
##---------------Begin: proguard configuration common for all Android
apps ----------
-optimizationpasses 5
#混淆時不會產生形形色色的類名
-dontusemixedcaseclassnames
#指定不去忽略非公共的庫類
-dontskipnonpubliclibraryclasses
-dontpreverify
-verbose
-dump class_files.txt
-printseeds seeds.txt
-printusage unused.txt
-printmapping mapping.txt
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*,!method/removal/*
#優化時允許訪問並修改有修飾符的類和類的成員
#-allowaccessmodification
#保留指定的屬性
-keepattributes *Annotation*
-renamesourcefileattribute SourceFile
-keepattributes SourceFile,LineNumberTable
-repackageclasses ''
-keep public class * extends android.app.Activity
-keep public class * extends android.app.Application
-keep public class * extends android.app.Service
-keep public class * extends android.content.BroadcastReceiver
-keep public class * extends android.content.ContentProvider
-keep public class * extends android.app.backup.BackupAgentHelper
-keep public class * extends android.preference.Preference
-keep public class com.android.vending.licensing.ILicensingService
#保護指定類的成員,如果此類受到保護他們會保護的更好
-keepclassmembers class * implements java.io.Serializable {
static final long serialVersionUID;
private static final java.io.ObjectStreamField[] serialPersistentFields;
private void writeObject(java.io.ObjectOutputStream);
private void readObject(java.io.ObjectInputStream);
java.lang.Object writeReplace();
java.lang.Object readResolve();
}
-keepclasseswithmembernames class * {
native
}
-keepclasseswithmembers class * {
public
}
-keepclasseswithmembers class * {
public
}
-keepclassmembers class * extends android.app.Activity {
public void *(android.view.View);
}
-keepclassmembers class **.R$* {
public static
}
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
-keep public class * {
public protected *;
}
-keep class * implements android.os.Parcelable {
public static final android.os.Parcelable$Creator *;
}
##---------------End: proguard configuration common for all Android apps ----------
##---------------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 { *; }
# Application classes that will be serialized/deserialized over Gson
# -keep public class net.unitepower.mcd.vo.** { *; }
##---------------End: proguard configuration for Gson ----------
先給大家展示下效果圖,對第三方開源 android tickplusdrawable相關知識感興趣的朋友一起學習吧。Android tickplusdrawable(Ti
背景相信大家對Android Studio已經不陌生了,Android Studio是Google於2013 I/O大會針對Android開發推出的新的開發工具,目前很多
記得在2013年12月的時候,有系列文章是介紹怎麼開發一個智能手表的App,讓用戶可以在足球比賽中記錄停表時間。隨著Android Wear的問世,在可穿戴設備中開發一款
微信是一種重要的交通工具,我們每時每刻幾乎都在關注微信的信息,微信登陸時需要輸入手機號碼,當我們更換手機號碼了該怎麼驗證登陸呢?手機不在身邊怎麼使用另一部手