更新Android Studio 3.0碰到的问题小结
更新完后试下运行正在维护的旧项目,出现各种错误,因为后来发现问题不在这,所以没记完整,大概如下:
AlargerheapfortheGradledaemonisrecommendedforrunningjack.
Itcurrentlyhas512MB.
Forfasterbuilds,increasethemaximumheapsizefortheGradledaemontoatleast1536MB.
Todothissetorg.gradle.jvmargs=-Xmx1536Mintheprojectgradle.properties.
然后查看gradle.properties我的org.gradle.jvmargs已经是2048了,另外还有个Error:UNEXPECTEDTOP-LEVELERROR:错误
搜索了一下并没找到要点,于是Build一下项目,提示
Error:FailedtocompleteGradleexecution.
Cause:
TheversionofGradleyouareusing(3.3)doesnotsupporttheforTasks()methodonBuildActionExecuter.SupportforthisisavailableinGradle3.5andalllaterversions.
于是更新使用Gradle最新版,新建一个项目看看默认用的什么版本,修改以下文件
gradle-wrapper.properties里
distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip
APP的build.gradle里
dependencies{ classpath'com.android.tools.build:gradle:3.0.0' }
编译后又有错
Cannotsetthevalueofread-onlyproperty'outputFile'....
因为使用了编译输出文件名的代码
applicationVariants.all{variant-> variant.outputs.each{output-> defoutputFile=output.outputFile deffileName if(outputFile!=null&&outputFile.name.endsWith('.apk')){ if(variant.buildType.name.equals('release')){ //输出apk名称为Test_v_1.0_15-09-1511:12:32_official_release.apk fileName="Test_v_${defaultConfig.versionName}_${releaseTime()}_${variant.productFlavors[0].name}_release.apk" }elseif(variant.buildType.name.equals('debug')){ //输出apk名称为Test_v_1.0_15-09-1511:12:32_official_debug.apk fileName="Test_v_${defaultConfig.versionName}_${releaseTime()}_${variant.productFlavors[0].name}_debug.apk" } output.outputFile=newFile(outputFile.parent,fileName) } } }
出错在最后一行,应该是新版Gradle的问题,最后在StackoverFlow找到解决办法,参考
https://stackoverflow.com/questions/44239235/android-gradle-3-0-0-alpha2-plugin-cannot-set-the-value-of-read-only-property
把variant.outputs.each改成
variant.outputs.all
最后一行改成
outputFileName=fileName
继续编译继续出错
Error:Allflavorsmustnowbelongtoanamedflavordimension.Learnmoreathttps://d.android.com/r/tools/flavorDimensions-missing-error-message.html
百度找到以下文章,修改后就可以正常编译运行了
https://www.nhooo.com/article/127673.htm
看了几个文章也搞不清楚这个是什么来的,照着改项目的build.gradle
defaultConfig{ targetSdkVersion:*** minSdkVersion:*** versionCode:*** versionName:*** //版本名后面添加一句话,意思就是flavordimension它的维度就是该版本号,这样维度就是都是统一的了 flavorDimensions"versionCode" }
项目的其它代码不用改,文章开头的错误全没了,还好没浪费太多时间
PS:下面看下更新AndroidStudio到3.0后遇到的一个编译问题
今天晚上更新了AndroidStudio,可是再用这个就发现一个编译问题:
Error:java.util.concurrent.ExecutionException:com.android.tools.aapt2.Aapt2Exception:AAPT2error:checklogsfordetails
Error:Executionfailedfortask':app:mergeDebugResources'.
>Error:java.util.concurrent.ExecutionException:com.android.tools.aapt2.Aapt2Exception:AAPT2error:checklogsfordetails
通过google,发现了解决办法:
在项目的gradle.properties中添加
android.enableAapt2=false
目前还没搞懂为什么,先留在这里吧
总结
以上所述是小编给大家介绍的更新AndroidStudio3.0碰到的问题小结,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!