Android Studio 3.4升级后的运行问题解决办法

Android Studio 3.4推出有一段时间了,升级之后又有几个问题需要处理,说明如下:

一、把Gradle升级到AS3.4配套的5.1.1版本
1、手工下载Gradle4.6并解压,下载地址是http://downloads.gradle.org/distributions/gradle-5.1.1-all.zip。将下载的压缩包解压到本地目录,比如解压到D:\Android\gradle-5.1.1
2、打开Android Studio,依次选择菜单“File”——“Settings”——“Build, Execution, Deployment”——“Gradle”,选中“Use Local gradle distribution”,然后输入Gradle5.1.1的解压目录。配置界面如下图所示:

填完之后单击界面右下角的Apply按钮。


二、在新建的项目中导入外部模块时报错
报错信息为“错误: 程序包android.support.v7.app不存在”,错误截图如下所示:


原因是AS3.4推出了AndroidX要取代原来的support库。创建新项目的时候,如果没有勾选“Use androidx.* artifacts”,那么导入外部模块不会报错;只有勾选了“Use androidx.* artifacts”,导入外部模块才会报上面的错。勾选界面如下图所示:

而且一旦勾选了“Use androidx.* artifacts”,后续创建其它项目的时候,该选项会变成默认选中,且为灰显不可取消,只有卸载重装AS才能恢复该选项。
如果不想卸载重装,也想继续使用AndroidX的话,则要在导入外部模块之后,修改模块的build.gradle,把原来support库的路径改为对应的AndroidX库的路径。举个例子
原来导入appcompat-v7的写法是下面这样:

    implementation 'com.android.support:appcompat-v7:28.0.0'

启用AndroidX之后,导入appcompat-v7的写法要改成下面这样:

    implementation 'androidx.appcompat:appcompat:1.0.0'

详细的support依赖库的新旧对应关系见下表:

支持库的旧路径 支持库的新路径
com.android.support.constraint:constraint-layout androidx.constraintlayout:constraintlayout:1.1.2
com.android.support.test.espresso:espresso-core androidx.test.espresso:espresso-core:3.1.0
com.android.support.test:runner androidx.test:runner:1.1.0
com.android.support:appcompat-v7 androidx.appcompat:appcompat:1.0.0
com.android.support:cardview-v7 androidx.cardview:cardview:1.0.0
com.android.support:design com.google.android.material:material:1.0.0-rc01
com.android.support:multidex androidx.multidex:multidex:2.0.0
com.android.support:palette-v7 androidx.palette:palette:1.0.0
com.android.support:recyclerview-v7 androidx.recyclerview:recyclerview:1.0.0
com.android.support:support-v4 androidx.legacy:legacy-support-v4:1.0.0


除了修改support库的路径,还要修改support控件的import导包代码,像AppCompatActivity原来的import语句是下面这样的:

import android.support.v7.app.AppCompatActivity;

启用AndroidX之后,导入AppCompatActivity的代码要改成下面这样:

import androidx.appcompat.app.AppCompatActivity;

详细的support控件的新旧对应关系见下表:

支持控件的旧包名 支持控件的旧包名
android.support.v4.app.Fragment androidx.fragment.app.Fragment
android.support.v4.app.FragmentActivity androidx.fragment.app.FragmentActivity
android.support.v4.app.FragmentManager androidx.fragment.app.FragmentManager
android.support.v4.app.FragmentPagerAdapter androidx.fragment.app.FragmentPagerAdapter
android.support.v4.view.ViewPager androidx.viewpager.widget.ViewPager
android.support.v4.view.PagerAdapter androidx.viewpager.widget.PagerAdapter
android.support.v4.view.PagerTabStrip androidx.viewpager.widget.PagerTabStrip
android.support.v4.view.PagerTitleStrip androidx.viewpager.widget.PagerTitleStrip
android.support.v4.content.FileProvider androidx.core.content.FileProvider
android.support.v7.app.AppCompatActivity androidx.appcompat.app.AppCompatActivity
android.support.v7.widget.Toolbar androidx.appcompat.widget.Toolbar
android.support.v7.widget.RecyclerView androidx.recyclerview.widget.RecyclerView
android.support.v7.widget.GridLayoutManager androidx.recyclerview.widget.GridLayoutManager
android.support.v7.widget.LinearLayoutManager androidx.recyclerview.widget.LinearLayoutManager
android.support.v7.widget.StaggeredGridLayoutManager androidx.recyclerview.widget.StaggeredGridLayoutManager
android.support.v7.widget.CardView androidx.cardview.widget.CardView
android.support.v7.graphics.Palette androidx.palette.graphics.Palette
android.support.design.widget.AppBarLayout com.google.android.material.appbar.AppBarLayout
android.support.design.widget.CollapsingToolbarLayout com.google.android.material.appbar.CollapsingToolbarLayout
android.support.design.widget.CoordinatorLayout androidx.coordinatorlayout.widget.CoordinatorLayout
android.support.design.widget.CutoutDrawable com.google.android.material.textfield.CutoutDrawable
android.support.design.widget.FloatingActionButton com.google.android.material.floatingactionbutton.FloatingActionButton
android.support.design.widget.NavigationView com.google.android.material.navigation.NavigationView
android.support.design.widget.Snackbar com.google.android.material.snackbar.Snackbar
android.support.design.widget.TabLayout com.google.android.material.tabs.TabLayout
发布了226 篇原创文章 · 获赞 669 · 访问量 97万+

猜你喜欢

转载自blog.csdn.net/aqi00/article/details/94661015