ProGuard 将 APK 大小仅减少了 35MB 中的 1MB

ProGuard reducing APK size only 1MB out of 35MB

我正在使用 Xamarin.Forms。在应用 ProGuard 后,我的 Android 大小为 35MB 的应用程序仅减少了将近 1MB 的大小。我检查了 属性 window 中的 ProGuard 选项,并在我的 android 项目级别添加了自定义 proguard.cfg 文件以删除警告。

链接器使用 'SDK and User assemblies'。

proguard.cfg 文件

-dontwarn com.symbol.emdk.**
-dontwarn com.symbol.emdk.scanandpair.**
-dontwarn com.symbol.emdk.simulscan.**
-dontwarn com.symbol.emdk.barcode.**
-dontwarn org.apache.http.**
-dontwarn com.appdynamics.eumagent.runtime.**
-keep class android.support.v7.widget.FitWindowsLinearLayout { *; }

有什么方法可以仅使用 ProGuard 来进一步减小 APK 的大小吗?

这 4 件事可以将您的 apk 大小减少近 50-60%

proguard-android.txt替换为proguard-android-optimize.txt.

使 minifyEnabled 为真

添加shrinkResources true

添加resConfigs

例如:-

buildTypes {
release {
    minifyEnabled true
    shrinkResources true
    resConfigs "en"
    proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}

}

详情:

proguard-android-optimize.txt 是比 proguard-android.txt.

更激进的 progurard 配置

shrinkResources 属性将删除所有资源,这些资源不会在项目的任何地方使用。

resConfigs 属性将在构建应用程序时删除所有其他本地化资源。这里去掉英文以外的资源。

如果您开发 Xamarin 应用程序,那么使用 ProGuard 没有多大用处,因为大部分代码将被编译为本机代码并作为 dll 包含在最终的 apk 中。

ProGuard 仅处理 JVM class 文件(有不同的语言生成 class 文件,例如 java、kotlin、groovy、...)。