在Gradle 的Android 插件中,其构建类型下面有一个叫作minifyEnabled 的布尔类型属性,你需要将它设置为true 来激活ProGuard : android { buildTypes...{ release { minifyEnabled true proguardFiles getDefaultProguardFile...('proguard-android.txt'), 'proguard-rules.pro' } } } 当minifyEnabled 被设置为true 后,在构建过程中...自动缩减 最简单的方式是在你的构建中设置shrinkResources 属性。如果设置该属性为true,则Android 构建工具将自动判定哪些资源没有被使用,并将它们排除在APK 外。...下面的代码片段展示了在某个构建类型中,如何配置自动化资源缩减: android { buildTypes { release { minifyEnabled = true
Android Plugin在buildType中有一个Boolean的属性名为minifyEnabled,可以设置成true启用Proguard: android { buildTypes...('proguard-android.txt'), 'proguard-rules.pro' } } } 当你设置了minifyEnabled为true后,proguardRelease...我这也就意味着在IDE中第一次启动构建后,后续的构建都会比较快。如果你从命令行执行构建的话,Gradle Daemon则是关闭的,除非在Properties中启用。...在Gradle的属性中,名为jvmargs,可以用来为JVM启用设置内存分配的值。这两个参数也会对构建速度有直接的影响:Xms和Xmx。...在执行完density分割后的构建结果中: app-hdpi-release.apk app-universal-release.apk app-xhdpi-release.apk
(1)minifyEnabled minifyEnabled为true的作用:启用代码混淆、压缩APK; minifyEnabled会对资源进行压缩,多余的代码在打包的时候就给移除掉了。...不仅仅是代码,没有被调用的资源同样也会被移除掉,因此minifyEnabled除了混淆代码之外,还可以起到压缩APK包的作用。...开启混淆后也可添加shrinkResources,表示开启删除无用资源。 (2)shrinkResources shrinkResources为true用来开启删除无用资源。...(3)避免被误删除 若配置minifyEnable true && shrinkResources true,防止避免误删除的文件,可以配置如下: 在res/raw/keep.xml(避免被误删除)写了配置的...对于没有被引用的文件&没有在配置文件keep.xml中声明保存的文件,打包后是没有内容的,声明保存的文件有内容(资源文件和layout文件)。
/gradlew build --info # 译并输出性能报告,性能报告一般在 构建工程根目录 build/reports/profile ....buildTypes { release { shrinkResources true minifyEnabled true...} } } 1. minifyEnabled 会对代码进行混淆和压缩,shrinkResources 会对比R文件对无用资源进行删除 2. minifyEnabled 设置为true时shrinkResources...可以不修改代码直接运行相应的apk ?...Debug 包值为 true,Release 包值为 false,这是编译自动修改的。可以通过 ApplicationInfo 的这个属性去判断是否是 Debug 版本。
build.gradle 构建脚本中的 " android / buildTypes " 层级中 , 配置 debug / release 相关选项 , 即可开启 ProGuard ; 设置 minifyEnabled...true 配置 , 并配置 proguardFiles 混淆配置文件 , 在 Android Studio 中 , 一般会生成一个默认的混淆配置文件 ; android { buildTypes...'), 'proguard-rules.pro' } release { minifyEnabled true...安装包 : \rm 3.6 MB 混淆后编译的 APK 安装包 : \rm 1.7MB 四、build.gradle 完整配置文件 ---- 完整的 build.gradle 构建脚本 ; plugins...' } release { minifyEnabled true proguardFiles getDefaultProguardFile
使用 Android studio ,使用 gradle 进行构建 2. 在实际开发中,我们需要使用jenkins进行打包。就需要配置我们的 gradle 脚本以支持参数化的方式。 3....=245 参数说明: 1. assembleBeta 其中 Beta是我配置好的 构建任务, 2....的 名称和存放路径 我们继续配置 apk 输出 的目录的配置,这就需要获得 编译完成后的文件名称的配置,如何获得和设置输入路径呢?...apk") } 为输入的apk文件名增加指定的后缀 if (project.hasProperty('OUT_PUT_APK_SUFFIX_PARA')) {...fileName = fileName.replace(".apk", "-${OUT_PUT_APK_SUFFIX_PARA}.apk") } 为输出的apk文件名增加 当前日期
六、混淆 1 构建多个版本 在gradle中的buildTypes中增加不同的构建类型,使用applicationSuffix和versionNameSuffix可以生成多个版本在同一设备上运行 创建...('proguard-android.txt'), 'proguard-rules.pro' } } minifyEnabled true 是否要启用通过 ProGuard 实现的代码压缩(true...启用) 请注意,代码压缩会拖慢构建速度,因此您应该尽可能避免在调试构建中使用。...APK Analyser 将会拆解你的应用并让你知道 .apk 文件中的那个部分占据了大量空间。让我们看一下 Anti-Theft 在没有经过优化之前的截图。 ?...} 通过设置 minifyEnabled 为 true,混淆将会移除所有未使用的方法、指令以减小 classes.dex 文件。
六、混淆 1 构建多个版本 在gradle中的buildTypes中增加不同的构建类型,使用applicationSuffix和versionNameSuffix可以生成多个版本在同一设备上运行 创建...('proguard-android.txt'), 'proguard-rules.pro' } } minifyEnabled true 是否要启用通过 ProGuard 实现的代码压缩(true...启用) 请注意,代码压缩会拖慢构建速度,因此您应该尽可能避免在调试构建中使用。...APK Analyser 将会拆解你的应用并让你知道 .apk 文件中的那个部分占据了大量空间。让我们看一下 Anti-Theft 在没有经过优化之前的截图。...} 通过设置 minifyEnabled 为 true,混淆将会移除所有未使用的方法、指令以减小 classes.dex 文件。
3.测试完毕后,测试组负责人合并代码到 master 分支,修改服务器地址为 上线服务器地址,并测试,再到正式发布。 ...改进: 引入 Jenkins 服务自动打包,Jenkins是个非常优秀的自动构建工具,可以为我们的打包提供很棒的体验。使得 测试人员 在需要时,自己就能进行打包而不需要其他更多操作。...当然,这需要我们配置好构建脚本。在使用Android studio之后,就需要了解 gradle脚本了。...技术关键词: buildConfigField, BuildConfig 思路: 在gradle脚本中,使用 buildConfigField 声明一个字段,编译成功后,会为这个字段生成静态常量,我们可以在代码中使用这个常量...而在成功build后,gradle会为 美工不同的类型环境生成不同的apk包,比如一次性就生成了 测试,开发,上线三个apk包。
友盟多渠道打包 废话不多说,以友盟统计为例,在AndroidManifest.xml里面会有这么一段: <meta-data android:name="UMENG_CHANNEL" android...**assemble**: 允许构建指定Build Type的所有APK,例如assembleDebug将会构建Flavor1Debug和Flavor2Debug两个Variant版本。...**assemble**: 允许构建指定flavor的所有APK,例如assembleFlavor1将会构建Flavor1Debug和Flavor1Release两个Variant版本。... true zipAlignEnabled true // 移除无用的resource文件 shrinkResources true ...= null && outputFile.name.endsWith('.apk')) { // 输出apk名称为boohee_v1.0_2015-01-15_wandoujia.apk
4、然后回到第一步,这时候点击按钮Next, Build Type选择release Finish即可,然后在 APK Destination Folder目录下就生成项目的apk包 ?...意图不好的也许会反编译Apk来找到你项目中的漏洞,对项目安全做出威胁。 所以现在我们在打包一个项目之前,都要对项目进行混淆处理,让Apk无法被轻易的反编译,提高产品的安全性。...在app目录下的build.gradle文件中修改android{} 区域内代码 1、 //执行lint检查,有任何的错误或者警告提示,都会终止构建 lintOptions {...shrinkResources true //前一部分代表系统默认的android程序的混淆文件,该文件已经包含了基本的混淆声明,后一个文件是自己的定义混淆文件...下载后有这两个文件 1、将打包后的apk文件 手动改变文件类型为.zip ,然后解压缩,会得到一系列文件 找到其中的classes.dex文件(它就是java文件编译再通过dx工具打包而成的)并将它复制到我们下载的
ex.toString()) } } Enmmm,虽然最后也发现了还可以修改证书,下面附上地址链接: 一个key玩转第三方服务(微信支付、某某地图) Enmmm,还以为以后就这样咯,结果今天看到官方,不免得为当初...如果是团队协作开发或者将代码开源,那么应当将此敏感信息从构建文件中移出,以免被其他人轻易获取。为此,我们应创建一个单独的属性文件来存储安全信息并按以下步骤操作,在我们的构建文件中引用该文件。...getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } debug { debuggable true...... } Enmmm,最后点击 Build > Build APK 以构建发布 APK ,并确认 Android Studio 已在模块的 build/outputs/apk/ 目录中创建一个签署的...APK。
编译后的java文件 META-INF 签名信息相关 resources.arsc 二进制资源文件 kotlin 编译后的kotlin文件 AndroidManifest.xml 清单文件 APK构建流程...再次简化一下: 资源文件、Java文件 > dex文件 > APK 优化思路 APK本质是一个压缩文件,是打包后的产物,那可以作为切入点的阶段就是打包前、以及打包中。...以ic_avatar.png为例: ic_avatar.png 优化后 原始大小 113.09KB TingPng压缩 36.85KB WebP 8.66KB 可以看到,转WebP之后,较原始大小减少了近...93%,恐怖如斯~ 6.开启混淆 minifyEnabled true,默认启用R8代码缩减功能。...shrinkResources true minifyEnabled false proguardFiles getDefaultProguardFile
v2SigningEnabled true } release { storeFile file(pStoreFile...v2SigningEnabled true } } buildTypes { release { minifyEnabled...proguard-rules.pro' signingConfig signingConfigs.release } debug { minifyEnabled...gradle.properties 打包 在命令行里输入: gradle assembleDebug 只打debug gradle assembleRelease 只打release 要构建 APK...apk 参考文件:CloudReader - build.gradle
如何减少打包后的APK文件大小,也就是所谓的APK瘦身,这涉及到很多技术手段,最常用的主要有四块:去除冗余功能、精简无用资源、减少图片大小、过滤无用的so文件,分别介绍如下: 一、去除冗余功能 每当开发者创建新的...首先看allowBackup,该属性若设置true,则允许用户备份APK安装包和应用数据,以便在刷机或者数据丢失后恢复应用。...然后看supportsRtl,该属性名称当中的Rtl为“Right-to-Left”(从右到左)的缩写,像中东的阿拉伯语、希伯来文等从右到左书写,supportsRtl属性为true时表示支持这种从右向左的文字系统...属性,默认值为false,该属性的字面意思为是否启用最小化,如果将它设为true,则Android Studio在打包APK时会进行以下代码处理: 1、压缩代码,移除各种无用的实体,包括类、接口、方法...之所以提供x86架构的so文件,是为了能够在电脑的模拟器上运行App,开发阶段当然无所谓安装包大小,正式发布就得考虑给APK瘦身,因此正式版本的安装包建议移除非ARM架构的so文件。
那么就会出现打包后的 APK 文件越来越大,如果突然有一天你们老板或领导叫你优化 APK 大小,你还不知道怎么优化那就有点说不过去了,这篇文章咱们就来一起分析并优化 APK 体积大小吧。...先上图看下优化后的效果 ? 分析 APK 资源占用 注意: 我是在 GitHub 找了一个人气比较高的开源项目,需要的话自己可以点击下载,自己动手尝试一番. ?...6.移除无用资源 shinkResource 开启 shinkResource = true buildTypes { release { minifyEnabled...构建不会将该文件打包到 APK 之中。 指定要舍弃的资源可能看似愚蠢,因为您本可将它们删除,但在使用构建变体时,这样做可能很有用。...构建工具也可能无法根据需要正确识别资源,这是因为编译器会添加内联资源 ID,而资源分析器可能不知道真正引用的资源和恰巧具有相同值的代码中的整数值之间的差别。
v2SigningEnabled true } release { storeFile file(pStoreFile...v2SigningEnabled true } } buildTypes { release { minifyEnabled...proguard-rules.pro' signingConfig signingConfigs.release } debug { minifyEnabled...] 打包 在命令行里输入: gradle assembleDebug 只打debug gradle assembleRelease 只打release 要构建 APK,并立即在运行的模拟器或连接的设备上安装...: gradle installDebug 输出地址: [apk] 参考文件:CloudReader - build.gradle
// 启动代码缩减 minifyEnabled true // 开启 zipAlign 优化 zipAlignEnabled...hostType", "3" buildConfigField "boolean", "LOG_DEBUG", "false" } } // 生成构建后输出的...不会向下传递,仅在当前 module 生效;api:向下传递,所依赖的 module 均可使用 */ dependencies { // ... } 二、buildConfigField 使用 在构建时...针对我之前这种法子做个小小升级,在原有 gradle 文件中添加如下内容: android { // 封装项目的所有构建类型配置 buildTypes { debug...buildConfigField "boolean", "LOG_DEBUG", "false" // ... } } } 随后 Build 之后变会根据当前构建类型在
在逛论坛时候,无意间发现Android Studio 3.0正式版本推送更新了,早听说AS 3.0添加了许多新功能,然后手贱迫不及待地想先睹为快,结果正中下怀。...关键字依赖发生变化: compile(implementation/api),provided(compileOnly),apk(runtimeOnly) AS 3.0后,在使用新依赖配置项时,引用本地库使用...输入法中文状态下无法选词 Question AS 3.0后在输入中文时候会出现键盘不显示,无法筛选词输入中文 Solution 首先要说不是你的输入法问题,而是AS 3.0后的一个BUG,下面提供几种解决方案...zipAlignEnabled true minifyEnabled true //是否混淆 shrinkResources true //是否去除无效的资源文件...debuggable true minifyEnabled true //是否混淆 shrinkResources true //是否去除无效的资源文件
matchingFallbacks = ["debug", "release"] } } // TODO(garyq): Shrinking is only false for multi apk...minifyEnabled true // Enables resource shrinking, which is performed by the /...proguard-android.txt"), flutterProguardRules, "proguard-rules.pro" } } //====================自定义构建多模块...,多衍生版============================== debug131 { initWith debug minifyEnabled false...proguard-rules.pro" } release_new.initWith(release) release_new {} //====================自定义构建多模块
领取专属 10元无门槛券
手把手带您无忧上云