【问题标题】:ProGuard reducing APK size only 1MB out of 35MBProGuard 在 35MB 中仅减少 1MB 的 APK 大小
【发布时间】:2019-11-20 07:49:05
【问题描述】:

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

使用“SDK 和用户程序集”的链接器。

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 大小?

【问题讨论】:

  • 是原生还是 xamarin?
  • 这是 Xamarin.Forms
  • ProGuard 不会优化您应用的 Xamarin 部分。 35 MB 是 Xamarin 应用程序的正常大小。
  • @VladyslavMatviienko - 那为什么要减少 1MB?

标签: android xamarin xamarin.forms proguard


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    这 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 属性将在构建应用程序时删除所有其他本地化资源。在这里,它剥离了英语以外的资源。

    【讨论】:

    • Kuldeep,这是 Xamarin 应用程序。请检查标签。谢谢。
    • 对不起,我错过了。
    最近更新 更多