- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用库 Chuck https://github.com/jgilfelt/chuck
我不太确定什么时候,但我最近做了一次 Android Studio 更新,我认为这可能是根本原因,因为它似乎与 jetifier 的 androidx 转换有关,目前我在 Android Studio 3.3.1 上
在更新之前,我一直让 Chuck 正常工作,而且我已经在 AndroidX 上使用了很长一段时间,所以这是一个 jetifier 错误吗?或者这是预期的,现在是我 fork 这个 2 岁的项目并将其转换为 AndroidX 兼容性的时候了?这个库非常有用,我真的不想失去它。
当我查看 Chuck 源代码时,BaseChuckActivity 正在扩展 AppCompatActivity,而 AppCompatActivity 应该已经扩展了 LifecycleOwner 类,所以我得出结论,这似乎是一个 Jetifier 错误。
我遇到的崩溃
java.lang.IncompatibleClassChangeError: Class 'com.readystatesoftware.chuck.internal.ui.TransactionActivity' does not implement interface 'androidx.lifecycle.LifecycleOwner' in call to 'androidx.lifecycle.Lifecycle androidx.lifecycle.LifecycleOwner.getLifecycle()' (declaration of 'androidx.lifecycle.LiveData' appears in /data/app/com.burstoralcare-k6cLY7GKXKIODVqHmJokmw==/split_lib_dependencies_apk.apk)
at androidx.lifecycle.LiveData.observe(LiveData.java:172)
at androidx.loader.app.LoaderManagerImpl$LoaderInfo.setCallback(LoaderManagerImpl.java:100)
at androidx.loader.app.LoaderManagerImpl.createAndInstallLoader(LoaderManagerImpl.java:400)
at androidx.loader.app.LoaderManagerImpl.initLoader(LoaderManagerImpl.java:421)
at com.readystatesoftware.chuck.internal.ui.TransactionActivity.onCreate(TransactionActivity.java:91)
at android.app.Activity.performCreate(Activity.java:7136)
at android.app.Activity.performCreate(Activity.java:7127)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2893)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3048)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6669)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
最佳答案
因此,由于我的问题在 SO 中没有任何 Activity ,我付出了额外的努力来弄清楚,我将 Chuck 项目 fork ,将所有内容更新为 Androidx 并将目标和编译 SDK 更新为 28 和 tada 崩溃仍然发生(这似乎是在使用 Loaders 时发生的?),所以即使崩溃使它看起来像一个 jetifier 错误,但它很明显不是一个 jetifier 错误,因为现在新的 Chuck aar 完全基于 AndroidX(我稍后更进一步甚至将库使用的语言从 Java 更新为 Kotlin)所以我认为罪魁祸首是 androidx 库,我查看了我的 appcompat 库,因为崩溃是说 Chuck Activity 没有实现 LifeCycleOwner,这是错误的,因为 AppCompatActivity 是一个LifeCycleOwner,所以我的版本是“androidx.appcompat:appcompat:1.0.2”,并将其更改为“androidx.appcompat:appcompat:1.1.0-alpha02”,不再崩溃!! (即使在必须被jetified的原始库上)
那到底发生了什么?我认为我可能包含的某些依赖项一定是在使用 1.1.0.variant 或其他具有错误实现的东西,而较新的库必须优先于我的 1.0.2,因此其他解决方案应该强制将 1.0.2 用于 androidx.appcompat 类似
configurations.all {
resolutionStrategy {
force 'androidx.appcompat:appcompat:1.0.2'
}
}
我没有测试过上面的内容,但理论上,如果你想坚持使用稳定版本,它应该可以工作,否则你只需更改为我上面提到的 alpha 变体,它肯定可以工作。
关于Android Studio 更新到 3.3.1 后,库的 AndroidX 转换失败,这是 Jetifier 的错误吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54901722/
尝试将我的应用程序更新为 androidX 依赖项。按照说明 here ,编译失败。错误来自 JetifyTransform 任务未能处理某个 .JAR 依赖项(仅供引用 - Samsungs Spa
我有一个 Android 应用程序,它明确使用亚马逊 AWS 库的最新 (v2.15.+) 版本,但它还依赖于一个似乎正在拉入自己的(旧)副本的不敬虔的巨大库(netcdf4)( v1.11.236)
我正在尝试更新我的一个 Android 项目的依赖项,但我收到了这个奇怪的错误。 罪魁祸首是这一行,对于 AdMob(我之前使用的是 20.6.0): implementation "com.goog
重新启动 Android Studio 后,我刚刚在 Android Studio 中从一秒到另一秒收到此错误。现在我不能再建立我的项目了。我在我的 android 项目中使用 Ionic 4 和 C
我克隆了 ExoPlayer在本地使用我的 settings.gradle 将模块添加到我现有的项目中,如文档中所述: gradle.ext.exoplayerRoot = 'path/to/exop
尝试在 CI/CD 环境中使用 Jetifier,特别是对我来说,我使用的是 bitrise,但真正的问题是我想自动化部署过程。在 AndroidX 之前这工作正常,现在我需要一种通过命令行为整个应用
我尝试运行react-native run-android,但收到此错误。 info Running jetifier to migrate libraries to AndroidX. You ca
我正在尝试将 okbuck 与 Android Studio 3.3 一起使用,但我卡在了 AndroidX 上。当我将所有依赖项转换为 androidx 并设置时: android.enableJe
我最近将我的应用迁移到了 AndroidX并因此使用 Jetifier 工具(当前与 Android Gradle 插件版本 3.3.0-alpha10 bundle 的版本): # gradle.p
Jetifier工具用作与 Android Studio bundle 在一起的 AndroidX 迁移工具的一部分。但是,该工具存在一个问题,概述如下:https://issuetracker.go
好吧,我创建了一个项目并添加了 Fabric 插件和 Crashlytics 依赖项,我还对其进行了测试并且它有效。但是,当我重构项目以使用 AndroidX 并启用 jetifier 工具 andr
当我构建我的 Android 项目时,我收到以下消息: w: Runtime JAR files in the classpath should have the same version. Thes
我有一个外部 aar 库,用于检查 Chrome 自定义选项卡是否可用。他们通过创建 Intent 并检查服务是否存在来做到这一点。 Intent Action 是 android.support.c
我的 Android 项目有 2 个 Android 库模块:app 和 boo。app 模块已经迁移到 AndroidX,boo 仍在使用支持库。 在 boo 模块中,我想添加一个依赖于支持库并使用
我已经建立了一个管道,可以在 microsoft azure pipelines 中运行我的测试。 .在我的本地机器上,这工作正常,jetified-libidpmobile-debug.jar文件位
我一直在使用 Zendesk v1 SDK 以及 AndroidX 和 Jetifier,在更新到 AS 3.3、Gradle 版本 4.10.1 后,我在编译时遇到错误,看起来 Jetifier 在
任何人都可以帮忙解决这个问题: 我正在 android studio 3.5.2 中编译一个 android 应用程序(sdk 中的所有内容都是最新的),并收到链接到 app:javaPreCompi
安卓工作室 3.6 应用程序/build.gradle: androidTestImplementation 'androidx.test.ext:junit:1.1.1' androidT
任务 ':app:mergeDebugJavaResource' 执行失败。 Could not resolve all files for configuration ':app:debugRunt
我正在使用库 Chuck https://github.com/jgilfelt/chuck 我不太确定什么时候,但我最近做了一次 Android Studio 更新,我认为这可能是根本原因,因为它似
我是一名优秀的程序员,十分优秀!