首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在将目标targetSdkVersion和compileSdkVersion设置为26之后,我的android apk大小增加了500kb

在将目标targetSdkVersion和compileSdkVersion设置为26之后,Android APK大小增加了500KB的原因是因为在Android 8.0(API级别26)及更高版本中,引入了一些新的特性和改进,这些特性和改进需要额外的库和资源来支持。这些额外的库和资源会增加APK的大小。

其中一些主要的特性和改进包括:

  1. 支持自动填充框架(Autofill Framework):Android 8.0引入了自动填充框架,用于简化用户在应用程序中填写表单的过程。为了支持这个特性,需要包含相关的库和资源。
  2. 改进的通知渠道(Notification Channels):Android 8.0引入了通知渠道,允许开发者对不同类型的通知进行分类和管理。为了支持这个特性,需要包含相关的库和资源。
  3. 后台限制(Background Limitations):Android 8.0引入了一些限制,以减少后台应用程序对系统资源的占用。为了支持这些限制,需要包含相关的库和资源。
  4. 改进的权限管理(Enhanced Permission Management):Android 8.0改进了权限管理系统,使用户更容易理解和控制应用程序对敏感权限的访问。为了支持这个改进,需要包含相关的库和资源。

为了减小APK的大小增加,可以考虑以下几个方法:

  1. 使用ProGuard进行代码混淆和优化:ProGuard是Android开发工具中的一个优化工具,可以删除未使用的代码和资源,从而减小APK的大小。
  2. 压缩资源文件:可以使用工具如pngcrush或者TinyPNG来压缩APK中的图片资源,从而减小APK的大小。
  3. 移除不必要的库和资源:检查APK中是否包含不必要的库和资源,如果有的话可以考虑移除它们。
  4. 使用动态特性模块(Dynamic Feature Modules):如果应用程序具有可选的功能模块,可以将这些模块作为动态特性模块,只在需要时下载和安装,从而减小APK的大小。
  5. 优化资源文件:检查资源文件是否存在重复或者冗余的内容,进行优化和合并。

腾讯云相关产品和产品介绍链接地址:

  1. 腾讯云移动应用分发服务:提供了一站式的移动应用分发解决方案,包括应用上传、分发、版本管理等功能。详情请参考:https://cloud.tencent.com/product/tcapk
  2. 腾讯云移动测试服务:提供了全面的移动应用测试解决方案,包括自动化测试、性能测试、兼容性测试等。详情请参考:https://cloud.tencent.com/product/mts

请注意,以上提到的腾讯云产品仅供参考,具体选择和使用需根据实际需求进行评估和决策。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Android Studio 中Gradle构建系统示例

相信有很多像我一样朋友使用Android Studio时,对 Gradle Gradle Android 插件版本号作用不是很清楚,本篇文章将对这些进行解释,最后通过一个实际项目工程来说明其中配置块含义...compileSdkVersion 26 :编译项目使用Android SDK版本号为26,可以使用对应版本号提供API进行编程 minSdkVersion 14 :定义最小可以运行appandroid...系统版本号为14 targetSdkVersion 26 :指定测试appandroid系统版本号为26 buildToolsVersion “26.0.2” :指定Android Studio中 sdk...plugin: 'java-library' 2. build.gradle 文件中结构解释, 大招来了 :) 下面通过简单易懂方式去让使用者理解build脚本文件结构。...类型(也就是闭包),调用时候,可以把闭包中执行代码写到括号中,xxx({ }),当把括号省略之后就变成了 xxx{ } 格式”。

1.4K20
  • Android笔记:Android 组件化方案探索与思考

    本项目github地址 先来一张效果图,建议读者clone项目后跟着项目看这篇文章,有任何不明白地方可留言或者联系看到后会立刻回复你。 ?...组件化优势 组件化就是通用模块独立出来,统一管理,以提高复用,页面拆分为粒度更小组件,组件内部除了包含UI实现,还包含数据层逻辑层。 每个工程都可以独立编译、加快编译速度,独立打包。...library以及工具类 组件通信:组件化之后,Module之间是相互隔离,如何进行UI跳转以及方法调用 入口参数:我们知道组件之间是有联系,所以单独调试时候如何拿到其它Module传递过来参数...minSdkVersion = 16 targetSdkVersion = 26 compileSdkVersion = 26 buildToolsVersion = '...isModuleRun状态不同,加载applicationAndroidManifest都不一样,以此来区分是独立APK还是lib, 实现方式如下 build.grade里面配置 if (isModuleRun.toBoolean

    85010

    实现Android APK瘦身99.99%

    看上去首当其冲目标是启动图标文件,因为 APK 中共包含了 15 个图像文件,并且mipmap-anydpi-v26下还有两个 XML 文件。...未签名且未对齐 APK 大小 1902 字节,这意味着签名对齐过程增加了约 1 Kb。 文件大小差异(优化为 2608 字节,削减 21%) 很奇怪!...压缩破解(Compression Hack)(优化为 2599 个字节,削减 0.5%) 让我们剩余字符串都更改为‘c’,更新版本 26,然后生成一个签名 APK。...下面,我们尝试通过设置 targetSdkVersion 1并更新文件大小头部659,去删除一个字节。不幸是,Android 系统拒绝了这个非法 APK,因此看上去这里另有玄机。...想我听到了负责维护BinaryXMLParser.java Android Framework 工程师对着枕头大声尖叫。 最大化收益,我们将使用空字节(Null)替换这些虚字符。

    1.8K30

    AS中minSdkVersion、compileSdkVersiontargetSdkVersion、buildTools

    当你修改了 compileSdkVersion 时候,可能会出现新编译警告、编译错误,但新 compileSdkVersion 不会被包含到 APK 中:它纯粹只是在编译时候使用。...03 — minSdkVersion 如果 compileSdkVersion 设置可用最新 API,那么 minSdkVersion 则是应用可以运行最低要求。...targetSdkVersionAndroid 提供向前兼容主要依据,应用 targetSdkVersion 没有更新之前系统不会应用最新行为变化。...由于某些行为变化对用户是非常明显(弃用 menu 按钮,运行时权限等),所以 target 更新最新 SDK 是所有应用都应该优先处理事情。...来覆盖最大的人群,用最新 SDK 设置 target compile 来获得最好外观行为。

    87120

    AndroidStudio3.0多渠道打包:用一行命令打出N个包

    关于作者: 康白 csdn: http://blog.csdn.net/k_bb_666 前言: 做Android开发绕不开多渠道这件事,因为Android应用市场大大小小有几百个...多渠道统计时息息相关,因为我们做多渠道打包目的就是要统计,友盟统计是大家日常开发中常用渠道统计工具,使用相当普遍,接下来讲到打包方法就是基于友盟统计实施。...中进行设置之后gradle编译时候会动态替换掉这个占位符。..." /> 二、appbuild.gradleandroid{}中添加如下内容: android { flavorDimensions "default" productFlavors...你需要打什么渠道包,就在这里按友盟要求用渠道名给UMENGCHANNELVALUE赋值。上面这个配置作用就是,每个渠道包产生不同 UMENGCHANNELVALUE 值。

    37210

    浅析Android中build.gradle实用技巧

    / 2.打包设置appname(启动图标类似,res下面的都可以这样使用) android { defaultConfig { //string.xml中不能出现app_name这个字段...'), 'proguard-rules.pro' signingConfig signingConfigs.release } } } 6.更改打包apkandroid{...Studio开发Build.gradle小技巧 引用版本统一规范 Android开发存在着众多版本不同,比如compileSdkVersion、minSdkVersion、targetSdkVersion...以及项目中依赖第三方库版本,不同module及不同开发人员都有不同版本,所以需要一个统一版本规范文件,现在就来介绍一种方式。...下build.gradle文件就可以这样来引用了 android { compileSdkVersion rootProject.compileSdkVersion buildToolsVersion

    83220

    史上最全Android build.gradle配置教程

    该插件一般有两种值可选: ‘com.android.application’,表示该模块应用程序模块,可以直接运行,打包得到是.apk文件 ‘com.android.library’,表示该模块库模块...2.2、compileSdkVersion设置编译时用Android版本 2.3、buildToolsVersion:设置编译时使用构建工具版本,Android Studio3.0后去除此项配置...targetSdkVersion:指定项目的目标版本,表示目标版本上已经做过充分测试,系统会为该应用启动一些对应该目标系统最新功能特性,Android系统平台行为变更,只有targetSdkVersion...属性值被设置大于或等于该系统平台API版本时,才会生效。...例如,若指定targetSdkVersion22,则表示该程序最高只Android5.1版本上做过充分测试,Android6.0系统上(对应targetSdkVersion23)拥有的新特性如系统运行时权限等功能就不会被启用

    5K30

    史上最全Android build.gradle配置详解(小结)

    2.2、compileSdkVersion设置编译时用Android版本 2.3、buildToolsVersion:设置编译时使用构建工具版本,Android Studio3.0后去除此项配置...2.4、defaultConfig{}闭包: compileSdkVersion 27//设置编译时用Android版本 defaultConfig { applicationId...targetSdkVersion :指定项目的目标版本,表示目标版本上已经做过充分测试,系统会为该应用启动一些对应该目标系统最新功能特性,Android系统平台行为变更,只有targetSdkVersion...属性值被设置大于或等于该系统平台API版本时,才会生效。...例如,若指定targetSdkVersion22,则表示该程序最高只Android5.1版本上做过充分测试,Android6.0系统上(对应targetSdkVersion23)拥有的新特性如系统运行时权限等功能就不会被启用

    2.2K20

    Android 组件化】使用 ARoute 实现组件化 ( 完整组件化项目框架 )

    ; 创建项目 , 项目中有 3 个 Module , 1 个主模块 app , 2 个依赖库 module1 module2 ; app , module1 , module2...Module 中版本号 , 如编译版本号 , 最小版本号 , 目标版本号 ; applicationId 用于保存各个模块包名 , 尤其是 module 依赖库包名 , 组件化状态下 , 该..., 并且模块化模式中 , 不使用该文件 ; 1、创建组件模式下使用清单文件 module1 下创建 组件模式 时使用 Application 类清单文件 ; Application..., 当 isModuleMode 设置 true 时 , 当前是集成模式 , module 模块作为 app 模块依赖库进行编译 , 因此需要加载 apply plugin: 'com.android.library...' 插件 ; 当 isModuleMode 设置 false 时 , 是 组件模式 , 每个 module 都是可以独立运行应用 , 需要加载 apply plugin: 'com.android.application

    2.4K20

    Android工程师,不理解模块化、组件化、插件化区别怎么行?

    调试时,只关心负责模块,希望模块是一个单独app,因为这样更小,业务更专一,相对来讲修改与调试就会越省时省心,编译就会越快。...3、 插件化 又有人问了:插件化组件化又有什么区别呢? 插件化严格意义来讲,其实也算是模块化观念。一个完整工程,按业务划分为不同插件,都是分治法一种体现。化整为零,相互配合。...组件化能做只是, 朋友圈已经有了,想单独调试,维护,别人不耦合。但是整个项目还是有关联。...android = [ compileSdkVersion: 26 ] applicationId = [ app...这里说下两个概念: 占位符 ${supportLibrary} 占据一个位置,然后用{}里面的变量补充,达到一致配置目的 android = [ compileSdkVersion: 26 ] 以上相当于定义了一个

    1.5K60

    【错误记录】Kotlin 编译报错 ( Class ‘Xxx‘ is not abstract and does not implement abstract member )

    文章目录 一、报错信息 二、解决方案 一、报错信息 ---- Google Play 上架要求 Android 编译版本 目标版本都要高于 30 才可以上传 ; Android 编译版本... 目标版本 都升级 30 之后 , Kotlin 编译检查变得更严格 , 之前不规范代码需要逐个修改 ; 编译版本 compileSdkVersion 目标版本 targetSdkVersion... 编译版本 compileSdkVersion 目标版本 targetSdkVersion 都为 28 时 , 编译不报上述错误 ; 改了下 Android 编译版本号 , 报了 286..., format: Int, width: Int, height: Int) { 可以看到第一个参数是可空参数 , 这个问号总不会是打上去吧 ; 这 Kotlin 相关 前后冲突操作 , Android...官方没少干这事 ; 解决方案 : Kotlin 中 , 所有的重写函数可空参数 , 都改为非空参数 , 即删除参数后面的问号 “?”

    2.1K20

    Android Gradle 插件】ProductFlavor 配置 ( applicationId 配置 | SdkVersion 相关配置 | version 应用版本配置 )

    文章目录 一、ProductFlavor 配置 1、applicationId 配置 2、minSdkVersion 配置 3、targetSdkVersion 配置 4、versionCode ..."1.0" } } 1、applicationId 配置 build.gradle android#defaultConfig#applicationId 下设置包名 , android... 清单文件中 package 包名 , 只是该 AndroidManifest.xml 中设置一些 android:name 配置中 , 用于替换 “.”...applicationId 设置才是应用包名 , 清单文件中设置不是应用包名标识 ; ProductFlavor:applicationId 参考文档 : https://google.github.io...3、targetSdkVersion 配置 targetSdkVersion 配置 : 设置编译目标 SDK 版本 ; 参考文档 : https://google.github.io/android-gradle-dsl

    31130

    Groovy高级用法

    Project Api使用 命令使用 Android studio 命令行中输入./gradlew clean 进行工程清理 输入./gradlew build 进行task任务构建 输入..../gradlew projects 列表展示当前根project与它子project Gradle 生命周期: 初始化阶段完成所有的配置操作 初始化阶段后就是配置阶段, 再之后就是执行阶段,也就执行...": 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.1.0'       ]   }   然后projectbuild.gradle...value类型属性,无法定义闭包 里面定义isLoadApp = true,setting.gradle进行配置是否引入app project   //判断是否设置isLoadApp属性,设置false...fileTreeElement->           println "the file name is $fileTreeElement.name"           //当前文件下文件拷贝到根工程

    89820

    【原创】Apktools反编译APK,查看apk信息,常用于安装apk失败原因分析。

    反编译介绍 背景:adb install安装apk时我们通常出现各种各样无法安装问题。...直接Apk后缀改成.zip不是也可以直接查看需要内容吗?...答案:更改apk后缀.apk.zip时打开zip中文件时你会发现是乱码,所以我们需要使用工具进行反编译 需要环境:Window+jdk8 实战教程 测试apk:小米运动 apktool工具下载地址...工具中会生成一个文件夹,打开文件夹中“AndroidManifest文件” AndroidManifest名词详解: compileSdkVersion:SDK编译版本.编译apk版本,sdk版本对应手机...minSdkVersion:最小SDK版本.运行该APK安卓SDK最低版本要求 targetSdkVersion:向上兼容版本.APK运行最高版本 补充内容 sdk对应android版本:

    2K10

    【错误记录】Kotlin 编译报错 ( Type mismatch: inferred type is String? but String was expected )

    文章目录 一、报错信息 二、解决方案 一、报错信息 ---- Google Play 上架要求 Android 编译版本 目标版本都要高于 30 才可以上传 ; Android 编译版本... 目标版本 都升级 30 之后 , Kotlin 编译检查变得更严格 , 之前不规范代码需要逐个修改 ; 编译版本 compileSdkVersion 目标版本 targetSdkVersion...but String was expected 编译版本 compileSdkVersion 目标版本 targetSdkVersion 都为 28 时 , 编译不报上述错误 ; 改了下...Android 编译版本号 , 报了 286 个错误 , 今天逐个解决上述编译错误 ; 二、解决方案 ---- 错误分析 : 上述问题是方法中传入一个参数 , 导致上述编译报错 ; 方法参数只接受非空类型..., 不能接受可空参数 ; 传入数据没有设置具体数据类型 , 被自动推断 String!

    2.4K20

    【错误记录】Kotlin 编译报错 ( Smart cast to ‘Xxx‘ is impossible, because ‘xxx‘ is a mutable property ... )

    文章目录 一、报错信息 二、解决方案 一、报错信息 ---- Google Play 上架要求 Android 编译版本 目标版本都要高于 30 才可以上传 ; Android 编译版本... 目标版本 都升级 30 之后 , Kotlin 编译检查变得更严格 , 之前不规范代码需要逐个修改 ; 编译版本 compileSdkVersion 目标版本 targetSdkVersion...由 28 修改为 30 ; android { compileSdkVersion 30 buildToolsVersion "29.0.2" defaultConfig {...编译版本 compileSdkVersion 目标版本 targetSdkVersion 都为 28 时 , 编译不报上述错误 ; 改了下 Android 编译版本号 , 报了 286 个错误...) 解决方案 : Canvas 绘制位图方法是 Android 系统方法 , 方法无法修改 , 只能修改参数 ; 传入参数后 , 添加 !!

    2.4K20
    领券