如何知道一个支持库是否已经支持AndroidX?



我在unity中有一个项目,使用Mapbox,
Mapbox包括以下支持库:support-v4-25.1.0。aar
这个库是一个。aar文件,而不是gradleimplementation命令
当试图构建项目时,我得到这个错误:

无法确定任务':launcher:lintVitalRelease'的依赖关系。
无法解析配置':launcher:debugRuntimeClasspath'的所有构件。
转换支持-v4-25.1.0-失败。{artifactType=android-manifest, org.gradle.status=integration}。
在JetifyTransform执行失败:
C:UsersEFGHDocumentsGitHubAREXTempgradleOutunityLibrarylibssupport-v4-25.1.0.aar。
在转换"C:UsersEFGHDocumentsGitHubAREXTempgradleOutunityLibrarylibssupport-v4-25.1.0"失败。我在用Jetifier。
原因:AmbiguousStringJetifierException,消息:给定的工件包含一个带有包引用'android.support '的字符串字面量。不能安全地重写的V4。使用反射的库(如注释处理器)需要手动更新以添加对androidx的支持。(运行——stacktrace获取更多细节)
这是一个已知的异常,并且Jetifier将无法jetify此库。建议:
-如果你认为这个库不需要被jetify(例如,如果它已经支持AndroidX,或者如果它根本不使用支持库/AndroidX),添加android.jetifier.blacklist ={逗号分隔的正则表达式列表(或简单的名称)的库,你不想被jetify}到gradle。属性文件。
-如果你认为这个库需要被支持(例如,如果它使用旧的支持库,如果它不被支持就会破坏你的应用程序),联系库的作者更新这个库以支持AndroidX,并在它发布后使用受支持的版本。
如果你需要进一步的帮助,请在https://issuetracker.google.com/issues/140747218留言。

我gradle.properties:

org.gradle.jvmargs=-Xmx**JVM_HEAP_SIZE**M
org.gradle.parallel=true
android.enableJetifier=true
android.useAndroidX=true
android.enableR8=**MINIFY_WITH_R_EIGHT**
unityStreamingAssets=.unity3d**STREAMING_ASSETS**
**ADDITIONAL_PROPERTIES**

我想知道是否有一种方法让我知道是否一个特定的支持库已经有对AndroidX的支持?(所以它不需要被jetification)
进一步开始:为什么有些库不需要被jetification ?当一个支持库支持AndroidX而不需要被认证时,这意味着什么?不是jetify的行为自动替换支持库与相应的AndroidX等效库?一个支持库怎么能不被认可呢?这对我来说一点意义都没有。

非常确定它描述了不需要使用jettify的罕见可能性,例如,如果它在不使用它的类中完成,或者在从未使用过的类中完成。这种情况不太可能发生,除非库的设计者非常草率。但如果它只在应用程序永远不会触及的类中使用支持库,也可能是可以的。在这种情况下,如果你把它列入黑名单,我不确定它是否能编译。

很可能你运气不好,除非你能让库作者修复它,或者你可以分叉他们的库,如果它是开源的,在你自己的副本中修复它。Jetpack已经存在好几年了。任何仍然使用旧支持库的库都很有可能已经被抛弃多年,所以这也是需要考虑的问题。

在这里加上我的答案,以防对任何人有所帮助。

Jetifier不适合我。在它说它已经迁移到AndroidX之后,我收到了一个关于重复文件的错误信息。然而,我想我设法让它工作....至少现在是这样。

在Unity中我使用Assets>外部依赖管理器>Android解析器>在构建APK之前删除已解决的库。然而,在Android Studio中,我将错误代码复制到一个文档中,这样我就可以看到整个内容,并发现重复的引用都在一个文件中。我不能删除文件本身,而是去构建。Gradle文件并删除指向冲突脚本的行。

作为参考,我将我的项目从2020.1.1更新到2021.3.17,它自动迁移到Android X,只留下一个冲突的文件。此文件是Firebase Analytics unityppackage的一部分。

最新更新