CN108874443A - 一种综合多种方式来减少apk大小的方法 - Google Patents

一种综合多种方式来减少apk大小的方法 Download PDF

Info

Publication number
CN108874443A
CN108874443A CN201810673906.8A CN201810673906A CN108874443A CN 108874443 A CN108874443 A CN 108874443A CN 201810673906 A CN201810673906 A CN 201810673906A CN 108874443 A CN108874443 A CN 108874443A
Authority
CN
China
Prior art keywords
size
apk
resource
android
native
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201810673906.8A
Other languages
English (en)
Inventor
周聪伟
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
SHENZHEN LEWEI TECHNOLOGY DEVELOPMENT Co Ltd
Original Assignee
SHENZHEN LEWEI TECHNOLOGY DEVELOPMENT Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by SHENZHEN LEWEI TECHNOLOGY DEVELOPMENT Co Ltd filed Critical SHENZHEN LEWEI TECHNOLOGY DEVELOPMENT Co Ltd
Priority to CN201810673906.8A priority Critical patent/CN108874443A/zh
Publication of CN108874443A publication Critical patent/CN108874443A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/77Software metrics
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)

Abstract

本发明公开了一种综合多种方式来减少apk大小的方法,属于APP技术领域,其包括减少资源个数和尺寸和减少Native和Java代码两个步骤,移除不使用的资源,最小化第三方库中资源的使用,压缩PNG文件,使用向量图,能使用向量图去创建一个分辨率无关的图标,减少不必要的生成代码,移除调试符号,使用@IntDef注解和Proguard代替枚举,减少Native库的大小,从Native库中删除不必要的调试符号,之后再编译release包,本发明综合多种方式来减少apk大小的方法减少了apk体积,让apk轻巧便捷,庞大的apk体积会占用手机存储空间,而小体积的apk则占用少,更受到用户的青睐。

Description

一种综合多种方式来减少apk大小的方法
技术领域
本发明涉及到APP技术领域,特别涉及一种综合多种方式来减少apk大小的方法。
背景技术
目前,随着app的推广,越来越多的app在应用市场活跃,有些apk看起来比较大,而用户经常会避免下载看起来体积较大的应用,特别是在不稳定的2G、3G网络或者在以字节付费的网络。
发明内容
发明的目的在于提供一种综合多种方式来减少apk大小的方法,减少apk体积,让apk轻巧便捷,庞大的apk体积会占用手机存储空间,而小体积的apk则占用少,更受到用户的青睐,以解决上述背景技术中提出的问题。
为实现上述目的,本发明提供如下技术方案:
一种综合多种方式来减少apk大小的方法,包括减少资源个数和尺寸和减少Native和Java代码两个步骤,其中,
减少资源个数和尺寸的步骤如下:
步骤一:移除不使用的资源,lint为Android开发工具中的一个静态代码分析工具,检测在“res/”目录中的代码没有引用的资源;
步骤二:最小化第三方库中资源的使用,当开发Android应用时,经常使用第三方库提升应用的可用性和灵活性;
步骤三:只支持部分屏幕密度,Android支持很多设备集,其中包含了各种不同的屏幕密度,在Android 4.4及更高版本,框架支持不同的密度:ldpi,mdpi,tvdpi,hdpi,xhdpi,xxhdpi和xxxhdpi;
步骤四:减少动画帧数;
步骤五:重用资源;
步骤六:压缩PNG文件,AAPT工具能够在构建过程中通过无损压缩优化res/drawable/中的图片资源;
步骤七:使用WebP文件格式;
步骤八:使用向量图;
减少Native和Java代码的步骤如下:
第一步:减少不必要的生成代码;
第二步:移除枚举;
第三步:减少Native库的大小;
第四步:移除调试符号;
第五步:避免抽取Native库。
优选的,针对减少资源个数和尺寸的步骤中的步骤四,对于加入动画的每帧,均增加了APK中图片的个数,帧动画的帧率为30FPS,如果帧率降到15FPS,图片数量将减少一半。
优选的,针对减少资源个数和尺寸的步骤中的步骤五,Android提供了多种改变资源的颜色的方式,对于Android 5.0及以上,使用android:tint和tintMode属性,对于更低版本,使用ColorFilter类。
优选的,针对减少资源个数和尺寸的步骤中的步骤七,WebP格式为有损压缩且有透明通道。
优选的,针对减少Native和Java代码步骤中的第五步,在APK中存储未压缩的so文件,并且在Manifest文件的<application>中设置android:extractNativeLibs为false。
与现有技术相比,本发明的有益效果是:本发明提出的瓶装药液杂质检测系统,。
附图说明
图1为本发明的实施界面示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参阅图1,一种综合多种方式来减少apk大小的方法,包括减少资源个数和尺寸和减少Native和Java代码两个步骤,其中,
一、减少资源个数和尺寸的步骤如下:
步骤一:移除不使用的资源,lint为Android开发工具中的一个静态代码分析工具,检测在“res/”目录中的代码没有引用的资源;
步骤二:当开发Android应用时,经常使用第三方库提升应用的可用性和灵活性。比如,引用Android Support Library提升旧设备的用户体验,或者使用Google Play服务实现文字自动翻译。
如果一个第三方库原本是为服务器或普通电脑设计,会引入许多不需要的对象和方法。为了只引入应用需要的库中的那部分,可以编辑库文件(如果库的license允许这么做)。也能使用另外的针对手机的实现同样功能的库;
步骤三:Android支持很多设备集,其中包含了各种不同的屏幕密度。在Android4.4及更高版本,框架支持不同的密度:ldpi,mdpi,tvdpi,hdpi,xhdpi,xxhdpi和xxxhdpi。尽管Android支持所有这些屏幕密度,但不需要为每个密度都配置相应的资源。
如果知道某种特定屏幕密度已经很少有用户使用了,那么可以考虑是否需要为这个屏幕密度配置资源。如果不包含针对特定屏幕密度的资源,那么Android会自动缩放原本针对其他密度的已有资源。
如果的应用只需要缩放的图片,甚至可以把图片存放在drawable-nodpi目录,从而节省更多空间。推荐每个应用都应该至少包含xxhdpi的图片;
步骤四:减少动画帧数,使用帧动画会大大增加APK的大小。图1显示了目录中构成帧动画的多个PNG文件。每个图片都是动画的一帧。
对于加入动画的每帧,都增加了APK中图片的个数。图1中,帧动画的帧率是30FPS。如果帧率降到15FPS,图片数量将减少一半;
步骤五:重用资源,能包含一张图片的很多变种,比如染色、阴影、旋转的版本。但是,推荐在运行时复用一张图片来定制化他们。
Android提供了很多方式改变资源的颜色。对于Android 5.0及以上,使用android:tint和tintMode属性。对于更低版本,使用ColorFilter类;
步骤六:压缩PNG文件,AAPT工具能够在构建过程中通过无损压缩优化res/drawable/中的图片资源。比如aapt工具能将需要颜色少于256色的PNG变为8位PNG图,这样能够在保证图片质量的同时减少内存使用;
步骤七:使用WebP文件格式,也能使用WebP文件格式存储图片而不是PNG或者JPEG。WebP格式是有损压缩(像JPEG)且有透明通道(像PNG),且压缩率高于JPEG或PNG;
步骤八:使用向量图,能使用向量图去创建一个分辨率无关的图标。使用向量图能够显著减少APK大小。在Android中向量图是以VectorDrawable对象形式存在的。使用VectorDrawable对象,一个100B的文件能生成一个屏幕大小的清晰图片。
但是,系统需要很长时间渲染VectorDrawable对象,更大的图片需要更长的时间显示在屏幕上。因此只有小图片才考虑使用向量图;
二、减少Native和Java代码的步骤如下:
第一步:减少不必要的生成代码,确保理解任何自动生成的代码。比如,许多protocol buffer工具生成了过多的方法和类,这会让的应用大小翻倍;
第二步:移除枚举,一个枚举能让classes.dex文件增加1-1.4K。枚举的加入会快速增加应用体积。可以使用@IntDef注解和Proguard代替枚举,它能提供和枚举一样的类型安全转换;
第三步:减少Native库的大小,如果应用使用了Native代码和Android NDK,也能通过优化代码减少应用体积,这里介绍的两个技巧是删除调试符号和避免抽取Native库;
第四步:移除调试符号,如果应用在开发中并且仍需要调试,那么能理解使用调试符号。使用Android NDK提供的arm-eabi-strip工具,能从Native库中删除不必要的调试符号,之后再编译release包;
第五步:避免抽取Native库,在APK中存储未压缩的so文件,并且在Manifest文件的<application>中设置android:extractNativeLibs为false,这会防止在安装时PackageManager将APK中的so文件拷贝到文件系统,避免这种拷贝会让应用在做增量更新时的更新包更小。
APK的大小会影响应用加载的速度,使用的内存大小,消耗的电量大小。一个最简单的缩小APK大小的方式是减少资源的个数和大小。特别地,能移除应用中不再使用的资源,也能使用可缩放的Drawable对象代替图片文件。
如图1,给出各项apk内部结构压缩之后的体积,第一行原始体积,第二行使用该方法后减少后的体积,第三行是占用率。
综上所述,本发明提出的综合多种方式来减少apk大小的方法,通过减少资源个数和尺寸和减少Native和Java代码,移除不使用的资源,减少不必要的生成代码,使用@IntDef注解和Proguard代替枚举,减少Native库的大小,从Native库中删除不必要的调试符号,之后再编译release包,减少了apk体积,让apk轻巧便捷,庞大的apk体积会占用手机存储空间,而小体积的apk则占用少,更受到用户的青睐。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,根据本发明的技术方案及其发明构思加以等同替换或改变,都应涵盖在本发明的保护范围之内。

Claims (5)

1.一种综合多种方式来减少apk大小的方法,其特征在于:包括减少资源个数和尺寸和减少Native和Java代码两个步骤,其中,
减少资源个数和尺寸的步骤如下:
步骤一:移除不使用的资源,lint为Android开发工具中的一个静态代码分析工具,检测在“res/”目录中的代码没有引用的资源;
步骤二:最小化第三方库中资源的使用,当开发Android应用时,经常使用第三方库提升应用的可用性和灵活性;
步骤三:只支持部分屏幕密度,Android支持很多设备集,其中包含了各种不同的屏幕密度,在Android 4.4及更高版本,框架支持不同的密度:ldpi,mdpi,tvdpi,hdpi,xhdpi,xxhdpi和xxxhdpi;
步骤四:减少动画帧数;
步骤五:重用资源;
步骤六:压缩PNG文件,AAPT工具能够在构建过程中通过无损压缩优化res/drawable/中的图片资源;
步骤七:使用WebP文件格式;
步骤八:使用向量图;
减少Native和Java代码的步骤如下:
第一步:减少不必要的生成代码;
第二步:移除枚举;
第三步:减少Native库的大小;
第四步:移除调试符号;
第五步:避免抽取Native库。
2.根据权利要求1所述的一种综合多种方式来减少apk大小的方法,其特征在于:针对减少资源个数和尺寸的步骤中的步骤四,对于加入动画的每帧,均增加了APK中图片的个数,帧动画的帧率为30FPS,如果帧率降到15FPS,图片数量将减少一半。
3.根据权利要求1所述的一种综合多种方式来减少apk大小的方法,其特征在于:针对减少资源个数和尺寸的步骤中的步骤五,Android提供了多种改变资源的颜色的方式,对于Android 5.0及以上,使用android:tint和tintMode属性,对于更低版本,使用ColorFilter类。
4.根据权利要求1所述的一种综合多种方式来减少apk大小的方法,其特征在于:针对减少资源个数和尺寸的步骤中的步骤七,WebP格式为有损压缩且有透明通道。
5.根据权利要求1所述的一种综合多种方式来减少apk大小的方法,其特征在于:针对减少Native和Java代码步骤中的第五步,在APK中存储未压缩的so文件,并且在Manifest文件的<application>中设置android:extractNativeLibs为false。
CN201810673906.8A 2018-06-26 2018-06-26 一种综合多种方式来减少apk大小的方法 Pending CN108874443A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810673906.8A CN108874443A (zh) 2018-06-26 2018-06-26 一种综合多种方式来减少apk大小的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810673906.8A CN108874443A (zh) 2018-06-26 2018-06-26 一种综合多种方式来减少apk大小的方法

Publications (1)

Publication Number Publication Date
CN108874443A true CN108874443A (zh) 2018-11-23

Family

ID=64295902

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810673906.8A Pending CN108874443A (zh) 2018-06-26 2018-06-26 一种综合多种方式来减少apk大小的方法

Country Status (1)

Country Link
CN (1) CN108874443A (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109710265A (zh) * 2018-12-28 2019-05-03 北京金山安全软件有限公司 一种软件安装包的获取方法、装置及电子设备
CN109885324A (zh) * 2019-02-25 2019-06-14 北京达佳互联信息技术有限公司 一种应用程序安装包的处理方法、装置、终端及存储介质
CN110704074A (zh) * 2019-09-12 2020-01-17 北京奇艺世纪科技有限公司 软件安装包处理方法、装置、电子设备及存储介质
CN112799691A (zh) * 2021-02-02 2021-05-14 百果园技术(新加坡)有限公司 一种应用安装包的处理方法、装置、设备及介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105915623A (zh) * 2016-05-20 2016-08-31 努比亚技术有限公司 应用安装包处理装置及方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105915623A (zh) * 2016-05-20 2016-08-31 努比亚技术有限公司 应用安装包处理装置及方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
吾若成疯: "Android减少APK大小", 《HTTPS://WWW.JIANSHU.COM/P/3F3090F97071》 *

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109710265A (zh) * 2018-12-28 2019-05-03 北京金山安全软件有限公司 一种软件安装包的获取方法、装置及电子设备
CN109885324A (zh) * 2019-02-25 2019-06-14 北京达佳互联信息技术有限公司 一种应用程序安装包的处理方法、装置、终端及存储介质
CN109885324B (zh) * 2019-02-25 2022-06-10 北京达佳互联信息技术有限公司 一种应用程序安装包的处理方法、装置、终端及存储介质
CN110704074A (zh) * 2019-09-12 2020-01-17 北京奇艺世纪科技有限公司 软件安装包处理方法、装置、电子设备及存储介质
CN112799691A (zh) * 2021-02-02 2021-05-14 百果园技术(新加坡)有限公司 一种应用安装包的处理方法、装置、设备及介质

Similar Documents

Publication Publication Date Title
CN108874443A (zh) 一种综合多种方式来减少apk大小的方法
CA2555102C (en) Rendering a user interface
US8887132B1 (en) Application runtime environment and framework
CN106056530B (zh) 应用中图片内容的显示方法及装置
JP5512657B2 (ja) リッチメディアサービスのための端末のユーザインターフェース装置及び方法
CN109614565B (zh) 网页生成方法与装置
CN112231017B (zh) 在Linux上兼容运行Android运行环境的虚拟键鼠方法与装置
CN110297624B (zh) 基于electron框架的Widget系统的实现方法及采用该系统的电视机
CN112363723B (zh) 一种动态组合安卓布局的方法
CN101600010A (zh) 手机界面配置数据的共享方法
CN112307403A (zh) 页面渲染方法、装置、存储介质以及终端
CN113938699B (zh) 基于网页快速建立直播的方法
CN111352957A (zh) 远程字典服务优化方法及相关设备
CN113391811A (zh) 函数编译方法、装置、电子设备及计算机可读存储介质
CN110874172B (zh) 放大app界面的方法、装置、介质及电子设备
CN106898351A (zh) 一种大屏幕的控制方法及装置
KR20060101963A (ko) 화면 분할 기능을 갖는 이동통신 단말
CN110971958A (zh) 直播礼物横幅逐帧动画展示方法、存储介质、设备及系统
CN111324398A (zh) 最近内容的处理方法、装置、终端及存储介质
WO2010126224A2 (ko) 동영상 메시지 서비스 제공 방법
CN115809056B (zh) 组件复用实现方法、装置和终端设备、可读存储介质
CN109614592B (zh) 文本的处理方法、装置、存储介质和电子设备
CN116932829A (zh) 针对开发者的支持大数据树形视图组件的解决方案
KR100784263B1 (ko) 클립보드를 이용한 메시지 전송 방법 및 이를 위한 장치
CN103686149B (zh) 浏览器故障信息的获取方法及系统

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20181123