Multidex坑

很多人在使用multidex的时候,指定主dex的类时,用的是网上的代码,

afterEvaluate {
        tasks.matching {
            it.name.startsWith('dex')
        }.each { dx ->
            if (dx.additionalParameters == null) {
                dx.additionalParameters = ['--multi-dex']
            } else {
                dx.additionalParameters += '--multi-dex'
            }
            dx.additionalParameters += '--main-dex-list=list.txt'
        }
    }

对此我只能呵呵了,实际上从gradle plugin1.5开始,谷歌已经把multidex移入了transform api里。所以这个代码永远执行不到的。具体可以看下面的文章。(说实在的谷歌文档是蛮难找的,我找了好久)
http://tools.android.com/tech-docs/new-build-system/transform-api

目前如果仍然想这么实现的话,可以用

afterEvaluate {
        tasks.matching {
            it.transform.name.startsWith('dex')
        }.each {
      xxx
    }

但是并没有文档推荐这么做,我只是看github上有人这样写。
其实gradle已经提供参数了,现在想添加maindex文件,只需要使用以下两个属性

 multiDexKeepProguard file('multiDexKeep.pro') // keep specific classes using proguard syntax
 multiDexKeepFile file('multiDexKeep.txt')

请大家不要再抄网上的啦,哈哈

推荐阅读更多精彩内容