uni-app okhttp冲突导致打包失败 移除okhttp后打包成功但运行报错

发布于 1周前 作者 sinazl 来自 Uni-App

uni-app okhttp冲突导致打包失败 移除okhttp后打包成功但运行报错

操作步骤:

  • 必现

预期结果:

  • 不报错,可以正常运行

实际结果:

  • 无法运行,提示 报同步资源失败,未得到同步资源的授权,请停止运行后重新运行,并注意手机上的授权提示

bug描述:

我们开发了一个插件,插件中有定制的okhttp.jar包,云打包制作android基座时报okhttp冲突了,所以我们在依赖中排除冲突的http版本,保留了我们自定义的okhttp,之后打包就成功了。 但是我们使用这个基座运行的时候,报同步资源失败,未得到同步资源的授权,请停止运行后重新运行,并注意手机上的授权提示


| 开发环境              | 版本号   | 项目创建方式 |
|-----------------------|----------|--------------|
| PC开发环境操作系统    | Windows  |              |
| PC开发环境操作系统版本 | win10    |              |
| HBuilderX类型         | 正式     |              |
| HBuilderX版本         | 4.28     |              |
| 手机系统              | Android  |              |
| 手机系统版本          | Android 11 |            |
| 手机厂商              | 三星     |              |
| 手机机型              | SM-A5070 |              |
| 页面类型              | vue      |              |
| vue版本               | vue2     |              |
| 打包方式              | 云端     |              |
| 项目创建方式          | HBuilderX|              |

1 回复

针对您提到的 uni-appokhttp 冲突导致打包失败的问题,以及移除 okhttp 后虽然打包成功但运行报错的情况,这里提供一个可能的解决方案和代码示例,以帮助您更好地理解和解决问题。

解决方案概述

  1. 确认冲突原因

    • uni-app 通常用于构建跨平台应用,它依赖于特定的原生插件和库。
    • okhttp 是一个流行的HTTP客户端库,常用于Android开发中。
    • 冲突可能源于uni-app或其依赖的某个原生插件已经包含了okhttp的某个版本,而您项目中又引入了另一个版本的okhttp
  2. 移除或替换okhttp

    • 如果uni-app或其依赖已经包含了okhttp,您可以尝试移除项目中显式添加的okhttp依赖。
    • 如果确实需要使用okhttp,确保版本与uni-app及其依赖兼容。
  3. 使用其他HTTP客户端

    • 考虑使用uni-app推荐或兼容的HTTP客户端库,如axios(在H5和小程序中)或uni.request(uni-app原生API)。

代码示例

移除okhttp依赖(假设使用Gradle)

在项目的build.gradle文件中,找到并删除与okhttp相关的依赖项:

dependencies {
    // 移除以下依赖,如果它们存在
    // implementation 'com.squareup.okhttp3:okhttp:x.y.z'
    // 或者
    // api 'com.squareup.okhttp3:okhttp:x.y.z'
}

使用uni.request进行网络请求

uni-app中,您可以使用uni.request进行网络请求,这是一个跨平台的API,适用于H5、小程序和App等平台:

uni.request({
    url: 'https://example.com/api/data',
    method: 'GET',
    success: (res) => {
        console.log('请求成功:', res.data);
    },
    fail: (err) => {
        console.error('请求失败:', err);
    }
});

注意事项

  • 确保在移除或替换库后,彻底清理并重建项目,以避免旧的依赖缓存导致的问题。
  • 在开发过程中,使用uni-app的官方文档和社区资源来查找最佳实践和常见问题解决方案。
  • 如果问题依旧存在,考虑查看uni-appokhttp的GitHub仓库的issue区,看是否有其他开发者遇到并解决了类似的问题。

通过上述步骤,您应该能够解决uni-appokhttp的冲突问题,并确保应用能够正常打包和运行。

回到顶部