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

朋友圈自己做的网站企业培训方案

朋友圈自己做的网站,企业培训方案,网站图片管理系统,做网站最专业的公司原文转自#xff1a;http://coolpers.github.io/multidex/2015/04/13/multidex.html 1.MultiDex的产生背景 当Android系统安装一个应用的时候#xff0c;有一步是对Dex进行优化#xff0c;这个过程有一个专门的工具来处理#xff0c;叫DexOpt。DexOpt的执行过程是在第一次加… 原文转自http://coolpers.github.io/multidex/2015/04/13/multidex.html 1.MultiDex的产生背景 当Android系统安装一个应用的时候有一步是对Dex进行优化这个过程有一个专门的工具来处理叫DexOpt。DexOpt的执行过程是在第一次加载Dex文件的时候执行的。这个过程会生成一个ODEX文件即Optimised Dex。执行ODex的效率会比直接执行Dex文件的效率要高很多。但是在早期的Android系统中DexOpt有一个问题DexOpt会把每一个类的方法id检索起来存在一个链表结构里面。但是这个链表的长度是用一个short类型来保存的导致了方法id的数目不能够超过65536个。当一个项目足够大的时候显然这个方法数的上限是不够的。尽管在新版本的Android系统中DexOpt修复了这个问题但是我们仍然需要对低版本的Android系统做兼容。 为了解决方法数超限的问题需要将该dex文件拆成两个或多个为此谷歌官方推出了multidex兼容包配合AndroidStudio实现了一个APK包含多个dex的功能详见。 2.MultiDex的简要原理 我们以APK中有两个dex文件为例第二个dex文件为classes2.dex。 1、 兼容包在Applicaion实例化之后会检查系统版本是否支持 multidexclasses2.dex是否需要安装。 2、 如果需要安装则会从APK中解压出classes2.dex并将其拷贝到应用的沙盒目录下。 3、 通过反射将classes2.dex注入到当前的classloader中。 3.MultiDex的使用 一、应用程序的修改 引入multidex兼容包如果自定义了Application类则使其继承自MultiDexApplication。否则在manifest文件的application标签中增加android:name”android.support.multidex.MultiDexApplication” 二、构建脚本修改 AndroidStudio使用的构建工具是gradle而我们使用的是ant所以需要在目前的ant脚本中增加对multidex的支持,步骤如下 1、 更新AndroidSDK确保build-tools有21.1.2版本proguard在4.10以上并将其添加到系统的环境变量。 2、 运行dx –help如下结果 –multi-dex选项开始认为只要将它打开就可以了但打完包启动后会崩溃查看log发现有的类在Application类初始化的时候没有被加载这些类被打包在了第二个dex文件中。 继续看上面的选项列表–multi-dex选项后面有两个可选的选项。 –main-dex-listfile参数是一个类列表的文件在该文件中的类会被打包在第一个dex中。 –minimal-main-dex只有在–main-dex-list文件中指定的类被打包在第一个dex其余的都在第二个dex文件中。 我们只需要使用–main-dex-list将Application初始化所需要的类放在一个文件中即可。 3、 生成main-dex-list列表/brAndroid SDK的build-tools中有一个mainDexClasses脚本。 该脚本要求输入一个文件组包含编译后的目录或jar包然后分析文件组中的类并写入到–output所指定的文件中如classes_to_kepp_in_main_dex文件。 4、 –set-max-idx-number这个选项没有被列出其能够限定每个dex文件中最大的方法数这里设置每个dex的最大方法数为52900。 5、 将第二个dex打包到APK中使用aapt命令aapt add 。 综上所属修改后的脚本如下 condition propertymulti-dex-ospathvalue${basedir}\${outdir}else${basedir}/${outdir} os familywindows/ /condition condition propertymainDexClasses value${android-build-tools}/mainDexClasses.bat else${android-build-tools}/mainDexClasses os familywindows/ /condition path idcommonjarsfileset dir${external-libs}include nameandroid-support-*.jar/includeinclude nameimageloader_*.jar/includeinclude nameclientupdate_*.jar/includeinclude nameMaRuntime_*.jar/includeinclude namepushservice-*.jar/include/fileset /path target namemultidex dependscompileechodex:Converting compiled files and external libraries into ${outdir}.../echopath idinputdirpathelement location${outdir-classes}/path refidcommonjars//pathproperty namefiles refidinputdir/condition propertyrealfiles value${files} else${files} os familywindows//conditionexec executable${mainDexClasses} failonerrortrue arg line--output ${multi-dex-ospath}/classes_to_kepp_in_main_dex/arg value${realfiles}//execapply executable${dx} failonerrortrue paralleltruearg value--dex /arg value--multi-dex /arg value--main-dex-list${multi-dex-ospath}/classes_to_kepp_in_main_dex/arg value--set-max-idx-number52900 /arg value--output${multi-dex-ospath} /arg path${outdir-classes} /fileset dir${external-libs} includes*.jar/fileset dir${appsearch-ui-path}/libs includes*.jarexclude nameandroid-support-v4.jar//fileset/apply /target property namesecond_dex valueclasses2.dex / property namesecond_dex_path value${multi-dex-ospath}/${second_dex} / target nameseconddex-checkcondition propertyhas-secondavailable file${second_dex_path} //condition /target打包后运行程序正常启动。 4. 遇到的问题 1、 mainDexClasses脚本在windows和linux下文件组的参数形式不同。 在windows下脚本中的shift会将文件分隔符“”替换成空格导致参数获取错误在文件组外部增加双引号解决了该问题。 2、 生成文件组的jar包通配符问题使用path和fileset解决了该问题。 3、 multidex兼容包创建目录失败的问题参见https://code.google.com/p/android/issues/detail?id79388qmultidex%20Failed%20to%20create%20dircolspecID%20Type%20Status%20Owner%20Summary%20Stars
http://www.yutouwan.com/news/112131/

相关文章:

  • 医疗网站怎么做优化深圳建设工程信息网站
  • 如何做京东商城一样的网站优化seo系统
  • 河北省网站备案步骤龙元建设集团股份有限公司网站地址
  • 网站开发工具的功能高邮网站建设
  • 新手做网站买服务器6做网站
  • 犀牛云网站建设公司牌子制作
  • 域名后缀html是怎样的网站织梦和wordpress
  • 南京网站设计个人wordpress 颜色插件
  • 站长推荐产品西安网站建设方案维护
  • 如何自己做网站知识o2o网站设计
  • 企业seo网站优化设计百度网盘网页版登录入口
  • 公司网站费用构成需要多少钱pageadmin做网站
  • 听歌网站源码扶风网站开发
  • 企业网站建设平台建设招标网官网
  • 怎样建设智能网站广州php网站建设
  • 手机网站下拉刷新yum wordpress php扩展
  • l凉州区城乡建设部网站首页南宁网站推广哪家好
  • 怎么才能成功做网站商丘网站制作的流程
  • 定制软件公司医院网站优化策划
  • 做网站安阳中建西部建设北方有限公司网站
  • 网站建设塞西wordpress 前台投稿插件
  • 上海网站建设选缘魁-企查wordpress分类更改
  • php直播网站开发网站开发菜鸟适合用什么软件
  • 品牌网站建设有哪些内容seo技术秋蝉
  • 网站核验单下载wordpress用什么主机好
  • 网站首页建设中页面大连甘井子区教育公共服务平台
  • 青岛做网站皆赴青岛博采深圳自适应网站的公司
  • 新手网站设计定价吉林电商网站建设公司哪家好
  • 如何做正规电影网站湖北省建设部网站
  • 建设通网站怎么查项目经理在建做高端网站建设公司