美文网首页
项目迁移AndroidX记录

项目迁移AndroidX记录

作者: 霁逸lei | 来源:发表于2021-05-15 14:10 被阅读0次

前言
将AS更新至 AS 3.2及以上
Gradle 插件版本改为 4.6及以上,项目下gradle/wrapper/gradle-wrapper.propertie文件中的distributionUrl改为:distributionUrl=https://services.gradle.org/distributions/gradle-4.6-all.zip
compileSdkVersion 版本升级到 28及以上buildToolsVersion 版本改为 28.0.2及以上。
官方建议在迁移之前,先将应用的Support Lib更新至最新版本version 28.0.0。这是因为AndroidX 1.0.0版本是与Support Lib 28.0.0一致的二进制文件。
android.useAndroidX:如果设置为 true,Android 插件会使用相应的 AndroidX 库,而非支持库。如果未指定,则该标记默认为 false。
android.enableJetifier:如果设置为 true,Android 插件会重写其二进制文件,自动迁移现有的第三方库以使用 AndroidX。如果未指定,则该标记默认为 false。

开干

1.gradle.properties添加
android.useAndroidX=true 
android.enableJetifier=true
project的build.gradle添加刷版本
ext{
    // 用于编译的SDK版本
    compileSdkVersion = 30
    // 用于Gradle编译项目的工具版本
    buildToolsVersion = "30.0.2"
}
module build.gradle刷版本
compileSdkVersion rootProject.ext.compileSdkVersion
buildToolsVersion rootProject.ext.buildToolsVersion

2.Android Studio   
Refactor->Migrate to AndroidX
弹框选Migrate备份
搜索结束点击do refactor进行重构 
File -> Invalidate Caches /Restart 重启AS,清除缓存重启下

报错处理

1.错误: 找不到符号    全局替换Ctrl+Shift+R
import androidx.core.view.ViewPager; ->import androidx.viewpager.widget.ViewPager;
import androidx.core.view.PagerAdapter;->import androidx.viewpager.widget.PagerAdapter;
import androidx.core.app.FragmentActivity;->import androidx.fragment.app.FragmentActivity;
import androidx.core.app.FragmentPagerAdapter;->import androidx.fragment.app.FragmentPagerAdapter;
import androidx.core.app.FragmentStatePagerAdapter;->import androidx.fragment.app.FragmentStatePagerAdapter;
import androidx.core.util.ArrayMap ->import androidx.collection.ArrayMap
import androidx.appcompat.widget.LinearLayoutManager -> import androidx.recyclerview.widget.LinearLayoutManager

2.升级Glide
implementation 'com.github.bumptech.glide:glide:4.12.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.12.0'

Glide.with(mContext).load(identifier).asGif().into(mImageView);
//As of Glide version 4.x, asGif() method is removed. 
Glide.with(mContext) .load(yourgif).into(imageView);

3.程序包org.apache.http不存在
在对应module的 build.gradle  
android{
  useLibrary 'org.apache.http.legacy'
}

4.引用的三方jar包使用的是support相关库,使用相关工具转换为支持AndroidX的文件
open_sdk_r5509.jar
Tencent.class   
import android.support.v4.app.Fragment;
独立的 Jetifier 工具可将依赖于支持库的库迁移为依赖于等效的 AndroidX 软件包,下载见附件。

cd进入jetifier-standalone\bin目录
jetifier-standalone -i open_sdk_r5509.jar -o open_sdk_r5509_androidx.jar

5.Failed to transform 'F:\Android\..\libs\Msc.jar' using Jetifier. Reason: null
查了很多,基本是说把最开始设置的android.enableJetifier=true改为false,改完又出现新的bug
|    +--- com.taobao.android:weex_inspector:0.24.2.4
|    |    \--- com.android.support:appcompat-v7:23.1.1
|    |         \--- com.android.support:support-v4:23.1.1
|    |              \--- com.android.support:support-annotations:23.1.1
改回android.enableJetifier=true(自动迁移现有的第三方库以使用 AndroidX)
\--- com.taobao.android:weex_inspector:0.24.2.4
     \--- androidx.appcompat:appcompat:1.0.0

最后参照附录Android Studio 迁移 AndroidX 遇到 jetifier相关问题的记录文章修复
// 在工程目录下的gradle.properties文件内,添加要屏蔽的jar包的名称(既可以使用jetifier将工程迁移到AndroidX,又不需要更改旧的jar包)
android.jetifier.blacklist = old.jar,test.aar

附录
下载Jetifier
Android Studio 迁移 AndroidX 遇到 jetifier相关问题的记录

相关文章

网友评论

      本文标题:项目迁移AndroidX记录

      本文链接:https://www.haomeiwen.com/subject/xsghjltx.html