【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下载安装最新版本(需要翻墙)
备份旧版本的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:\Users\Administrator\.gradle\wrapper\dists
升级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 Studio 3.0及Gradle Plugin 3.0升级注意事项
Android Studio 3.0升级--Unable to load class ‘org.gradle.api.internal.component.Usage’.
AndroidStudio - 手动更新gradle及关联项目详解
【Android Studio安装部署系列】三十、从Android studio2.2.2升级到Android studio3.0之路的更多相关文章
- 【Android Studio安装部署系列】十九、Android studio使用SVN
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 概述 在AndroidStudio中开发版本控制,除了Git就是SVN,和Eclipse不同,Android Studio没有提供单独的插 ...
- 【Android Studio安装部署系列】十八、Android studio更换APP应用图标
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 概述 Android Studio新建项目后会有一个默认图标,那么如何更换图标呢? 替换图标 这个方案不建议直接在已有项目上更换图标,建议 ...
- 【Android Studio安装部署系列】十、Android studio打包发布apk安装包
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 概述 使用Android studio发布apk安装包的操作步骤. 开始打包发布apk Build > Generate Signe ...
- 【Android Studio安装部署系列】十二、Android studio代码混淆
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 概述 为什么需要代码混淆呢?原因很简单,你的apk很容易被反编译出来,你写的代码都会被看到,因此我们需要在编译过程中对代码进行一定程度的混 ...
- 【Android Studio安装部署系列】十四、Android studio移除工程和删除项目
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 概述 Android Studio删除工程.项目的操作步骤. 移除工程 主要用于从最近打开的项目列表中移除.硬盘中还是存在这个项目的. F ...
- 【Android Studio安装部署系列】十五、Android studio添加Assets目录
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 概述 Android Studio新建项目时是没有assets目录,需要自己手动创建. app右键——New——Folder——Asset ...
- 【Android Studio安装部署系列】十六、Android studio在layout目录下新建子目录
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 概述 一般用于分类显示不同模块的layout布局文件. 在res/layout文件夹下创建子目录 res/layout鼠标右键——New— ...
- 【Android Studio安装部署系列】三十六、Android studio3.2使用过程中注意事项
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 概述 Android Studio升级到3.2之后,运行旧项目的时候出现了各种情况,特此记录下. 一.打包选项多了,一般情况下选择APK即 ...
- 【Android Studio安装部署系列】目录
概述 从刚开始使用Android Studio到现在,下面所有目录下的操作,当时习惯性的把每一个整理成一个文档(其实就是简单文字描述+截图):有些地方当时是一知半解,现在会稍微明白一些.正好赶上现在有 ...
- 【Android Studio安装部署系列】二十一、Android studio将项目上传到github中
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 概述 两个相关概念:git和github Git是一个开源的分布式版本控制系统,用以有效.高速的处理从很小到非常大的项目版本管理.Git ...
随机推荐
- Python json & pickle, shelve 模块
json 用于字符串和python的数据类型间的转换 四个功能 dumps dump loads load pickle 用于python特有的类型和python的数据类型进行转换 四个功能 dump ...
- Java Script 读书笔记 (三) 函数
1. 函数作用域 在函数内部定义的变量,外部无法读取,称为"局部变量"(local variable). 变量v在函数内部定义,所以是一个局部变量,函数之外就无法读取. 函数内部定 ...
- 【建模+强连通分量】POJ1904 King's Quest
Description 一个国王有n个王子,同时有n个女孩.每个王子都有自己喜欢的若干个女孩,现给定一个合法的完备匹配(也就是一个王子娶其中一个自己喜欢女孩),求每个王子可以选择哪些女孩可以让剩下的每 ...
- POI读取excel文件。
1) poi读取现成.xls文件,不需要自己建立.xls ====ReadExcel类==== package cust.com.excelToDataTest; import java.io.F ...
- Ubuntu配置tomcat9
buntu 安装jdk:[链接] Ubuntu安装eclipse:[链接] Ubuntu下安装MySQL与mysql workbench:[链接] Ubuntu配置tomcat9:[链接] Ubunt ...
- [asp.net mvc 奇淫巧技] 06 - 也许你的项目同一个用户的请求都是同步的
一.感慨 很久前看到一篇博客中有句话大致的意思是:“asp.net 程序性能低下的主要原因是开发人员技术参差不齐”,当时看到这句话不以为然,然而时间过的越久接触的.net 开发人员越多就越认同这句话: ...
- Python练习:关于递归的经典实例设计
(一)裴波拉契数列 利用递归算法获得裴波拉契数列前N个值的结果: #裴波拉契数列,通过递归计算 def fb(n): if n <=0: res = 0 elif n ==1: res = 1 ...
- 解决eclipse svn 转 maven web 项目中遇到找不到maven managed dependencies的问题
我们在使用eclipse从svn上check项目下来,然后转成maven web 项目的时候,经常会遇到一个问题,就是找不到maven依赖(maven managed dependencies),从而 ...
- TensorFlow从1到2(五)图片内容识别和自然语言语义识别
Keras内置的预定义模型 上一节我们讲过了完整的保存模型及其训练完成的参数. Keras中使用这种方式,预置了多个著名的成熟神经网络模型.当然,这实际是Keras的功劳,并不适合算在TensorFl ...
- java游戏开发杂谈 - 游戏编程浅析
每个游戏,你所看到的它的一切,都是计算机画出来的! 地图是画出来,人物是画出来的,树木建筑是画出来的,菜单按钮是画出来的,滚动的文字.闪烁的图标.云雾烟火,都是画出来的. 游戏编程,所要做的,就是控制 ...