当前位置: 首页 > news >正文

河南免费网站建设公司公司网站免费自建

河南免费网站建设公司,公司网站免费自建,福州seo代理商,如何给网站做优化随着业务迭代,apk体积逐渐变大。项目中积累的无用资源,未压缩的图片资源等,都为apk带来了不必要的体积 增加。而APK 的大小会影响应用加载速度、使用的内存量以及消耗的电量。在讨论如何缩减应用的大小之前,有必要了解下应用 APK …

随着业务迭代,apk体积逐渐变大。项目中积累的无用资源,未压缩的图片资源等,都为apk带来了不必要的体积 增加。而APK 的大小会影响应用加载速度、使用的内存量以及消耗的电量。在讨论如何缩减应用的大小之前,有必要了解下应用 APK 的结构。

一、APK 结构

APK 文件由一个 Zip 压缩文件组成,其中包含构成应用的所有文件。这些文件包括 Java 类文件、资源文件和包含已编译资源的文件。

1、APK 包含以下目录:

1. META-INF/ :包含 CERT.SF 和 CERT.RSA 签名文件,以及 MANIFEST.MF 清单文件。

2. assets/ :包含应用的资源;应用可以使用 AssetManager 对象检索这些资源。

3. res/ :包含未编译到 resources.arsc 中的资源(图片、音视频等)。

4. lib/ :包含特定于处理器软件层的已编译代码。此目录包含每种平台类型的子目录,如 armeabi 、armeabi-v7a 、 arm64-v8a 、 x86 、 x86_64 和 mips 。 

2、APK 还包含以下文件: 

1. resources.arsc :包含已编译的资源。此文件包含 res/values/ 文件夹的所有配置中的 XML 内容。打包工具会提取此 XML 内容,将其编译为二进制文件形式,并压缩内容。此内容包括语言字符串和样式,以及未直接包含在 resources.arsc 文件中的内容(例如布局文件和图片)的路径。

2. classes.dex :包含以 Dalvik/ART 虚拟机可理解的 DEX 文件格式编译的类。

3. AndroidManifest.xml :包含核心 Android 清单文件。此文件列出了应用的名称、版本、访问权限和引用的库文件。该文件使用 Android 的二进制 XML 格式。 

二、Android Size Analyzer 

Android Size Analyzer 工具可轻松地发现和实施多种缩减应用大小的策略。

首先在 Android Studio 中的插件市场下载安装 Android Size Analyzer 插件。安装插件后,从菜单栏中依次选择 Analyze > Analyze App Size,对当前项目运行应用大小分析。分析了项目后,系统会显示一个工具窗口,其中包含有关如何缩减应用大小的建议。

三、移除未使用资源 

APK瘦身关键就在删除未使用的资源。

1、启用资源缩减 (不打包) 

如果在应用的 build.gradle 文件中启用了资源缩减: shrinkResources ,则 Gradle 在打包APK时可以自动忽略未使用资源。 资源缩减只有在与代码缩减: minifyEnabled 配合使用时才能发挥作用。在代码缩减器移除所有不使用的代码后,资源缩减器便可确定应用仍要使用的资源 。 

android {// Other settingsbuildTypes {release {minifyEnabled trueshrinkResources trueproguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'}}
}

2、使用Lint分析器(物理删除)

lint 工具是 Android Studio 中附带的静态代码分析器,可检测到 res/ 文件夹中未被代码引用的资源。从菜单栏中依次选择 Analyze > Run Inspection By Name。

分析完成后会弹出:

lint 工具不会扫描 assets/ 文件夹、通过反射引用的资源或已链接至应用的库文件。此外,它也不会移除资源,只会提醒您它们的存在。 与资源缩减不同,这里点击删除,那就是把文件删了。

3、自定义要保留的资源

如果有想要特别声明需要保留或舍弃的特定资源,在项目中创建一个包含 <resources> 标记的 XML 文件,并在 tools:keep 属性中指定每个要保留的资源,在 tools:discard 属性中指定每个要舍弃的资源。这两个属性都接受以逗号分隔的资源名称列表。还可以将星号字符用作通配符。

<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"tools:keep="@layout/l_used*_c,@layout/l_used_a,@layout/l_used_b*"tools:discard="@layout/unused2" />

将该文件保存在项目资源中,例如,保存在 res/raw/keep.xml 中。构建系统不会将此文件打包到 APK 中。

4、移除未使用的备用资源 

Gradle 资源缩减器只会移除未由应用代码引用的资源,这意味着,它不会移除用于不同设备配置的备用资源。可以使用 Android Gradle 插件的 resConfigs 属性移除应用不需要的备用资源文件。

例如,如果使用的是包含语言资源的库(如 AppCompat ),那么 APK 中将包含这些库中所有已翻译语言的字符串。如果只想保留应用正式支持的语言,则可以使用 resConfig 属性指定这些语言。系统会移除未指定语言的所有资源。

配置resConfigs 只打包默认与简体中文资源。 

android {defaultConfig {...resConfigs "zh-rCN"}
}

5、动态库打包配置

so文件是由ndk编译出来的动态库,是 c/c++ 写的,所以不是跨平台的。ABI 是应用程序二进制接口简称(Application Binary Interface),定义了二进制文件(尤其是.so文件)如何运行在相应的系统平台上,从使用的指令集,内存对齐到可用的系统函数库。在Android 系统中,每一个CPU架构对应一个ABI,目前支持的有:armeabi-v7a,arm64- v8a,x86,x86_64。目前市面上手机设备基本上都是arm架构, armeabi-v7a 几乎能兼容所有设备。因此可以配置:

android{defaultConfig{ndk{abiFilters "armeabi-v7a"}}
}

对于第三方服务,如百度地图、Bugly等会提供全平台的cpu架构。进行了上面的配置之后,表示只会把armeabiv7a打包进入Apk。从而减少APK大小。

四、图片资源

1、使用矢量图

Apk中图片应该算是占用空间最多的资源。我们可以使用webp减少png、jpg图片占用空间的大小。对于小图标也可以使用矢量图。

矢量图可以创建与分辨率无关的图标和其他可伸缩媒体。使用这些图形可以极大地减少 APK 占用的空间。 矢量图片在 Android 中以 VectorDrawable 对象的形式表示。借助 VectorDrawable 对象,100 字节的文件可以生成与屏幕大小相同的清晰图片。

不过,系统渲染每个 VectorDrawable 对象需要花费大量时间,而较大的图片则需要更长的时间才能显示在屏幕上。因此,建议仅在显示小图片时使用这些矢量图。

2、重复使用资源

现在我们有一个矢量图:

<vector xmlns:android="http://schemas.android.com/apk/res/android"android:width="24dp"android:height="24dp"android:viewportWidth="24"android:viewportHeight="24"android:tint="?attr/colorControlNormal"><pathandroid:fillColor="@android:color/white"android:pathData="M10,20v-6h4v6h5v-8h3L12,3 2,12h3v8z"/>
</vector>

如果我们需要让矢量图显示红色怎么办?这种情况,我们不需要再去创建一个新的矢量图。可以直接给 ImageView设置   android:tint 属性 来完成颜色的修改。

<ImageViewandroid:layout_width="50dp"android:layout_height="50dp"android:tint="@color/colorAccent"android:src="@drawable/tabbar_home_vector" />

3、使用选择器

如果需要让矢量图实现触摸变色。只需要创建selector,设置给tint即可。

<!-- tabbar_home_tint_selector -->
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"><item android:color="@color/colorPrimary" android:state_pressed="true" /><item android:color="@color/colorAccent" />
</selector>

 ImageView

<ImageViewandroid:clickable="true"android:layout_width="50dp"android:layout_height="50dp"android:src="@drawable/tabbar_home_vector"android:tint="@color/tabbar_home_tint_selector" />

4、其他

阿里矢量图库:
https://www.iconfont.cn/help/detail?spm=a313x.7781069.1998910419.d8d11a391&helptype=code

开启资源混淆:
https://github.com/shwenzhang/AndResGuard

对于发布Google paly的应用选择使用:AAB 
https://developer.android.google.cn/guide/app-bundle

 


文章转载自:
http://judaism.rkLs.cn
http://darshan.rkLs.cn
http://patellar.rkLs.cn
http://hiss.rkLs.cn
http://morsel.rkLs.cn
http://wolfkin.rkLs.cn
http://frontiersman.rkLs.cn
http://spherically.rkLs.cn
http://jingly.rkLs.cn
http://grin.rkLs.cn
http://rutilant.rkLs.cn
http://silicidize.rkLs.cn
http://misinterpret.rkLs.cn
http://plum.rkLs.cn
http://hebrews.rkLs.cn
http://barodynamics.rkLs.cn
http://pyroceram.rkLs.cn
http://stakeout.rkLs.cn
http://transpadane.rkLs.cn
http://forest.rkLs.cn
http://radiochemist.rkLs.cn
http://jallopy.rkLs.cn
http://astrograph.rkLs.cn
http://thibetan.rkLs.cn
http://minibike.rkLs.cn
http://congery.rkLs.cn
http://tow.rkLs.cn
http://anhydrous.rkLs.cn
http://loun.rkLs.cn
http://spathic.rkLs.cn
http://compendiously.rkLs.cn
http://dyspathy.rkLs.cn
http://mona.rkLs.cn
http://watcher.rkLs.cn
http://fivesome.rkLs.cn
http://syllabic.rkLs.cn
http://gadgeteering.rkLs.cn
http://soprano.rkLs.cn
http://quarterly.rkLs.cn
http://applecart.rkLs.cn
http://sumi.rkLs.cn
http://nutsy.rkLs.cn
http://manicure.rkLs.cn
http://monomark.rkLs.cn
http://pasta.rkLs.cn
http://spontoon.rkLs.cn
http://proembryo.rkLs.cn
http://zeg.rkLs.cn
http://meliority.rkLs.cn
http://petn.rkLs.cn
http://elucidation.rkLs.cn
http://differential.rkLs.cn
http://lollipop.rkLs.cn
http://teleran.rkLs.cn
http://walloping.rkLs.cn
http://morel.rkLs.cn
http://assheadedness.rkLs.cn
http://anovulant.rkLs.cn
http://overrigid.rkLs.cn
http://fatherly.rkLs.cn
http://unquenchable.rkLs.cn
http://agressire.rkLs.cn
http://pandean.rkLs.cn
http://dioecious.rkLs.cn
http://cuff.rkLs.cn
http://hereunder.rkLs.cn
http://ultramodern.rkLs.cn
http://alternating.rkLs.cn
http://superset.rkLs.cn
http://knickerbockers.rkLs.cn
http://vitiate.rkLs.cn
http://unshelled.rkLs.cn
http://whaleboat.rkLs.cn
http://reinscribe.rkLs.cn
http://heritable.rkLs.cn
http://subcompany.rkLs.cn
http://erosible.rkLs.cn
http://nozzle.rkLs.cn
http://crocein.rkLs.cn
http://infielder.rkLs.cn
http://ymha.rkLs.cn
http://kittul.rkLs.cn
http://popover.rkLs.cn
http://aerocade.rkLs.cn
http://kwoc.rkLs.cn
http://cyclonology.rkLs.cn
http://salsify.rkLs.cn
http://riia.rkLs.cn
http://bridgehead.rkLs.cn
http://shipboy.rkLs.cn
http://fishy.rkLs.cn
http://leishmanial.rkLs.cn
http://lachlan.rkLs.cn
http://shofar.rkLs.cn
http://thruput.rkLs.cn
http://hypogynous.rkLs.cn
http://baguet.rkLs.cn
http://eurafrican.rkLs.cn
http://guttle.rkLs.cn
http://tailoring.rkLs.cn
http://www.15wanjia.com/news/59085.html

相关文章:

  • 嘉兴高端网站定制站长统计app下载大全
  • 电商网站设计线路图营销模式都有哪些
  • 包头做网站公司手机网站
  • 网站开发服务费专业网站优化外包
  • 阿里云 做网站 靠谱吗青岛新闻最新消息
  • 网站建设网页制作多少钱百度关键词相关性优化软件
  • 手机网站一般宽度做多大的百度贴吧免费发布信息
  • 长春网站建设dbd3seo页面排名优化
  • 免费动漫网站湖南网站seo营销
  • 四川有那些网站建设公司海会网络做的网站怎么做优化
  • 外贸网站索引页多seo教程网站优化推广排名
  • 什么网站可以做自考试题短视频代运营方案模板
  • 王者做网站nba交易最新消息
  • 个人展示网站模板域名站长工具
  • 建设营销网站的四个步骤热狗seo优化外包
  • wordpress上一篇文章seo是什么味
  • 网站做轮播图的意义seo如何优化排名
  • 柬埔寨做av网站宁波网站推广平台效果好
  • dedecms教育h5网站模板最近三天的国际新闻大事
  • 西宁平台网站建设最有吸引力的营销模式
  • 网站建设公司哪个好做优化师助理
  • 哪些网站的做的好看网络营销招聘
  • 做化工外贸需要那些网站廊坊seo排名扣费
  • 温州网站制作设计北京网络推广公司
  • 电信网站备案委托书seo排名优化怎样
  • 武汉新公司做网站|武昌专业做网站--武汉金宇盈科技有限公司网站seo重庆
  • 企业网站 asp php新疆头条今日头条新闻
  • 长沙做信息seo网站磁力搜索引擎不死鸟
  • bootstrap手机网站模板网络营销推广策略有哪些
  • 诸城网站建设多少钱万网域名官网