• 【Android Studio安装部署系列】三十、从Android studio2.2.2升级到Android studio3.0之路


    版权声明:本文为HaiyuKing原创文章,转载请注明出处!

    前言

    Android Studio 3.0的新功能

    https://mp.weixin.qq.com/s/2XmVG4mKEDX6-bvZ0vvmcw

    升级前的本地环境

    Android studio2.2.2

    如何查看

    Help——About

    Gradle 2.14.1(后来导入新项目的时候也下载了3.3版本)

    如何查看

    File——Project Structure——Project

    自己的开发环境新建的项目:

    别人的项目:

     

    体现在项目中

     

    sdk tools 26.0.1

    如何查看

    File——Settings——Appearance&Behavior——System Settings——Android SDK——SDK Tools

     

    体现在项目中

    暂时不知

    sdk build tools 25.0.3

    如何查看

    File——Settings——Appearance&Behavior——System Settings——Android SDK——SDK Tools

     

    体现在项目中

     

    platform-tools 25.0.5

    如何查看

    File——Settings——Appearance&Behavior——System Settings——Android SDK——SDK Tools

     

    体现在项目中

    暂时不知

    前期准备

    下载IDE和SDK

    http://www.wanandroid.com/tools/ide

    因为本地电脑中存在旧版本Android Studio,也就已经存在SDK,则不需要下载sdk-tools。

    下载gradle的最新版本

    官网地址:https://gradle.org/

    下载地址:https://gradle.org/releases/

    如果不需要手动更新gradle版本,则不需要下载。可以通过Android Studio下载安装最新版本(需要FQ)

    备份旧版本的gradle【对于旧版本还是使用2.14.1的情况,这个步骤有点儿用处】

    Android Studio安装目录/gradle

     

    将gradle-2.14.1和gradle-3.3压缩然后进行备份。将来安装完AS3.0之后再复制回来。

    因为旧项目的gradle home指向的还是旧的数据:

    如何查看

    File—Settings—Bundle,Execution,Deployment

    旧版本的AS最后一次关闭时停留的项目是一个简单的项目

    可以是旧版本的AS新建的一个空项目,这样的目的是减少升级后碰到的坑。等升级成功后再分别打开旧项目进行填坑。

    升级步骤

    AS升级到3.0

    双击下载的AS的IDE安装包进行安装。

     

    此处会完全删除Android studio的安装目录。

    此处需要修改Android Studio安装路径。选中Android/Android Studio文本并复制,点击“Browse”选择安装目录,然后粘贴到选中的目录后面。效果如下:

    打开后会弹出下面的提示

     

    保留之前的旧版本AS的配置。

    如果之前设置过AS密码,则需要输入正确的密码【这个密码主要用于打包时的二次确认】:

     

    等待编译完成。就会提示一些必要的操作。

    提示修改项目中的gradle plugin和gradle的版本号

     

    点击Update,等待一段时间后,提示如下的信息【升级SDK Bundle Tools(如果已经升级到26以上的话,不会出现这个提示)

     

    点击finish后,编译一段时间后,提示修改buildToolsVersion版本号

     

    按照提示,点击update Bundle Tools Version and Sync project

     

    至此,AS升级到3.0 了。

    升级AS3.0后新建一个项目

    按照提示新建项目,创建项目后出现下面的提示【安装Android-26版本的platform

     

    点击“Install missing platform(s) and sync project”

     

    至此,Android studio3.0环境就可以正常新建项目了。

    关闭整个Android Studio并复制回去gradle旧版本【如果想要旧项目正常运行,在不更新项目的Gradle版本的情况下】

    将之前备份的gradle2.14.1和gradle3.3解压并复制到Android Studio/gradle目录中

     

    注意,这样操作后对于修改了gradle plugin和gradle版本号的旧项目存在下面的问题

     

    解决方案:

    其实,保证项目gradle正常运行的是下面路径下是否存在项目中的gradle版本【这个路径下的每一个版本的文件夹,都代表下载安装的gradle版本】:

    我想,可能Android Studio安装目录/gradle目录中存在gradle版本文件夹,可以实现快速安装,不用下载安装。

    C:UsersAdministrator.gradlewrapperdists

    升级AS3.0之后打开旧项目的常规操作

    不升级Gradle plugin和gradle版本号(不建议)

    当AS升级到3.0之后,Gradle Plugin和Gradle不升级也是可以继续使用的,但很多新的特性如:Java8支持、新的依赖匹配机制、AAPT2等新功能都无法正常使用~ 所以长期看来,最后还是得升级的。

    如果不想升级的话,打开旧项目时选择不更新即可。

     

    Gradle Plugin版本升级到3.0.0及以上(略过)

    方式一:安装AS3.0的IDE的时候自动安装了。

    修改项目的Grade bundle版本号

    一、对于升级时打开的项目,会自动更改。

    二、对于升级到AS3.0后新打开的项目则需要手动修改。

    更改项目下的build.grade文件中的Grade bundle版本与当前AS版本保持一致,并且在repositories里面添加google()

    参考AS3.0新建的项目的bundle.gradle文件

    复制代码
    // Top-level build file where you can add configuration options common to all sub-projects/modules.
    
    buildscript {
        
        repositories {
            google()
            jcenter()
        }
        dependencies {
            classpath 'com.android.tools.build:gradle:3.0.0'
            
    
            // NOTE: Do not place your application dependencies here; they belong
            // in the individual module build.gradle files
        }
    }
    
    allprojects {
        repositories {
            google()
            jcenter()
        }
    }
    
    task clean(type: Delete) {
        delete rootProject.buildDir
    }
    复制代码

    Gradle版本升级4.1及以上(略过)

    方式一:安装AS3.0的时候自动下载安装。

    方式二:可以离线下载,把下载好的zip包解压后放在Android studio安装目录的gradle文件夹下。【特殊情况下使用,比如手动升级Gradle版本】

    修改项目的gradle版本号

    一、对于升级时打开的项目,会弹出一个提示框,自动修改。

    二、对于升级到AS3.0后新打开的项目则需要手动修改。

    修改gradle/ wrapper/gradle-wrapper.properties文件的gradle版本号

     

    distributionUrl=https://services.gradle.org/distributions/gradle-2.14.1-all.zip

    改为:

    distributionUrl=https://services.gradle.org/distributions/gradle-4.1-all.zip

    SDK bundle tools需要升级到26或更高的版本(略过)

    compilesdkversion最好升级到26或更高的版本,以免grade编译出错。

    方式一:安装AS3.0的时候按照提示下载安装。

    方式二:手动下载安装

    File——Settings——Appearance&Behavior——System Settings——Android SDK——SDK Tools

    选择其中一个下载安装。比如26.0.2

    修改项目的buildToolsVersion版本号,可以顺便更换引用依赖的方式

    更改项目app或者其他module下build.grade文件中的sdkbundle版本号

    android {
        compileSdkVersion 26
        buildToolsVersion '26.0.2'
       ...
    }

    参考AS3.0新建的项目的app目录中的bundle.gradle文件

    复制代码
    apply plugin: 'com.android.application'
    
    android {
        compileSdkVersion 26
        defaultConfig {
            applicationId "com.why.project.astestdemo"
            minSdkVersion 15
            targetSdkVersion 26
            versionCode 1
            versionName "1.0"
            testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        }
        buildTypes {
            release {
                minifyEnabled false
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            }
        }
    }
    
    dependencies {
        implementation fileTree(dir: 'libs', include: ['*.jar'])
        implementation 'com.android.support:appcompat-v7:26.1.0'
        implementation 'com.android.support.constraint:constraint-layout:1.0.2'
        testImplementation 'junit:junit:4.12'
        androidTestImplementation 'com.android.support.test:runner:1.0.1'
        androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
    }
    复制代码

    更改gradle home(非必须但建议)

    注意:对于AS安装目录的gradle文件夹中没有gradle-2.14.1的情况不会出现该提示。

     

    碰到的问题

    Error:(2) Error: "app_name" is not translated in "ar" (Arabic), "en" (English), "es" (Spanish), "fr" (French), "ru" (Russian) [MissingTranslation]

    复制代码
    Error:(2) Error: "app_name" is not translated in "ar" (Arabic), "en" (English), "es" (Spanish), "fr" (French), "ru" (Russian) [MissingTranslation]
    Error:Execution failed for task ':app:lintVitalRelease'.
    > Lint found fatal errors while assembling a release target.
      To proceed, either fix the issues identified by lint, or modify your build script as follows:
      ...
      android {
          lintOptions {
              checkReleaseBuilds false
              // Or, if you prefer, you can continue to check for errors in release builds,
              // but continue the build even when errors are found:
              abortOnError false
          }
      }
      ...
    复制代码

    解决方案:

    在项目的APP中的bundle.gradle文件中添加以下代码,然后重新编译下

    复制代码
    apply plugin: 'com.android.application'
    
    android {
        compileSdkVersion 26
        buildToolsVersion '26.0.2'
        defaultConfig {
            applicationId "com.why.project.changelanguagedemo"
            minSdkVersion 15
            targetSdkVersion 25
            versionCode 1
            versionName "1.0"
            testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        }
        buildTypes {
            release {
                minifyEnabled false
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            }
        }
        lintOptions {
            checkReleaseBuilds false
            // Or, if you prefer, you can continue to check for errors in release builds,
            // but continue the build even when errors are found:
            abortOnError false
        }
    }
    
    dependencies {
        implementation fileTree(dir: 'libs', include: ['*.jar'])
        implementation 'com.android.support:appcompat-v7:26.1.0'
        implementation 'com.android.support.constraint:constraint-layout:1.0.2'
        testImplementation 'junit:junit:4.12'
        androidTestImplementation 'com.android.support.test:runner:1.0.1'
        androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
    }
    复制代码

    Error:Unable to load class 'org.gradle.api.internal.component.Usage'.

     

    复制代码
    Error:Unable to load class 'org.gradle.api.internal.component.Usage'.
    Possible causes for this unexpected error include:<ul><li>Gradle's dependency cache may be corrupt (this sometimes occurs after a network connection timeout.)
    <a href="syncProject">Re-download dependencies and sync project (requires network)</a></li><li>The state of a Gradle build process (daemon) may be corrupt. Stopping all Gradle daemons may solve this problem.
    <a href="stopGradleDaemons">Stop Gradle build processes (requires restart)</a></li><li>Your project may be using a third-party plugin which is not compatible with the other plugins in the project or the version of Gradle requested by the project.</li></ul>In the case of corrupt Gradle processes, you can also try closing the IDE and then killing all Java processes.
    复制代码

    解决方案:

    将项目根目录的 build.gradle 中的classpath 'com.novoda:bintray-release:0.3.4'修改为classpath 'com.novoda:bintray-release:0.5.0'

    复制代码
    buildscript {
        …
        dependencies {
            classpath 'com.android.tools.build:gradle:3.0.0'
            //解决Plugin with id 'com.novoda.bintray-release' not found.
            classpath 'com.novoda:bintray-release:0.5.0'
            // NOTE: Do not place your application dependencies here; they belong
            // in the individual module build.gradle files
        }
    }
    复制代码

    参考资料

    玩Android

    Android studio开发

    Android Studio 3.0正式版填坑之路

    Android Studio3.0更新之路(遇坑必入)

    Android Studio3.0新特性及安装详解

    Android Studio3下多渠道打包遇到的坑

    升级到AndroidStudio3.0指南

    Android Studio 3.0及Gradle Plugin 3.0升级注意事项

    老项目迁移AndroidStudio3.0带你踩完所有坑~

    Android Studio 3.0升级--Unable to load class ‘org.gradle.api.internal.component.Usage’.

    AndroidStudio - 手动更新gradle及关联项目详解

     
  • 相关阅读:
    [转载]苹果推送通知服务
    Lovekey
    大数阶乘的位数
    大明A+B
    大数取余
    A+Bcoming
    大数取余(C++)
    验证角谷猜想
    麦森数(转)
    大数阶乘的位数(C++)
  • 原文地址:https://www.cnblogs.com/Jeely/p/10943353.html
Copyright © 2020-2023  润新知