记一次Androidx工作适配
问题
在开发中引入flutter module 的时候编译报错如下,经过网查找是 tagSdk 28情况下 Androidx的导入包问题
Duplicate class android.support.v4.app.INotificationSideChannel found in mod
思路
思路就是遇到问题第一时间去看 官网给出的迁移到 AndroidX的文章https://developer.android.com/jetpack/androidx/migrate
Androidx的概念
AndroidX 会将原始支持库 API 软件包映射到androidx命名空间。只有软件包和 Maven 工件名称发生了变化;类、方法和字段名称没有改变。
要了解如何借助 Android Studio 迁移现有代码,请参阅下面的使用 Android Studio 迁移现有项目
解决方案
1.在gradle.properties 文件中添加如下两行
android.useAndroidX = true
android.enableJetifier = true
2.然后借助 Android Studio 3.2 及更高版本,您可以通过从菜单栏中依次选择 Refactor > Migrate to AndroidX,快速迁移现有项目以使用 AndroidX。
Migrate to AndroidX
3.你会发现在项目根目录生成了一个压缩包,然后解压用Android Studio打开
image.png
4.在app.gradle文件下添加以下,是为了替换android.support的包
implementation 'androidx.appcompat:appcompat:1.1.0-beta01'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
implementation 'com.google.android.material:material:1.1.0-alpha07'
5.在gradle sync后你会发现你的android.support的控件都报错了找不到了,这个时候你要去手动替换,别忘了xml文件的控件也要换掉
import androidx.recyclerview.widget.RecyclerView;
import androidx.appcompat.app.AppCompatActivity;
import androidx.exifinterface.media.ExifInterface;
import androidx.annotation.Nullable;
import androidx.recyclerview.widget.RecyclerView;
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.appcompat.app.ActionBarDrawerToggle;
import androidx.appcompat.app.ActionBar;
import androidx.drawerlayout.widget.DrawerLayout;
import androidx.appcompat.widget.Toolbar;
import androidx.recyclerview.widget.DefaultItemAnimator;
import androidx.annotation.CallSuper;
import androidx.annotation.UiThread;
import androidx.recyclerview.widget.LinearLayoutManager;
provider的name也要替换为Androidx的
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="com.test.my.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
文末
可参考:推荐 清明捉鬼 的文章《Androidx初尝及其新旧包对照表》( 分享自 @jianshucom ) https://www.jianshu.com/p/1466ebefe4d0?utm_campaign=maleskine&utm_content=note&utm_medium=reader_share&utm_source=twitter
官方参考文章:https://developer.android.com/jetpack/androidx/migrate#migrate