You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Linux环境下Detox构建Android项目遇依赖与Jetifier适配错误

解决Linux下Detox Android构建的AndroidX与依赖版本冲突问题

我之前在Linux环境搭建Detox Android构建时也踩过一模一样的坑——Mac上跑的好好的,到Linux就因为Jetifier和依赖版本炸了,给你整理几个亲测有效的解决步骤:

核心问题拆解

你碰到的问题本质是两个关键点:

  • Linux环境下Gradle的Jetifier没有正确完成Android Support到AndroidX的包替换
  • com.squareup.okhttp3:okhttp(涉及3.4.1/3.10.0/3.11.0版本)和com.squareup.okio:okio(涉及1.9.0/1.14.0版本)存在版本冲突,导致minReactNative44DebugCompileClasspath配置无法解析,原因是RuntimeClasspath的强制版本和依赖路径中的版本不兼容

具体解决步骤

1. 强制统一冲突依赖的版本

在项目根目录的顶级build.gradle(不是app模块下的那个)中,添加resolutionStrategy来锁定冲突依赖的版本,选一个能兼容所有子依赖的稳定版本:

allprojects {
    repositories {
        // 你的仓库配置...
    }
    configurations.all {
        resolutionStrategy {
            // 强制统一okhttp版本,3.12.13兼容多数RN版本和Detox
            force 'com.squareup.okhttp3:okhttp:3.12.13'
            // 对应okio的兼容稳定版
            force 'com.squareup.okio:okio:1.14.0'
        }
    }
}

2. 确保Jetifier配置正确并清理缓存

  • 检查项目根目录的gradle.properties,确认以下配置存在且正确:
    android.useAndroidX=true
    android.enableJetifier=true
    
  • Linux下Jetifier的缓存经常会出现异常,执行以下命令清理所有Gradle缓存和构建产物:
    # 清理项目构建产物
    ./gradlew clean
    # 删除项目本地Gradle缓存
    rm -rf .gradle/
    # 若上面步骤无效,再删除用户全局Gradle缓存
    rm -rf ~/.gradle/caches/
    

3. 验证Detox与React Native版本兼容性

确保你使用的Detox版本和React Native版本兼容——某些旧版Detox在Linux下对AndroidX的支持存在bug,你可以查看Detox的官方版本说明,升级到最新稳定版,或者降级到和你的RN版本匹配的Detox版本。

4. 重新执行构建

完成上述步骤后,重新运行Detox构建命令:

detox build --configuration android.emu.debug

内容的提问来源于stack exchange,提问作者lokendra rawat

火山引擎 最新活动