Android studio2.3.3升级到3.1.2坑(小记)
1.grade配置error: could not find com.android.tools.build:gradle:2.2.1.
解决方法与maven仓库有点像:进入
d:\software\android\android-studio-ide-145.3276617-windows\android-studio\gradle\m2repository\com\android\tools\build\gradle
将项目中的build.gradle文件中
dependencies { classpath 'com.android.tools.build:gradle:2.2.1'}
改为
dependencies { classpath 'com.android.tools.build:gradle:3.1.2'}
2.all flavors must now belong to a named flavor dimension.
在module下的build.gradle中添加一行代码即可解决:
android{ ... flavordimensions "versioncode" ...}
3.升级到android studio 3.1,重新构建项目时报错,主要错误为:
the sourceset 'instrumenttest' is not recognized by the android gradle plugin. perhaps you misspelled something?
instrumenttest已被废弃,新的gradle插件已经不支持。instrumenttest需要修改为androidtest。
修改后,sourcesets相关内容类似:
android { buildtoolsversion "27.0.3" compilesdkversion 24 sourcesets { main { manifest.srcfile 'androidmanifest.xml' java.srcdirs = ['src'] aidl.srcdirs = ['src'] renderscript.srcdirs = ['src'] res.srcdirs = ['res'] assets.srcdirs = ['assets'] jnilibs.srcdirs = ['libs'] } androidtest.setroot('tests') }}
4. aapt2 编译报错 aapt2 error
报错
error:java.util.concurrent.executionexception: com.android.tools.aapt2.aapt2exception: aapt2 error: check logs for details
解决:在gradle.properties中关闭appt2 编译
android.enableaapt2=false
注:如果是eclipse转到as上的项目,可能没有gradle.properties文件,请在项目根目录中手动创建
5.升级完android stadio 3.1以后
将所有的compile变为implementation 后,clean和rebuild都没有发现错误,唯独在run的时候出现了以下错误:
原因及解决办法
原因:按照android stadio 3.1的要求,需要把gradle版本升级为 4.4及以上,但是gradle 4.4及以上要求将依赖api的compile换成implementation。而implementation声明的依赖没办法传递到module以外,即该module 以外module没办法引用到implementation声明的api。
即:module a implementation liba,而 moduleb implementation module a,那么module b 引导 liba 中的api,不然在build的时候会报org.gradle.api.internal.tasks.compile.compilationfailedexception。
解决办法:将compile 替换为 api即可,也就是如果有外部引用,则换成:api,剩下的换成:implementation。
示例:
dependencies { api filetree(dir: 'libs', include: ['*.jar']) testimplementation 'junit:junit:4.12' api 'com.android.support:support-v4:26.1.0' api 'com.android.support:appcompat-v7:26.1.0' api 'com.google.code.gson:gson:2.8.2' api 'com.j256.ormlite:ormlite-core:4.48' api 'com.j256.ormlite:ormlite-android:4.48'
ps:解决办法:
android 6.0(api 23)已经不支持httpclient了,在build.gradle中 加入 uselibrary 'org.apache.http.legacy'就可以了,如图:
error:(633, 16) 错误: 找不到符号 符号: 方法 sqrt(float) 位置: 类 floatmath
解决方案
原因是android6.0不支持floatmath.sin()了,主要有两个方法可以解决。
方法一:
用23一下的sdk版本进行编译。将gradle.build文件里(包括project的gradle.build和module的gradle.build)的compilesdkversion设为23以下。
方法二:
将上面报错的地方,即 用math类替换floatmath类,math.sin();
方法三 :
(float)math.sqrt 替换 floatmath.sqrt
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
上一篇: android获取手机唯一标识的方法
下一篇: Android实现关机重启的方法分享