如何开发和构建Android multidex?

maiziedu · · 2729 次点击 · 开始浏览    置顶
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。
在Android开发中,函数方法超过65k限制后,我们就常常会用到multidex分包解决,但是multidex的配置,对系统apk的构建、签名、打包复杂性大大的增加,严重的降低了构建效率。那这个问题怎么处理呢? 为解决这个问题,通常我们使用的方法就是在Gradle productFlavors新建出来一个 development flavor 和 production flavor 来满足我们不同构建需求。 为了更直观的给大家展示具体的操作,我们通过一个例子来演示如何设置这些flavors在Gradle build文件中: android { productFlavors { // Define separate dev and prod product flavors. dev { // dev utilizes minSDKVersion = <span class="hljs-number">21</span> to allow the Android gradle plugin // to pre-dex each module and produce an APK that can be tested on // Android Lollipop without time consuming dex merging processes. minSdkVersion <span class="hljs-number">21</span> } prod { // The actual minSdkVersion <span class="hljs-keyword">for</span> the application. minSdkVersion <span class="hljs-number">14</span> } } <span class="hljs-keyword">...</span> buildTypes { release { runProguard true proguardFiles getDefaultProguardFile(<span class="hljs-string">'proguard-android.txt'</span>), <span class="hljs-string">'proguard-rules.pro'</span> } } } dependencies { compile <span class="hljs-string">'com.android.support:multidex:1.0.0'</span> } 在你完成了伤处的配置修改之后,你配置productFlavor 和 buildType来使用 ,devDebug 变种app。使用这些变种app,可以设置proguard disable、multidex enable方便测试。 这些配置需要针对Android Gradle插件做如下操作: 1、在分包前,编译应用程序中的每一个module包括依赖项目,这个步骤称为 pre-dexing。 2、include每一个dex文件。 3、最重要的是,对于主dex文件,不会做切分,以保证计算速度。 这样设置既能够保证我们的最终报是一个使用了multidex模式的,而又不影响我们平时开发的测试效率。 Android Studio中使用变种App 使用multidex工具构建变种App是非常方便的。在Android Studio允许我们选择这种变种构建方式的接口。 使用Android Studio构建 “devDebug”构建变种app需要完成两步: 1、打开变种编辑窗口,选择favorites选项。 2、点击编译不同的变种,如下图所示 ![20150909_55ef9b6b12b76.png](http://studygolang.qiniudn.com/150918/40ad17c8e099282d89f305307f2a535c.png) 以上就是Android兼容包multidex的开发和构建的具体方法,希望对大家在使用multidex的时候有所帮助。 相关阅读:《Android进程线程之cgroups的使用详解》 http://www.maiziedu.com/group/article/5718/

有疑问加站长微信联系

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:812540095

2729 次点击  ∙  1 赞  
加入收藏 微博
1 回复  |  直到 2015-09-18 09:32:31
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传