AndroidX是什么?
AndroidX 将原始支持库 API 替换为 androidx
命名空间中的软件包。
简单说就是把 各种android.support.xxxx 替换为androidx.xxxx.xxxx
执行迁移之前保险起见切换到新的git分支
1.app的build.gradle文件中 targetSdkVersion 至少是28版本
android { compileSdkVersion 28 buildToolsVersion "28.0.3" defaultConfig { applicationId "com.xxx.xxx" minSdkVersion 23 targetSdkVersion 28 ... } ... }
2.修改gradle版本3.2.0 及以上
dependencies { classpath 'com.android.tools.build:gradle:3.2.0' ... }
3.修改gradle.properties文件
添加以下标记:
# Android 插件会使用对应的 AndroidX 库而非支持库。 android.useAndroidX=true # Android 插件会通过重写现有第三方库的二进制文件,自动将这些库迁移为使用 AndroidX。 android.enableJetifier=true
使用android studio迁移
android studio版本要求为 3.2 或更高版本
右键点击项目名称 选择 Refactor 再选 Migrate to AndroidX
勾选 以获取备份项目 以防万一
保存为zip文件
接下来就可以放心大胆的.......改代码了 一般需要几个小时完全搞定 当然也可能有一些bug会慢慢出现
都到这一步了 just do it
之前的各种支持库
implementation 'com.android.support:design:27.1.1' implementation 'com.android.support:appcompat-v7:27.1.1' ...
迁移后会自动修改为对应的androidx库
implementation 'com.google.android.material:material:1.0.0' implementation 'androidx.appcompat:appcompat:1.0.0' implementation 'androidx.constraintlayout:constraintlayout:1.1.2' implementation 'androidx.recyclerview:recyclerview:1.0.0' implementation 'androidx.cardview:cardview:1.0.0' ...
跑项目 一般都会报错
看错误日志 逐一修改 没什么就是耗时间
支持库类 | AndroidX 类 |
---|---|
android.support.v4.app.DialogFragment | androidx.fragment.app.DialogFragment |
android.support.v4.app.Fragment | androidx.fragment.app.Fragment |
android.support.v4.app.FragmentActivity | androidx.fragment.app.FragmentActivity |
android.support.v4.app.FragmentContainer | androidx.fragment.app.FragmentContainer |
android.support.v4.app.FragmentController | androidx.fragment.app.FragmentController |
android.support.v4.app.FragmentHostCallback | androidx.fragment.app.FragmentHostCallback |
android.support.v4.app.FragmentManager | androidx.fragment.app.FragmentManager |
android.support.v4.app.FragmentManagerImpl | androidx.fragment.app.FragmentManagerImpl |
android.support.v4.app.FragmentManagerNonConfig | androidx.fragment.app.FragmentManagerNonConfig |
android.support.v4.app.FragmentManagerState | androidx.fragment.app.FragmentManagerState |
android.support.v4.app.FragmentPagerAdapter | androidx.fragment.app.FragmentPagerAdapter |
android.support.v4.app.FragmentState | androidx.fragment.app.FragmentState |
android.support.v4.app.FragmentStatePagerAdapter | androidx.fragment.app.FragmentStatePagerAdapter |
android.support.v4.app.FragmentTabHost | androidx.fragment.app.FragmentTabHost |
android.support.v4.app.FragmentTransaction | androidx.fragment.app.FragmentTransaction |
android.support.v4.app.FragmentTransition | androidx.fragment.app.FragmentTransition |
android.support.v4.app.FragmentTransitionCompat21 | androidx.fragment.app.FragmentTransitionCompat21 |
android.support.v4.app.FragmentTransitionImpl | androidx.fragment.app.FragmentTransitionImpl |
支持库类 | AndroidX 类 |
---|---|
android.support.v7.app.ToolbarActionBar | androidx.appcompat.app.ToolbarActionBar |
android.support.v7.app.TwilightCalculator | androidx.appcompat.app.TwilightCalculator |
android.support.v7.app.TwilightManager | androidx.appcompat.app.TwilightManager |
android.support.v7.app.WindowDecorActionBar | androidx.appcompat.app.WindowDecorActionBar |
android.support.v7.appcompat.R | androidx.appcompat.R |
android.support.v7.cardview.R | androidx.cardview.R |
android.support.v7.recyclerview.R | androidx.recyclerview.R |
android.support.v7.widget.CardView | androidx.cardview.widget.CardView |
android.support.v7.widget.CardViewApi17Impl | androidx.cardview.widget.CardViewApi17Impl |
android.support.v7.widget.CardViewApi21Impl | androidx.cardview.widget.CardViewApi21Impl |
android.support.v7.widget.CardViewBaseImpl | androidx.cardview.widget.CardViewBaseImpl |
android.support.v7.widget.CardViewDelegate | androidx.cardview.widget.CardViewDelegate |
android.support.v7.widget.CardViewImpl | androidx.cardview.widget.CardViewImpl |
android.support.v7.widget.LayoutState | androidx.recyclerview.widget.LayoutState |
android.support.v7.widget.LinearLayoutCompat | androidx.appcompat.widget.LinearLayoutCompat |
android.support.v7.widget.LinearLayoutManager | androidx.recyclerview.widget.LinearLayoutManager |
android.support.v7.widget.LinearSmoothScroller | androidx.recyclerview.widget.LinearSmoothScroller |
android.support.v7.widget.LinearSnapHelper | androidx.recyclerview.widget.LinearSnapHelper |
android.support.v7.widget.ListPopupWindow | androidx.appcompat.widget.ListPopupWindow |
android.support.v7.widget.RecyclerView | androidx.recyclerview.widget.RecyclerView |
不同项目会有不同的问题,迁移androidX就是需要耐心
1.混淆文件
在文件中添加
#androidX -keep class com.google.android.material.** {*;} -keep class androidx.** {*;} -keep public class * extends androidx.** -keep interface androidx.** {*;} -dontwarn com.google.android.material.** -dontnote com.google.android.material.** -dontwarn androidx.**
2.可以更好的使用Flutter进行混合开发了