Android Studio 升级最新版本,之前一直用的是2.xx的版本,升级上来发现很多配置要修改,再次记录下来,供后人参考
一、下载最新sdk,包错
You have not accepted the license agreements of the following SDK components
简单理解就是下载最新sdk,需要有一个协议书,以前Android Studio,都会弹出一个可视化界面,然后我们选同意,现在反而没有了,那我们只能自己用终端,选择同意了
解决方案
-
打开终端,cd 到sdk路径,如果不知道sdk路径的可以到Android studio里面查找,如下图
image.png
cd sdk路径/tools/bin
cd /Users/apple/Library/Android/sdk/tools/bin
![](https://img.haomeiwen.com/i1750086/9779e52eef0e143b.png)
- 输入下列命令,如果遇到询问y/n,直接选y就好
./sdkmanager --licenses
![](https://img.haomeiwen.com/i1750086/17886d7316dcace0.png)
3.之后再去下载就不会报上面的错误了
二、多个library引用相同库,版本号不一样产生的问题
可能你觉得,不一致,我们改成一样的不就好啦,但是没那么简单,比如下面的错误,com.android.support:support-v4版本不一致,我全局搜就一处用到,其实还有我们引用的第三方库,里面可能也包含这个基础包,但是我们又改不了第三方里面的引用,所以上面说的改成一样的不现实
Android dependency 'com.android.support:support-v4' has different version for the compile (23.0.1) and runtime (27.0.2) classpath. You should manually set the same version via DependencyResolution
解决方案
一句话就是:如果引用的基础库,版本冲突的话将implementation改成api,就可以解决基础库版本不一致的问题,说明一下,api等价于compile
![](https://img.haomeiwen.com/i1750086/d92e2a902292a9ed.png)
三、Android Studio 3.0 升级后Butter Knife 报错,无法使用
解决方案
将Butter Knife的版本升级到8.8.1 即可
Compilation failed; see the compiler error output for details.
dependencies {
implementation 'com.jakewharton:butterknife:8.8.1'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'
}
四、build gradle 版本太低
版本太低会报以下错误
Cause: aidl is missing
之前版本
classpath 'com.android.tools.build:gradle:2.3.0'
修改后
classpath 'com.android.tools.build:gradle:3.2.1'
五、打包apkname出错
ERROR: Cannot set the value of read-only property 'outputFile' for ApkVariantOutputImpl_Decorated{apkData=Main{type=MAIN, fullName=debug, filters=[], versionCode=60, versionName=3.4.0}} of type com.android.build.gradle.internal.api.ApkVariantOutputImpl.
applicationVariants.all { variant ->
variant.outputs.each { output ->
def outputFile = output.outputFile
if (outputFile != null && outputFile.name.endsWith('.apk')) {
// 输出apk名称为appname-1.0-beta1-xxxx-xx-xx.apk
def fileName = "zhouse-v${defaultConfig.versionName}-${releaseTime()}-${buildType.name}.apk"
output.outputFile = new File(outputFile.parent, fileName)
}
}
}
改后
applicationVariants.all { variant ->
variant.outputs.all { output ->
def outputFile = output.outputFile
if (outputFile != null && outputFile.name.endsWith('.apk')) {
// 输出apk名称为appname-1.0-beta1-xxxx-xx-xx.apk
def fileName = "zhouse-v${defaultConfig.versionName}-${releaseTime()}-${buildType.name}.apk"
// outputFileName = new File(outputFile.parent, fileName)// output.outputFile 改为 outputFileName
outputFileName = fileName // output.outputFile 改为 outputFileName
}
}
}
公众号
![](https://img.haomeiwen.com/i1750086/58e561db5db3a196.png)
网友评论