我正在阅读关于Android的一个房间库。我看到他们把android包改成了androidx。我不明白。有人能解释一下吗?

implementation "androidx.room:room-runtime:$room_version"
annotationProcessor "androidx.room:room-compiler:$room_version"

甚至这也是可用的android包。

implementation "android.arch.persistence.room:runtime:$room_version"
annotationProcessor "android.arch.persistence.room:compiler:$room_version"

为什么需要在androidx而不是android中打包新的支持库? 现有项目中的用例和影响因素。

我的仪器测试用的

@RunWith(AndroidJUnit4.class)

from

import androidx.test.runner.AndroidJUnit4;

为了建立我的测试用例。现在这一行被标记为已弃用,提示使用AndroidJUnit4 from

import androidx.test.ext.junit.runners.AndroidJUnit4

然而,如果我试图从命名包中导入AndroidJUnit4,我得到了错误,该ext无法解决。

你有什么想法,应该在gradle中包含什么包来解决这个问题?