1、指定生成的apk文件名
2.3 的版本
applicationVariants.all { variant ->
variant.outputs.each { output ->
def outputFile = output.outputFile
def flavorName = variant.productFlavors[0].name
if (outputFile != null && outputFile.name.endsWith('.apk')) {
def apkName
apkName = "${defaultConfig.versionName}-${defaultConfig.versionCode}-${flavorName}.apk";
output.outputFile = new File(outputFile.parent, apkName)
}
}
}
3.0 的版本:
android.applicationVariants.all { variant ->
variant.outputs.all {
def flavorName = variant.name
def apkName
apkName = "${variant.versionName}-${variant.versionCode}-${flavorName}.apk";
outputFileName = apkName
}
}
2、对java8的支持,那么retrolambda的插件就可以移除了
//apply plugin: 'me.tatarka.retrolambda'
3、关于protuctFlavor的改动
直接升级上来,build.gradle不改的情况,如果有设置多个productFlavor,那么不出意外会出现下面的错误:
Error:All flavors must now belong to a named flavor dimension. Learn more at https://d.android.com/r/tools/flavorDimensions-missing-error-message.html
解决办法:在build.gradle 里加一行:
flavorDimensions "default"
改完如下:
android{
...
flavorDimensions "default"
...
}
4、multidex的支持
遇到的错误:
Unable to resolve dependency for ':app@devDebug/compileClasspath': Could not resolve com.android.support:multidex:1.0.2. Open File Show Details
在工程根目录下的build.gradle文件中allprojects的repositories里加入:
maven { url 'https://maven.google.com' }
5、vector drawable的支持相关:
Error:java.lang.RuntimeException: Error while processing C:\android_code.git\app\src\main\res\drawable\ic_done_reset_password_again.xml : Can't process attribute android:fillColor="@color/reset_pwd": references to other resources are not supported by build-time PNG generation. See http://developer.android.com/tools/help/vector-asset-studio.html for details.
直接改成具体的颜色值即可
6、Error:java.lang.RuntimeException: Manifest merger failed : Attribute application@icon value=(@drawable/app_logo) from AndroidManifest.xml:109:9-42
解决办法:
在AndroidManifest文件中的application节点tools:replace=”icon”
原文链接在这里
7、Caused by: java.lang.NoSuchMethodError: No virtual method keySet()Ljava/util/concurrent/ConcurrentHashMap$KeySetView; in class Ljava/util/concurrent/ConcurrentHashMap; or its super classes (declaration of ‘java.util.concurrent.ConcurrentHashMap’ appears in /system/framework/core-libart.jar)
好吧,这么坑爹的问题,暂时的解决办法是将申明的ConcurrentHashMap类型改为Map,实例化的时候用ConcurrentHashMap是没关系的。经等google爸爸修改这个bug吧。