gradle2.3.3升级到gradle3.5.0问题汇总

问题1:Could not find method leftShift() for arguments

preBuild << { task.execute() }

解决方案:去掉build.gradle文本中的<<
问题2:Gradle DSL method not found: 'execute()' 解决方案:目前用task.doFirst方法代替
问题3:Cannot set the value of read-only property 'outputFile'
android.applicationVariants.all { variant -> variant.outputs.each { output -> def outputFile = output.outputFile if (outputFile != null && outputFile.name.endsWith('.apk')) { //这里修改apk文件名 def fileName="jianShu-${variant.buildType.name}-${defaultConfig.versionName}.apk" output.outputFile = new File(outputFile.parent, fileName) } } }

解决方案:
android.applicationVariants.all { variant -> variant.outputs.all { output -> def outputFile = output.outputFile if (outputFile != null && outputFile.name.endsWith(‘.apk’)) { //这里修改apk文件名 def fileName = “jianShu-${variant.buildType.name}-${defaultConfig.versionName}.apk” output.outputFileName = fileName } } }

问题4:Unable to resolve dependency for ':CoreBusiness@beta/compileClasspath': Could not resolve project :OpenSourceLibrary. 解决方案:所有module下的buildTypes要保持一致
buildTypes { debug { ... } beta { ... //关键代码,lib的module下要添加这行代码 matchingFallbacks = ['release', 'debug'] } release { ... } sourceSets{ } lintOptions { } }

注意:lib的module下buildTypes中的项目可以不填内容,例如:lintOptions{}
问题5:jni生成so的方式改变了。 【gradle2.3.3升级到gradle3.5.0问题汇总】解决方案:使用CMake方式来生成so。
问题6:签名打包需要使用v2Signing。 解决方案:使用美团新版打包工具,项目地址:https://github.com/Meituan-Dianping/walle

    推荐阅读