Android Studio3下多渠道打包遇到的坑

Android Studio3发布了也有一阵子了。然而,除了偶尔看几眼外,工作中一直还是用2在做日常的开发。
又然而,某天手贱没仔细看就点了更新,直接就把手头的2升级到3了。呃,好吧,升级就升级吧。
又然而,原来的项目竟然在Studiou3里直接就不能build了。来来来,看看啥情况。

1.首先是gradle plugin 要3以上,sdk build tools 要26以上了。好吧好吧,你说啥就是啥吧。

2. 然后是Error:All flavors must now belong to a named flavor dimension. 错误。

这个主要是说你需要为每个版本构建一个或多个flavorDimensions。利用这个就可以打包不同需求的版本。(不打包多个版本的话不会报这个错)
在主app的build.gradle里面的defaultConfig里加入flavorDimensions属性,比如这里构建demo和Release这两个维度。
像这样

defaultConfig {
  targetSdkVersion:***
  minSdkVersion :***
  versionCode:***
  versionName :***
  flavorDimensions "demo","release"
}

3.然后,因为需要多渠道打包,那么需要在渠道配置里指定dimension参数。

需要注意的是之前设置的每个Dimension都要用到哦,比如这样:

productFlavors {
        _demo {
            dimension "demo"
        }
        _wandoujia {
            dimension "release"
            manifestPlaceholders = [UMENG_CHANNEL_VALUE: "_wandoujia"]
        }
}

4.build一下,又爆Unable to resolve dependency for ':app@dexOptions/compileClasspath': Could not resolve project...的错。

根据https://stackoverflow.com/questions/46949622/android-studio-3-0-unable-to-resolve-dependency-for-appdexoptions-compilecla这个帖子。
所有依赖进来的库的build.gradle中必须有和主app的build.gradle里一样的buildTypes设置。所以就是把

    buildTypes{
        release {
            ...
        }
        debug {
            ...
        }
    }

里的内容在依赖库的build.gradle里也设置一下就是了。

5.再build一下,咦,又说不能读取友盟推送sdk的jar文件了。

看了下具体文件,原来是之前旧版本的jar文件没法读取。Studio2的时候为毛没有和我说起这个事呢?
删除之。

6.再build一下,一切正常了,从此就在Studio3下搬砖了。

关于的flavorDimensions具体使用,可以参考:配置构建变体

    原文作者:书柜里的松鼠
    原文地址: https://www.jianshu.com/p/0c46da60dcc4
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞