#Android开发杂记--打包release(发行版)App,并将其体积压缩至最小

#Android开发杂记--打包 release(发行版)App,并将其体积压缩至最小

引言

       我们在 Android Studio 中开发完App,直接点击右上角的 Run 会发现,App的大小至少10MB左右,且没有任何签名。
       这是因为我们直接 Run 的时候,生成的是 Debug 版本,为了开发时的编译速度,因此其体积比较大。但当我们想要将 App 正式上线时,不可能拿着 Debug 版本给人用,因此需要生成 Release(发行) 版。


生成签名文件

       想要生成 Release 版,首先需要一个签名文件,制作工具很多,这里不重点介绍,我这里使用腾讯云·移动安全制作签名文件。如下所示,填写相关信息,点击制作签名即可。


配置build.gradle文件

       首先在项目的根build.gradle中,添加一个依赖:

buildscript {
	...
    dependencies {
        classpath "com.android.tools.build:gradle:4.1.2"
        // 需要新添加的依赖
        classpath 'com.tencent.mm:AndResGuard-gradle-plugin:1.2.20'
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}
...

       随后在app目录下的build.gradle中添加签名和打包配置,有注释的地方表示要自己进行配置:

...
// 添加打包插件
apply plugin: 'AndResGuard'

android {
	// 填写签名文件信息
    signingConfigs {
        key {
            storeFile file('D:\\Projects\\AndroidStudio\\key.keystore')
            storePassword '123456'
            keyAlias 'key'
            keyPassword '123456'
        }
    }
    ...
	defaultConfig {
        ...
        // 添加刚刚配置的签名文件
        signingConfig signingConfigs.key
    }
    
	buildTypes {
        release {
        	// 修改为 true
            minifyEnabled true
            // 允许打包成多Dex文件
            multiDexEnabled true
            ...
        }
    }
  	...
}

dependencies {
    ...
}

// 以下配置直接复制过去即可
andResGuard {
    // mappingFile = file("./resource_mapping.txt")
    mappingFile = null
    use7zip = true
    useSign = true
    // 打开这个开关,会keep住所有资源的原始路径,只混淆资源的名字
    keepRoot = false
    // 设置这个值,会把arsc name列混淆成相同的名字,减少string常量池的大小
    fixedResName = "arg"
    // 打开这个开关会合并所有哈希值相同的资源,但请不要过度依赖这个功能去除去冗余资源
    mergeDuplicatedRes = true
    whiteList = [
            // for your icon
            "R.drawable.icon",
            // for fabric
            "R.string.com.crashlytics.*",
            // for google-services
            "R.string.google_app_id",
            "R.string.gcm_defaultSenderId",
            "R.string.default_web_client_id",
            "R.string.ga_trackingId",
            "R.string.firebase_database_url",
            "R.string.google_api_key",
            "R.string.google_crash_reporting_api_key"
    ]
    compressFilePattern = [
            "*.png",
            "*.jpg",
            "*.jpeg",
            "*.gif",
    ]
    sevenzip {
        artifact = 'com.tencent.mm:SevenZip:1.2.20'
        //path = "/usr/local/bin/7za"
    }

    /**
     * 可选: 如果不设置则会默认覆盖assemble输出的apk
     **/
    // finalApkBackupPath = "${project.rootDir}/final.apk"

    /**
     * 可选: 指定v1签名时生成jar文件的摘要算法
     * 默认值为“SHA-1”
     **/
    // digestalg = "SHA-256"
}

执行 Release 打包脚本

       在 Android Studio 中点击 Gradle 选项卡,默认在 Android Studio 的右上角,如图所示。

       找到如下界面,右击 resguardRelease,再单击 Run 即可自动打包完成 Release(发行) 版本。

       等待打包完成(需要一点儿时间),在项目路径下的 app\build\outputs\apk\release中即可找到打包完成的apk,可以很明显的看出来,大小相比 Debug 版已经小了很多了。

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值