# 架包与so库冲突

## 一.架包冲突

常见冲突的架包为okhttp、okio、glide、gson、zip4j等。

以glide为例：

```
报错信息：
java.lang.NoSuchMethodError No virtual method placeholder(I)Lcom/bumptech/glide/request/RequestOptions; in class Lcom/bumptech/glide/request/RequestOptions; or its super classes (declaration of 'com.bumptech.glide.request.RequestOptions' appears in /data/app/com.sdym.jinlixuexi-THEnfkL_rUo8HozNpZ2cGw==/base.apk)
```

### 方案一：

将项目中各个引入相同库的版本改为一致。

### 方案二：

排除掉多场景SDK中的库，导入项目中需要的版本，如下：

```
api('net.polyv.android:polyvSDKLiveScenes:1.10.8') {
        exclude group:'com.github.bumptech.glide',module:'glide'
    }
implementation 'com.github.bumptech.glide:okhttp3-integration:xx.xx.xx'
```

## 二.so库冲突

常见的so库冲突为libc++\_shared.so库

```
报错信息：
2 files found with path 'lib/arm64-v8a/ibc++-shared.so' from inputs:If you are using jniLibs and CMake IMPORTED targets, seehttps://developer.android.com/r/tools/jniLibs-vs-imported-targets
C:\sers Administratorl.gradle caches transfoms-3 3145107184bd587ba19fcadd7645transfomedjetified-mediaplayer-FuL-1,1.1 jnlar64-8e Libc+-_sthared.st
C: Users Adinistrator).grdlecaches transfom-\705ecaad84efaed5edddf21db transfomed jetified-pdfium-androd-1.90jnam64-vBa libc++-shared.s
```

### 解决方案：

```
在defaultConfig中加入packagingOptions选项:

packaging0ptions {
//下面为实际重复导致报错的so文件
pickFirst 'lib/arm64-v8a/libc++_shared.so
pickFirst 'lib/armeabi-v7a/libc++_shared.so
pickFirst 'lib/x86/libc++_shared.so'
pickFirst 'lib/x86_64/libc++_shared.so'
}
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://polyv.gitbook.io/document/docs/live/solution/common-problem/android/library_conflict.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
