我在Unity有一个项目,使用Mapbox,
Mapbox包括以下支持库:support-v4-25.1.0.aar
此库以. aar文件的形式提供,而不是以gradle implementation
命令的形式提供
当尝试构建项目时,我得到这个错误:
无法确定任务":launcher:lintVitalRelease"的依赖项。
未能解析配置":launcher:debugRuntimeClasspath"的所有项目。
无法转换support-v4 - 25.1.0-. aar(:support-v4 - 25.1.0:)以匹配属性{工件类型= android清单,组织. gradle.状态=集成}。
〉执行JetifyTransform失败:
C:\用户\EFGH\文档\GitHub\AREX\临时\毕业生\单元库\库\支持-v4 - 25.1.0.aar.
〉无法使用Jetifier转换"C:\用户\EFGH\文档\GitHub\AREX\Temp\gradleOut\单元库\库\support-v4 - 25.1.0.aar"。
原因:不明确的字符串JetifierException,消息:给定的项目包含具有包引用"android.support.v4"的字符串文本,该包引用无法安全地重写。需要手动更新使用反射(如注解处理器)的库,以添加对androidx的支持..(有关详细信息,请使用--stacktrace运行。)
这是一个已知的例外,Jetifier将无法jetify此库。建议:
- 如果您认为此库不需要进行jetification(例如,如果它已经支持AndroidX,或者如果它根本不使用支持库/AndroidX),请将android. jetifier. blacklist = {您不希望进行jetification的库的正则表达式(或名称)的逗号分隔列表}添加到www.example.com文件中。gradle.properties file.
- 如果您认为此库需要jetified(例如,如果它使用旧的支持库,并且在未jetified的情况下会破坏您的应用),请联系库的作者更新此库以支持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?(所以它不需要jetified)
此外,首先:为什么有些库不需要jetify?当一个支持库支持AndroidX而不需要jetify是什么意思?jetify不就是自动用对应的AndroidX等价库替换支持库的行为吗?一个支持库怎么能从jetify中获得免费通行证呢?这对我来说一点意义都没有。
2条答案
按热度按时间pcww981p1#
很确定它描述了一些罕见的不需要使用jetify it的可能性,例如,如果它是在一个不使用它的类中完成的,或者是在一个从来没有使用过的类中完成的。除非库设计者非常草率,否则这种情况是不太可能的。如果它只使用你的应用永远不会接触的类中的支持库,它也可能是可以的。不确定如果你在这种情况下将它列入黑名单,它是否能够编译。
最有可能的情况是你运气不好,除非你能让库的作者来修复它,或者你可以派生他们的库,如果它是开源的,用你自己的副本来修复它。Jetpack已经存在好几年了。任何仍然使用旧支持库的库很有可能已经被废弃多年了,所以这也是需要考虑的。
mwecs4sa2#
把我的答案加在这里以防对大家有帮助。
Jetifier就是不适合我。在它说它已经迁移到AndroidX之后,我收到了一个关于重复文件的错误消息。然而,我想我设法让它工作了...至少现在是这样。
在Unity中,我在构建APK之前使用了Assets〉External Dependency Manager〉Android Resolver〉Delete Resolved Libraries。然而,在Android Studio中,我将错误代码复制到了一个文档中,这样我就可以看到整个过程,并发现重复的引用都在一个文件中。我无法删除文件本身,而是转到build.gradle文件并删除引用冲突脚本的行。
作为参考,我将我的项目从2020.1.1更新到2021.3.17,它自动迁移到Android X,只留下一个冲突的文件。这个文件是Firebase Analytics unitypackage的一部分。