先不谈为什么要升级AndroidX了,下面是我这个项目升级AndroidX踩的坑,记录一下(我是按照我的顺序来的):
1、升级Gradle版本,修改gradle-wrapper.properties:
AndroidX最低支持的gradle版本是4.6,我这边直接5.1.1了;
distributionUrl=https\://services.gradle.org/distributions/gradle-5.1.1-all.zip
2、升级插件版本:
在主工程(Project)的bulid.gradle里,AndroidX最低支持的版本是3.2,我这边直接3.4.1了;
classpath 'com.android.tools.build:gradle:3.4.1'
3、修改SdkVersion
AndroidX最低支持 28 、28.0.2;
compileSdkVersion: 29
targetSdkVersion : 29
buildToolsVersion "29.0.0"
附带添加一下这个gradle.properties:
# https://developer.android.com/topic/libraries/support-library/androidx-rn
android.useAndroidX=true
# Automatically convert third-party libraries to use AndroidX
android.enableJetifier=true
4、使用 Migrate to androidx
这波操作以后,你的项目就会有大变动了:
原来的android.xxx.xxx.28.0.2全部变为androidx.xxx.xxx.1.0.0;
下面的这些引入也会变化:
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.content.ContextCompat;
import androidx.appcompat.widget.AppCompatTextView;
坑1、Glide:
Glide中使用的 android.support.annotation.CheckResult 和android.support.annotation.NonNull这两个注解找不到;
解决方法:使用glide4.8.0 、 bulid.gradle中添加以下声明;
"libGlide" : "com.github.bumptech.glide:glide:4.8.0",
"libGlideCompiler" :"com.github.bumptech.glide:compiler:4.8.0"
//解决Glide找不到Android声明库问题
annotationProcessor 'androidx.annotation:annotation:1.0.0'
坑2、ButterKnife
使用ButterKnife 10.1.0版本;
classpath 'com.jakewharton:butterknife-gradle-plugin:10.1.0' //这个地方也别忘记改为10.1.0
坑3、Android-PickerView:
PickerView的 com.contrarywind.interfaces.IPickerViewData 会找不到;升级到4.1.8版本即可;