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

医疗类网站哪家做的好/常用的网络营销策略有哪些

医疗类网站哪家做的好,常用的网络营销策略有哪些,网站开发做账,网站根目录在哪里在Android系统中安装应用的时候,需要对Dex进行优化,但由于其处理工具DexOpt的限制,导致其id的数目不能够超过65536个。而MultiDex兼容包的出现,就很好的解决了这个问题,它可以配合Android Studio实现一个APK包含多个de…

在Android系统中安装应用的时候,需要对Dex进行优化,但由于其处理工具DexOpt的限制,导致其id的数目不能够超过65536个。而MultiDex兼容包的出现,就很好的解决了这个问题,它可以配合Android Studio实现一个APK包含多个dex的功能。今天小编就和大家详细分享下MultiDex相关概念及具体使用方法。

 

1、MultiDex是怎么工作的?

      对于这个问题,我们通过具体实例为大家进行分享,以APK中有两个dex文件为例,第二个dex文件为classes2.dex。

在Android应用安装中,兼容包在Applicaion实例化之后,会检查系统版本是否支持 multidex,classes2.dex是否需要安装。如果需要安装则会从APK中解压出classes2.dex并将其拷贝到应用的沙盒目录下。通过反射将classes2.dex注入到当前的classloader中。

 

2、APP的函数方法超过65K

随着Android设备的发展,App包含的功能将越来越完善,其大小势必会变得越来越大。当我们在开发App的时候由于报的大小和引用库的原因,编译项目时候通常会遇到下面这个错误:

 Conversion <span class="hljs-keyword">to</span> Dalvik format failed: Unable <span class="hljs-keyword">to</span> execute dex: <span class="hljs-function"><span class="hljs-keyword">method</span> <span class="hljs-title">ID</span> <span class="hljs-title">not</span> <span class="hljs-title">in</span> [0, 0<span class="hljs-title">xffff</span>]:</span> <span class="hljs-number">65536</span>

当然,也有一些系统设备会出现以下log信息,不过反馈的都是同一个问题:

 

trouble writing output: Too many field references: <span class="hljs-number">131000</span>; <span class="hljs-built_in">max</span> is <span class="hljs-number">65536.</span> You may <span class="hljs-keyword">try</span> <span class="hljs-keyword">using</span> <span class="hljs-comment">--multi-dex option.</span>

这两个错误条件显示一个共同的数字:65536。这个数字,它表示的是你在一个dex包中的函数方法超过了65535个。

 

如果你已经构建了一个Android App时,并收到了这个错误,那么表示你有很多代码!为什么会出现这个问题,而这个问题又怎么解决呢?且看下面分析。

 

3、关于65K方法限制

       Android开发人员应该都清楚,Android的所有可执行文件都存在dex文件中,其中包含已编译的代码来运行你的应用程序。Dalvik虚拟机对可执行dex文件的规格是有方法限制的,即一个单一的dex文件的方法总数最多为65536,包括:

引用的Android Framework方法、library的方法及编程中写入代码的方法等。

     怎么突破限制呢?很简单,就是多生成几个dex文件,而这个多个dex文件,就是multidex方案配置。

Multidex支持Android 5.0之前使用Dalvik Runtime执行程序代码的版本。默认情况下,限制应用到一个单一的classes.dex。

Dalvik字节码文件没APK,为了绕过这个限制,你可以使用multidex支持库,成为你的应用程序的主要部分和DEX文件进行管理,获得额外的dex文件,它们包含的代码。

 

4、避免65K限制

       当确定使用multidex的分包策略时,除了确保你的代码是优秀的代码以外,还需要做到以下两个步骤:

 

去掉一些未使用的import和library

使用ProGuard去掉一些未使用的代码

 

5、用Gradle配置使用Multidex

Android 的 Gradle插件在 Android Build Tool 21.1开始就支持使用multidex了。

 

 

在应用程序中设置multidex配置,需要对对程序做以下修改:

修改Gradle的配置,支持multidex

修改你的manifest。让其支持multidexapplication类

修改Gradle的build如下:

 

android {     compileSdkVersion <span class="hljs-number">21</span>     buildToolsVersion <span class="hljs-string">"21.1.0"</span>      defaultConfig {         <span class="hljs-keyword">...</span>         minSdkVersion <span class="hljs-number">14</span>         targetSdkVersion <span class="hljs-number">21</span>         <span class="hljs-keyword">...</span>          // Enabling multidex support.         multiDexEnabled true     }     <span class="hljs-keyword">...</span> }  dependencies {   compile <span class="hljs-string">'com.android.support:multidex:1.0.0'</span> }

Tips: 你可以在Gradle配置文件中的 multiDexEnabled 在 defaultConfig、buildType、productFlavor选项设置。

 

在manifest文件中,添加MultidexApplication Class的引用,如下所示:

 

<?xml version=<span class="hljs-string">"1.0"</span> encoding=<span class="hljs-string">"utf-8"</span>?> <manifest xmlns:android=<span class="hljs-string">"http://schemas.android.com/apk/res/android"</span>     package=<span class="hljs-string">"com.example.android.multidex.myapplication"</span>>     <application         <span class="hljs-keyword">...</span>         android:name=<span class="hljs-string">"android.support.multidex.MultiDexApplication"</span>>         <span class="hljs-keyword">...</span>     </application> </manifest>

当然,如果你重写了 Application,就对自定义Application的继承方式做一个修改。

 

6、Multidex的方式的局限性

在上面的介绍中,multidex看起来感觉很棒,虽然如此,但multidex还是存在一些局限性,具体如下:

(1)如果DEX文件太大,安装分割dex文件是一个复杂的过程,可能会导致应用程序无响应(ANR)的错误。在这种情况下,你应该尽量的减小dex文件的大小和删除无用的逻辑,而不是完全依赖于multidex。

(2)在Android 4.0设备(API Level 14)之前,由于Dalvik linearalloc bug(问题22586),multidex很可能是无法运行的。如果希望运行在Level 14之前的Android系统版本,请先确保完整的测试和使用。

(3)应用程序使用了multiedex配置的,会造成使用比较大的内存。当然,可能还会引起dalvik虚拟机的崩溃(issue 78035)。

(4)对于应用程序比较复杂的,存在较多的library的项目。multidex可能会造成不同依赖项目间的dex文件函数相互调用,找不到方法。

 

以上就是安卓系统分包MultiDex的原理及使用方法的简单介绍,大家如果在开发中,遇到65K方法限制,不妨可以使用这个方法来解决。

 

相关阅读:《Android Studio 安装报错:'reg'不是内部或外部命令

 

转载于:https://www.cnblogs.com/maizi008/p/4819620.html

http://www.lbrq.cn/news/1338283.html

相关文章:

  • 哪个网站做美食自媒体更好/微信营销成功案例8个
  • 微信网站改版价格/灰色关键词排名技术
  • 企业网站建设申请域名/汽车行业网站建设
  • 如何做网站的搜索栏/seo的英文全称是什么
  • 视频直播软件有哪些/seo教程视频论坛
  • 蔬菜派送网站怎么做/百度网盘下载的文件在哪
  • 天津网站建设制作排名/重庆seo排名公司
  • 天津建设教育培训网/免费seo搜索优化
  • 伍佰亿网站怎么做/推广网络营销案例
  • 网站的站长是什么意思/网盟推广平台
  • 做网站设计是什么专业/sem分析是什么意思
  • 网站做推广应该如何来做呢哪里推广/网站推广方案有哪些
  • 推荐几个做网站比较好的公司/seo网址超级外链工具
  • 哪些网站seo做的好/郑州企业网站seo
  • 中文网站建设中模板下载/湖南关键词优化首选
  • 如何自己学做网站/网站注册地址
  • 专业做网站的团队/aso优化平台有哪些
  • 做网站好还是阿里巴巴好/产品销售推广方案
  • 手机建站图片/优化百度涨
  • 语言互动网站建设/网站seo快速
  • 网络广告营销的一般过程/郑州搜索引擎优化公司
  • 优质的低价网站建设/搜索引擎优化课程
  • 网站301如何做/免费手机优化大师下载安装
  • 国外免费logo设计网站/邀请注册推广赚钱
  • 导航网站教程/百度推广怎么做效果好
  • 返利网站怎么做的/免费培训网站
  • 用.aspx做网站/烟台seo
  • 化妆品网站建设项目计划书/网络营销的市场背景
  • 网站建设商务代表工作总结/西安seo公司哪家好
  • 城乡建设部网站 挂证/什么是搜索引擎推广
  • Python day40
  • JAVA+AI简化开发操作
  • PySpark
  • 进度、质量、安全的关系随笔
  • 【C++详解】红黑树规则讲解与模拟实现(内附红黑树插入操作思维导图)
  • 计算XGBoost分类模型的错误率