问题标签 [android-jetifier]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - 在带有支持库的项目中反向 Jetifier 与 AndroidX 的依赖关系
我正在尝试使用喷射器的反向功能,但由于未知错误,我似乎被卡住了。
我在独立的 jetifier 工具上运行以下命令(嵌入在 AndroidStudio 中的工具不支持此功能)
但是我遇到了以下错误,它并没有说太多:
有没有人设法使用这个工具的反向功能?有谁知道为什么会出现这个问题?有什么解决办法吗?
PS:工件正在工作,因为它发布在一个关系上,并用作测试项目中的依赖项。
android - 在仍使用 android.support.* 的主机应用程序中使用 AndroidX 依赖库
我正在使用具有以下两个依赖项的第三方库AndroidX
:
在编译仍然使用的主机应用程序时,android.support.*
出现以下错误:
AAPT:错误:找不到属性“com.xyandroid.debug:defaultNavHost”。
AAPT:错误:找不到属性“com.xyandroid.debug:startDestination”。
为了修复它,我AndroidX
在我的主机应用程序中添加了相应的库并遇到了以下错误:
任务:App:transformDexArchiveWithExternalLibsDexMergerForChaseDebug FAILED D8:程序类型已经存在:com.google.android.material.internal.package-info
请注意:该库已使用此链接进行反向喷射
我已经尝试在gradle.properties
文件中添加以下行:
已经尝试从包装信息中排除:
上述两种解决方案都不起作用。有什么建议么?
android - 当库使用 android 组件并且应用程序使用 androidx 组件时,Jetifier 不工作
我有一个使用 AncdroidX 组件的应用程序。喷射器已启用
现在我正在添加一个使用 android 库而不是 AndroidX 的第三方库(com.android.support).
库依赖项
应用程序依赖
我收到第三方库的构建错误
当我检查依赖项时,它显示为
react-native - 在开发模式下 React Native App Stuck On Jetify
我正在尝试在 0.60 上迁移我的应用程序,但它一直卡在 jetify 进程中。
基本上,在这一行之后:
info 运行 jetifier 将库迁移到 AndroidX。您可以使用“--no-jetifier”标志禁用它。
它只是卡住了,什么也没做。我需要 jetifier 用于 react-native-firebase 和其他一些本地库。有什么建议么?
更新
似乎问题出在符号链接中。我正在使用勒纳。
android - 无法使用转换 JetifyTransform 转换文件“library-1.2.0.aar”以匹配属性 {artifactType=processed-aar}
我正在将现有项目迁移到 Androidx 。添加此 2 行后
在gradle.properties
,我得到一堆编译错误。我找到了很多解决方案,但对我没有任何帮助。请帮帮我。谢谢
gradle(应用级)
android - Gradle 插件 3.5.0:“无法转换工件”、“JetifyTransform 执行失败”
我们将 Android Gradle 插件从 3.4.2 更新到 3.5.0(并将 Gradle 从 5.1.1 更新到 5.4.1)。
之后,构建开始在一些子模块中失败。尝试assemble
任何构建变体都会产生这种情况(命令行和 Android Studio 中的错误相同):
任何想法如何解决这一问题?
我试过的
- AS中的“使缓存无效”,并按照此答案中的建议清除所有Gradle缓存
~/.gradle/caches
- 这个有点相似的问题中的所有建议
- 我检查了有问题的模块使用
apply plugin: 'com.android.library'
(而不是com.android.application
) - 我尝试
androidx.appcompat:appcompat:1.1.0
在受影响的模块中更新 appcompat 依赖项并删除该依赖项
- 我检查了有问题的模块使用
更新
Gradle 插件 3.5.0 中开始出现问题;构建在本地和我们的 CI 机器上对我来说表现不稳定。
例如,干净的构建失败:./gradlew clean assembleBetaRelease
在./gradlew assembleBetaRelease
工作时失败!
另外,有时我会得到AAPT: error: attribute ... not found
而不是上述Failed to transform artifact
错误。
恢复到 Gradle 插件 3.4.2,所有这些问题都消失了。
2019 年 10 月编辑:Gradle 插件 3.5.1 仍然出现这种奇怪的行为。编辑 2019 年 11 月和 3.5.2。升级到 Gradle 5.6 也无济于事。
android - android-jetifier: "无法解析所有工件"; 新项目上的“改造工件失败”
我有一个我正在尝试构建的相对较新的项目。Gradle 同步正常,但每当我尝试构建时,都会收到如下错误:
我一周前才开始这个项目,一直在使用 Android Studio 的 stable 分支,并使用 Gradle 插件 3.5。那么,有人对如何解决这个问题有任何想法吗?
我试过的:
- 在 gradle.properties 中禁用 Jetifier 给我留下了关于新旧数据绑定依赖项的错误。
- 回滚到 Gradle 插件 3.4.2 给出了与上述相同的错误。
- 添加
android.jetifier.blacklist = pass
到 gradle.properties 给我留下了与上面相同的错误。 - 添加
android.databinding.enableV2=true
到 gradle.properties 给我留下了与上面相同的错误。 - 在 Android Studio 中运行“迁移到 AndroidX”重构实际上给我留下了这个奇怪的重构预览:
- 从我的应用程序级 build.gradle 中删除
apply plugin: 'kotlin-kapt'
给我留下了与上述相同的错误。 - 清洁和重建不起作用。
- 无效和重新启动不起作用。
编辑 1: Gradle 依赖项,出于好奇......我认为我在这里没有使用任何特别奇怪的东西。
编辑 2:将我的 Gradle 依赖项复制粘贴到一个新的空项目中并得到相同的错误。它可能是这些依赖项之一吗?
编辑 3:从我的 build.gradle 中注释掉各种库(Moshi、Retrofit、Timber、Glide)也没有效果。所以,我可能应该向 Google 提交一份错误报告。在那之前,解决方法是什么?
编辑 4:根据评论的建议,我尝试删除我的 .gradle 文件夹并回滚到早期版本的材料设计库。两者都没有效果,但后者在构建日志中添加了一些有趣的东西:
android - 为什么gradlew assembleDebug不运行jetifier,而react-native run-android运行jetifier?
我已经设置android.useAndroidX = true
并android.enableJetifier = true
在 gradle.properties 上。但是当我跑步时,react-native run-android
我看到:
但是当我将 dir 更改为 android dir 并运行./gradlew assembleDebug
时,我没有看到这样的东西。android.support.*
因此,我的构建在导入库的任何地方都会中断。
为什么会这样?我怎样才能解决这个问题?有没有办法从外部强制 gradlew 运行 jetifier?
android-navigation - 为什么在将 'androidx.navigation:navigation-ui' 添加为依赖项之前,getOnBackPressedDispatcher() 方法仍未解决?
我正在尝试自定义onBackPress
JetPack Navigation 的行为。虽然我找到了解决方案,但我只是好奇在以下场景中幕后发生了什么:
我活动的初始状态是
为什么在我将以下依赖项添加到 build.gradle 后,该getOnBackPressedDispatcher()
方法正在被解析:
幕后发生了什么?它与Jetifier有什么关系吗?它是否根据声明的依赖关系或类似的东西改变类?
gradle - Android:弃用不能转换为注解
掉进了迁移到 AndroidX 的兔子洞……
我几乎完成了迁移,但遇到了一个我似乎无法克服的错误。
已经尝试Clean & Rebuild
过Invalidate Caches / Restart
看起来有些东西正在将@Deprecated 注入到无法识别的 R.java 文件中。
该应用程序的build.gradle
文件很长,但这里是相关部分(如果相关,可以发布更多):
我从 Kotlin 编译器中得到一系列错误
链接到 R.java
我没有titleMargins
在我的项目中使用过任何地方。当我进行搜索时,这些@Deprecated
值仅显示在 Android sdk 和com.google.android.material
工件中,包含在.gradle/caches/
. 我试过删除这个文件夹,每次编译都会再次出现。
我认为这与数据绑定有关,但我已经做了好几天了,找不到原因。
我在这里找到的特定注释处理器文件的来源:ProcessDataBinding.java
更新 1
这篇关于迁移到 AndroidX 的现实的精彩文章解释了 Android X 的 jetifier 工具不处理生成的代码。我已经看到其他相关的 SO 帖子处理 , 等问题ButterKnife
,Dagger
但我们没有使用其中任何一个。我们正在使用几个数据绑定和编译库,但我不确定哪一个是错误引用的来源。所以我的问题是如何找到这个生成代码的来源并修复它?
更新 2
回到原来的pre-AndroidX项目,这个错误其实是在升级支持库到28的时候出现的。只是换行了
implementation "com.android.support:appcompat-v7:27.1.1"
至
implementation "com.android.support:appcompat-v7:28.0.0"
会触发编译错误。
在一系列碎屑之后,我遇到了这个问题跟踪器:当另一个注释处理器失败时,数据绑定 v2 会产生错误,这可能是相关的,但我仍然不确定如何修复它。