編輯:關於Android編程
為了讓你的APK文件盡可能的小,你需要在構建的時候開啟壓縮來移除無用的代碼和資源。
代碼壓縮可在ProGuard中使用,可以檢測和清除無用的類,變量,方法和屬性,甚至包括你引用的庫。ProGuard同樣可以優化字節碼,移除無用的代碼,並且模糊剩下的類,變量和方法。代碼模糊可以讓增加APK逆向工程的成本。
資源壓縮可在Andorid的Gradle插件中使用,可以清除你打包的APP中無用的資源,包含你引用的庫中的無用的資源。
壓縮你的代碼
為了啟用ProGuard的代碼壓縮,需要在build.gradle中添加minifyEnabled true。
需要注意的是,代碼壓縮會拖慢構建速度,所以,如果可能的話,盡量避免在debug構建是使用。
如下:
android {
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile(‘proguard-android.txt'),
'proguard-rules.pro'
}
}
...
}
注意:Android Studio在使用Instant Run時會禁用ProGuard。
自定義哪些代碼需要保留
在很多情況下,ProGuard很難正確的去分析,它可能會清除你的app需要的代碼。
1、 當你的app從AndroidManifest.xml中引用一個類時
2、 當你的app調用一個JNI方法
3、 當你的app使用反射來控制代碼
為了避免這個問題,需要使用-keep,如下:
-keep public class MyClass
同樣,可以添加@Keep注解來實現。
壓縮你的資源
資源壓縮需要跟代碼壓縮一起才能正常使用。在代碼壓縮出去所有的無用的代碼之後,才能辨別哪些資源仍然未被使用。如下:
android {
...
buildTypes {
release {
shrinkResources true
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'),
'proguard-rules.pro'
}
}
}
自定義哪些資源需要保留
如果這裡有些特別的資源你需要保留或丟棄,在你的項目中創建一個包含標簽的XML文件,用tools:keep指明需要保留的資源,用tools:discard指明需要丟棄的文件。
比如:
<resources xmlns:tools="http://schemas.android.com/tools" tools:keep="@layout/l_used*_c,@layout/l_used_a,@layout/l_used_b*" tools:discard="@layout/unused2"></resources></code>
這次加入的功能比之前幾次的實用性明顯要高些,像什麼破碎啊,融化啊,其實細想一下會發現......沒什麼卵用,模型的頂點數據還是應該交給GPU繪制才是正道,CPU刷新模型頂
Android4.4新特性,系統狀態欄一體化。 實現的步驟主要有以下幾點: 1.android4.4 以上版本 2.設置app全屏: 方法:在AndroidManifes
錘子科技曾經以情懷著稱,曾經的T1發布會還有人記得,那麼錘子科技准備發布堅果手機,那麼作為錘子科技出品的手機就跟其他手機不一樣了,情懷足夠!昨天晚上的發布會
最近有幾位朋友給我留言,讓我談一下對Activity啟動模式的理解。我覺得對某個知識點的理解必須要動手操作才能印象深刻,所以今天寫一篇博文,結合案例理解Activity啟