天天看點

Android ---------- 疑難雜症

1.  

ERROR: Unable to find method 'org.gradle.api.tasks.compile.CompileOptions.setBootClasspath(Ljava/lang/String;)V'.
Possible causes for this unexpected error include:
Gradle's dependency cache may be corrupt (this sometimes occurs after a network connection timeout.)
Re-download dependencies and sync project (requires network)

The state of a Gradle build process (daemon) may be corrupt. Stopping all Gradle daemons may solve this problem.
Stop Gradle build processes (requires restart)

Your project may be using a third-party plugin which is not compatible with the other plugins in the project or the version of Gradle requested by the project.

In the case of corrupt Gradle processes, you can also try closing the IDE and then killing all Java processes.
           

這個錯誤是:gradle 版本太低,導緻有些依賴下不下來。我使用的版本為:

ext {
    compileSdkVersion = 26
    buildToolsVersion = "26.0.2"
    targetSdkVersion = 26
    versionCode = 1
    versionName = "3.7.8"
}


distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip

classpath 'com.android.tools.build:gradle:3.0.0'
           

解決方法: 先将gradle配置為高版本

ext {
    compileSdkVersion = 28
    buildToolsVersion = "28.0.3"
    targetSdkVersion = 26
    versionCode = 1
    versionName = "3.7.8"
}


classpath 'com.android.tools.build:gradle:3.5.2'


distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip
           

将所用依賴下載下傳完成,然後在配置回低版本

2.

AGPBI: {"kind":"error","text":"Error converting bytecode to dex:\nCause: com.android.dex.DexException: Multiple dex files define Lokhttp3/internal/ws/WebSocketReader$FrameCallback;","sources":[{}],"original":"UNEXPECTED TOP-LEVEL EXCEPTION:\ncom.android.dex.DexException: Multiple dex files define Lokhttp3/internal/ws/WebSocketReader$FrameCallback;\n","tool":"Dex"}
AGPBI: {"kind":"error","text":"com.android.dex.DexException: Multiple dex files define Lokhttp3/internal/ws/WebSocketReader$FrameCallback;","sources":[{}]}
           

 參考文檔:https://blog.csdn.net/xinpengfei521/article/details/79127387

問題:第三方依賴引用了okhttp3,而自己項目也引用了okhttp, 是以沖突了。

解決:

a. 首先檢視哪些依賴引用了okhttp3;

在Android studio 的Terminal  輸入:

gradlew app:dependencies
           

如果沒有權限: chmod +x gradlew

Android ---------- 疑難雜症

可以看到retrofit2引用了okhttp3.接着找

Android ---------- 疑難雜症

發現我們引入的react-native 依賴中也引用了okhttp3. 

b. 處理重複引用依賴:移除多餘的引用。

修改前:

Android ---------- 疑難雜症

修改後:

Android ---------- 疑難雜症