如何在使用播放服务gcm时减小apk大小

时间:2015-12-30 12:23:09

标签: android gradle google-cloud-messaging apk

我生成的签名apk大小为30kB,当我将播放服务gcm 添加到gradle文件时,apk大小增加到800kB。通过缩小资源,apk大小变为600kB。

如何进一步缩小应用尺寸?

apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.2"

    defaultConfig {
        applicationId "com.test.mytest"
        minSdkVersion 16
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            zipAlignEnabled true
            shrinkResources true
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])      
    compile 'com.google.android.gms:play-services-gcm:8.1.0'
}

3 个答案:

答案 0 :(得分:2)

来自http://proguard.sourceforge.net/manual/examples.html#application

  

-optimizationpasses 3

     

-overloadaggressively

     

-repackageclasses''

     

-allowaccessmodification

这些可能会有所帮助。 (特别是3次通过)

答案 1 :(得分:0)

目前是那种依赖的大小。 .apk为每个依赖项增加大小的原因是因为您的应用程序需要这些依赖项,并且不能依赖于从远程位置访问它,因为设备没有Internet连接。

根据this,(和IntelliJ的评论),如果你配置你的proguard,你可以尝试减少一点。

另请考虑以下事项:Shrink Google Play Services library for use with Google Analytics only

答案 2 :(得分:0)

查看build.gradle,您已经了解了源代码和资源优化。你缺少的东西是:

  1. 使用ResConfigs删除未使用的配置

    许多图书馆(如支持/ Google Play服务)都附带了太多语言的字符串资源。您可能不打算支持所有这些。使用以下方法,您可以控制大小:

    android {

    defaultConfig {
        ...
        resConfigs "en"
    }}
    

    这将删除所有不适合英语的资源。

  2. 稀疏配置

    这通常适用于具有大量字符串的应用程序。在某些功能的情况下,您可能想要在值-22 / strings.xml下创建字符串。这种方法的问题是为每个可能的资源位置预留指针空间。因此,即使新文件中不存在该字符串,它仍然占用指针空间,该指针大约是4字节的空数据。您可以使用Google中名为ArscBlamer的工具来查找此稀疏配置。

  3. 图片优化

    您可以使用WebP和Zopfli压缩的PNG执行一些图像优化。你必须仔细权衡使用它们的缺点。详细信息可以here

  4. 有关这些方法的更多详细信息,请here