升级Android studio 3.0 遇到的坑

作者: 代码君_Coder | 来源:发表于2019-06-11 16:37 被阅读13次

Android Studio 升级最新版本,之前一直用的是2.xx的版本,升级上来发现很多配置要修改,再次记录下来,供后人参考

一、下载最新sdk,包错

You have not accepted the license agreements of the following SDK components

简单理解就是下载最新sdk,需要有一个协议书,以前Android Studio,都会弹出一个可视化界面,然后我们选同意,现在反而没有了,那我们只能自己用终端,选择同意了

解决方案

  1. 打开终端,cd 到sdk路径,如果不知道sdk路径的可以到Android studio里面查找,如下图


    image.png

cd sdk路径/tools/bin

cd /Users/apple/Library/Android/sdk/tools/bin
image.png
  1. 输入下列命令,如果遇到询问y/n,直接选y就好
./sdkmanager --licenses
image.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

image.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

            }
        }
    }

公众号

相关文章

网友评论

    本文标题:升级Android studio 3.0 遇到的坑

    本文链接:https://www.haomeiwen.com/subject/xibqfctx.html