問題1.
Error:Execution failed for task ':app:preDebugAndroidTestBuild'. > Conflict with dependency 'com.android.support:support-annotations' in project ':app'. Resolved versions for app (26.1.0) and test app (27.1.1) differ. See https://d.android.com/r/tools/test-apk-dependency-conflicts.html for details.
意思是“com.android.support:support-annotations”依賴沖突了,APP的 是26.1.0,而 測試APP是 27.1.1
解決措施:
1).最簡單的方法,直接Rebuild Project ,此次編譯可以通過,但后面還是出現,比如:Clean Project時
2).直接在build.gradle 修改SdkVersion
compileSdkVersion 26
targetSdkVersion 26
改為
compileSdkVersion 27
targetSdkVersion 27
3). 修改 dependencies
第一印象直接添加一句
com.android.support:support-annotations:26.1.0 ,就行了吧,等你同步后,發現然并卵
我這么試了發現根本就不行。查了好久才發現并不只是這一句有問題,在google之后http://stackoverflow.com/questions/28999124/resolved-versions-for-app-22-0-0-and-test-app-21-0-3-differ給出了一些解釋。
簡單粗暴的方法,添加force強制指定annotations,你會發現成功了
configurations.all {
resolutionStrategy.force 'com.android.support:support-annotations:26.1.0'
}
問題2
android.content.res.Resources$NotFoundException: String resource ID #0x0
在給TextView的setText(Int int)方法中的int指的是R.string.xxx,不能賦值其它int值
問題3、 apk安裝出現閃退
java.lang.RuntimeException: Unable to instantiate application
在build.gradle文件中將gradle版本安裝提示修改后重新編譯得到解決
問題4
Error:Tag attribute name has invalid character ’ ‘.
Error:Tag attribute name has invalid character ’ ‘.
Error:org.gradle.process.internal.ExecException: Process ‘command
‘E:\Android\sdk\build-tools\26.0.2\aapt.exe” finished with non-zero
exit value 1 Error:Execution failed for task
‘:backend01:processDebugResources’.
Failed to execute aapt
這個錯誤是因為在AndroidManifest.xml中category的值有一個空格,將空格去除就好了
問題5
Error:Execution failed for task :app:processDebugAndroidTestResources.
No slave process to process jobs, aborting
clean和rebuild都沒有成功后,直接點擊 File>Invalidate Caches/Restart后編譯通過
問題6
新建的工程 就出現這個錯誤
- 出現的異常
Unable to resolve dependency for ':app@debug/compileClasspath': Could not resolve com.android.support.constraint:constraint-layout:1.1.1.
Open File
Show Details
- 解決方案
看錯誤的信息
Unable to resolve dependency for ':app@debug/compileClasspath': Could not resolve com.android.support.constraint:constraint-layout:1.1.1.
我的理解 不能加載1.1.1 版本的 那么 就改成
dependencies {
//noinspection GradleCompatible
implementation 'com.android.support:appcompat-v7:27.1.1'
// implementation 'com.android.support.constraint:constraint-layout:1.1.1'
//替換陳這個版本的
implementation 'com.android.support.constraint:constraint-layout:1.1.0'
implementation 'com.android.support:support-v4:27.1.1'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}
build
ok
問題7
1. Error:Execution failed for task ':app:transformNative_libsWithStripDebugSymbolForDDebug‘
java.lang.NullPointerException (no error message)
2. Error:Execution failed for task ':module:transformNative_libsWithStripDebugSymbolForDebug'.
java.lang.NullPointerException (no error message)
原因
Debug模式找不到NDK。-
解決辦法
注釋掉第11行的ndkimage
問題8
java.lang.NoClassDefFoundError: Failed resolution of: Landroid/support/v4/graphics/drawable/DrawableWrapper;
Caused by: java.lang.ClassNotFoundException: Didn't find class "android.support.v4.graphics.drawable.DrawableWrapper" on path: DexPathList[[zip file "/data/app/com.cpsc.cpsc_pgsip-2/base.apk"],nativeLibraryDirectories=[/data/app/com.cpsc.cpsc_pgsip-2/lib/arm, /data/app/com.cpsc.cpsc_pgsip-2/base.apk!/lib/armeabi-v7a, /vendor/lib, /system/lib]]
- 根據問題得知是 android.support.v4.graphics.drawable.DrawableWrapper 找不到
- 解決辦法 ,分2步
1.保持版本支持
implementation 'com.android.support:appcompat-v7:27.1.1'
implementation 'com.android.support:support-v4:27.1.1'
compile 'com.android.support:design:27.1.1'
- 找到出問題的布局重新寫一次,可能是這里的問題,我再做了1之后,發現沒什么卵用(但是保持一致的還是好的)最后還是重新寫一次布局ok了。
問題9
Error:Execution failed for task ':app:processDebugManifest'.
> Manifest merger failed : Attribute application@icon value=(@drawable/icon_hbh) from AndroidManifest.xml:30:9-42
is also present at [xxx:wallet:unspecified] AndroidManifest.xml:16:9-43 value=(@mipmap/ic_launcher).
Suggestion: add 'tools:replace="android:icon"' to <application> element at AndroidManifest.xml:27:5-48:19 to override.
原因:
AS的Gradle插件默認會啟用Manifest Merger Tool,若Library項目中也定義了與主項目相同的屬性(例如默認生成的android:icon和android:theme),則此時會合并失敗,并報上面的錯誤。
解決方案:
方法1:在在工程的Manifest.xml的application標簽下添加tools:replace=“android:icon, android:theme”(多個屬性用,隔開,并且記住在manifest根標簽上加入xmlns:tools=“http://schemas.android.com/tools”,否則會找不到namespace哦,也可以按到Alt + Enter鍵快捷添加)
方法2:在build.gradle根標簽上加上useOldManifestMerger true (懶人方法)
問題10
error: style attribute ‘@android:attr/windowEnterAnimation’ not found.
在Project/gradle.properties中添加 android.enableAapt2=false,就可以解決問題
問題11
當打包時出現Error:The number of method references in a .dex file cannot exceed 64K.的錯誤提示
1.在app的 build.gradle 中添加配置
...
android {
...
defaultConfig {
...
multiDexEnabled true
}
}
dependencies {
...
compile 'com.android.support:multidex:1.0.1'
...
}
2.在AndroidManifest.xml中的application標簽中添加繼承MultiDexApplication的類。當然,也可以不用繼承MultiDexApplication類,而是在繼承的Application類中加入下面的代碼
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}
問題12
android.content.ActivityNotFoundException: Unable to find explicit activity class {com.example.helloworld1/com.example.helloworld1.gridview.GridViewActivity}; have you declared this activity in your AndroidManifest.xml?
該錯誤信息中的 have you declared this activity in your AndroidManifest.xml?明確指出“在 AndroidManifest.xml 文件中沒有聲明相關activity”
修改如下:
在 AndroidManifest.xml 文件中 添加相關activity即可
問題13
Android resource linking failed
AAPT: D:\developer\androidproject\MyApplication\app\build\intermediates\incremental\mergeDebugResources\merged.dir\values-v28\values-v28.xml:7: error: resource android:attr/dialogCornerRadius not found.
D:\developer\androidproject\MyApplication\app\build\intermediates\incremental\mergeDebugResources\merged.dir\values-v28\values-v28.xml:11: error: resource android:attr/dialogCornerRadius not found.
D:\developer\androidproject\MyApplication\app\build\intermediates\incremental\mergeDebugResources\merged.dir\values\values.xml:2781: error: resource android:attr/fontVariationSettings not found.
D:\developer\androidproject\MyApplication\app\build\intermediates\incremental\mergeDebugResources\merged.dir\values\values.xml:2782: error: resource android:attr/ttcIndex not found.
D:\developer\androidproject\MyApplication\app\build\intermediates\incremental\mergeDebugResources\merged.dir\values\values.xml:3207: error: resource android:attr/textFontWeight not found.
error: failed linking references.
這種情況一般是項目配置導致的,打開 File–> Project Structure,看到modules選項內容如下:
在上圖中會發現compile sdk version 和build tools version版本不一致,將build tools version版本也改為26.
如下圖所示:
再次運行成功。
有時候修改了上述配置后,還會遇到“Android resource linking failed”的錯誤,但是,仔細看構建信息,可能還會遇到另外一種錯誤,如下圖標記所示:
The specified Android SDK Build Tools version (26.0.0) is ignored, as it is below the minimum supported version (29.0.2) for Android Gradle Plugin 4.0.1.
這個就涉及到Android gradle插件了,具體的可參考官網,找到相匹配的版本。
網址是:
https://developer.android.google.cn/studio/releases/gradle-plugin?hl=zh_cn
問題14
Error:(16,0) Gradle DSL method not found: 'android()'
原因:
當你通過ProjectStructure修改了編譯的版本或工具時,可能會在Project的build.gradle配置文件中添加如下腳本代碼,此時就會導致上面報錯了。
android {
compileSdkVersion 23
buildToolsVersion "23.0.0"
}
問題15
Error:Execution failed for task ':app:transformClassesWithDexForBaiduRelease'.
在引用第三方庫時,可能出現重復引用 Support 庫,而且 gradle編譯會報錯:
我們可以在項目 app 下的 build.gradle 里添加exclude排除第三方庫中的重復依賴:
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'com.android.support:appcompat-v7:27.0.0'
implementation ('com.allenliu.versionchecklib:library:2.0.5') {
exclude group: 'com.android.support', module: 'appcompat-v7'
exclude group: 'com.android.support', module: 'support-v7'
}
...
}
問題16
Duplicate jar entry [android/support/v4/hardware/display/DisplayManagerCompat.class]
根據錯誤日志可知是系統 v4 包重復依賴問題。可以在項目 app 下的 build.gradle 里添加exclude排除第三方庫中的 v4 包:
implementation ('com.xxx:xxx:2.0.1') {
exclude module: 'support-v4'
}
問題17
Error:SSL peer shut down incorrectly
在下載第三方庫時,下載任務失敗的錯誤。原因是因為下載文件的被限制了,可以更改jcenter()或maven()倉庫地址,重新下載。
更改項目根目錄下的 build.gradle 中的倉庫地址,添加新的倉庫地址(Bintray 或者 AliYun),并且要放在jcenter()之前,保證優先訪問maven()中的地址。
buildscript {
repositories {
google()
maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
jcenter()
maven { url 'https://jitpack.io' }
}
}
...
allprojects {
repositories {
google()
maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
jcenter()
maven { url 'https://jitpack.io' }
}
}
...
問題17
1、Error:Execution failed for task ':app:preDebugAndroidTestBuild'.
> Conflict with dependency 'com.android.support:support-annotations' in project ':app'. Resolved versions for app (26.1.0) and test app (27.1.1) differ.
解決:
在build.gradle文件中加入以下代碼
configurations.all {
resolutionStrategy.force 'com.android.support:support-annotations:26.1.0'
}
問題18
Error:Execution failed for task ':app:mergeDebugResources'.
> D:\workspace5\Boke\app\src\main\res\drawable\custom_Animation_progress_bar.xml: Error: 'A' is not a valid file-based resource name character: File-based resource names must contain only lowercase a-z, 0-9, or underscore
解決方法:
1、你的項目中res\drawable下存在大寫字母,將項目中對應的大寫字母改為小寫字母即可
問題19
Error:Execution failed for task ':app:compileDebugNdk'.
> com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'E:\Eclipse\android-studio-sdk\android-sdk-windows\ndk-bundle\ndk-build.cmd'' finished with non-zero exit value 2
解決方法:
1、編譯NDK時最好不要使用SDKManager里下載的ndk-bundle,否則會報這些錯誤
2、官網下載NDK開發包,r9、r10系列,然后替換掉久的ndk就可以了
問題20
Error: Avoid non-default constructors in fragments: use a default constructor plus Fragment#setArguments(Bundle) instead [ValidFragment]
解決方式:在Moudel下的build.gradle添加如下代碼
android {
lintOptions {
checkReleaseBuilds false
}
}
問題21
解決方法:
在AndroidManifest.xml里面:
tools:replace="android:label"
<meta-data
android:name="android.support.VERSION"
android:value="26.0.2"
tools:node="replace" />
問題22
[androidx.versionedparcelable:versionedparcelable:1.1.1] C:\Users\Administrator\.gradle\caches\transforms-2\files-2.1\b240857b340f59c86ea9 aaf340da2c21\versionedparcelable-1.1.1\AndroidManifest.xml Warning: Package name 'androidx.versionedparcelable' used in: androidx.versionedparcelable:versionedparcelable:1.1.1, com.android.support:v ersionedparcelable:28.0.0.
圖中顯示問題(the 'android.useAndroidX' property is not enabled),即說明了使用了AndroidX的依賴,但是并沒有在gradle.properties文件中使能,so,只需要在gradle.properties文件中加上如下兩句即可:
android.useAndroidX=true
android.enableJetifier=true
問題23
提示Suggestion: add 'tools:replace="android:appComponentFactory"' to <application> element at AndroidM
在gradle.properties 文件里面添加
android.useAndroidX=true
android.enableJetifier=true
問題24
Cannot fit requested classes in a single dex file (# methods: 76968 > 65536)
問題原因:
該項目中定義的方法太多了,一個dex已經裝不下了,需要個多個dex,也就是multidex ,因為Android系統定義總方法數是一個short int,short int 最大值為65536
解決方法
在 app 的 build.gradle 文件中
android {
defaultConfig {
// 這里添加
multiDexEnabled true
}
}
dependencies {
// 引入multidex庫
implementation 'com.android.support:multidex:1.0.3'
}
在自定義的 application 中初始化 MultiDex
public class App extends Application{
private static App mApp;
@Override
public void onCreate() {
super.onCreate();
mApp = this;
// 初始化MultiDex
MultiDex.install(this);
}
public static App getApp() {
return mApp;
}
}
問題25
Cannot find declaration to go to
解決方式:找到Studio的File菜單 找到 Invalidate Caches / Restart
問題26
java.lang.RuntimeException: ARouter::Compiler >>> No module name, for more information, look at gra
下面這就話,原文復制到defaultconfig 中即可.
javaCompileOptions {
annotationProcessorOptions {
arguments = [AROUTER_MODULE_NAME: project.getName(), AROUTER_GENERATE_DOC: "enable"]
}
}
問題27
\app\build\outputs\apk\debug\app-debug.apk' Installation failed due to: 'INSTALL_FAILED_TEST_ONLY'
解決措施(oppo會出現安裝失敗)
在gradle.properties里添加
android.injected.testOnly=false
問題28'
Could not GET 'https://dl.bintray.com/umsdk/release/com/android/tools/build/gradle/4.0.0/gradle-4.0.0.pom'. Received status code 502 from server: Bad Gateway Disable Gradle 'offline mode' and sync project
解決:/umsdk/release/com/android/不能下載,
問題29
Using insecure protocols with repositories, without explicit opt-in, is unsupported. Switch Maven repository 'maven(XXX)' to redirect to a secure protocol (like HTTPS) or allow insecure protocols.
Caused by: org.gradle.api.InvalidUserCodeException: Using insecure protocols with repositories, without explicit opt-in, is unsupported. Switch Maven repository
解決方法
1 添加關鍵字 allowInsecureProtocol
maven {
allowInsecureProtocol = true
url 'xxx'
}
2 maven 地址url 由http改為https
問題30
Installed Build Tools revision 31.0.0 is corrupted. Remove and install again using the SDK Manager.
翻譯成中文:
在"/Users/lijunde/Library/Android/sdk/build-tools/31.0.0/dx"文件夾中,31.0.0版本的構建工具缺少了DX文件。
已安裝的31.0.0版本的構建工具已損壞。使用SDK管理器刪除并再次安裝。
看到這個報錯信息我很疑惑,31.0.0版本的構建工具明明是從Android Studio的SDK管理器下載的,為什么會提示已損壞呢?于是我按照提示,刪除并重裝了31.0.0版本的構建工具,但重新構建項目依然提示上述錯誤信息。
接著我求助了Google和StackOverflow,終于找到了完美的解決方案。
解決方案
根據構建報錯信息"31.0.0版本的構建工具缺少了DX文件",以及StackOverflow的解決方案發現,31.0.0版本的構建工具缺少了"dx"和"dx.jar"這兩文件,正確的做法就是對應路徑的"d8"和"d8.jar"這兩文件創建副本,并分別改名為"dx"和"dx.jar","d8"和"d8.jar"這兩文件的大致路徑為:
C:\Users\user\AppData\Local\Android\Sdk\build-tools\31.0.0\d8
C:\Users\user\AppData\Local\Android\Sdk\build-tools\31.0.0\lib\d8.jar
問題30
Caused by: java.lang.ClassNotFoundException: org.gradle.api.internal.component.Usage
解決辦法 這是由于插件兼容問題導致的錯誤,如果有com.novoda:bintray-release請把版本修改為0.5.0。 PS : 感謝weixin_41101173的提示,對于大于AndroidStudio3.14版本的,請改為0.8.0 async以后 出現新的問題 從網上百度了一下,好多博客寫的是Gradle版本過高,修改成4.4(原本為4.6) 進行修改,
問題31
Duplicate class androidx.versionedparcelable.VersionedParcelable found in moudle
解決
只要在project 的gradle.properties 內加入
以下兩句
android.useAndroidX=true
android.enableJetifier=true
問題32
2021-08-06 20:32:37.206 5797-5797/com.ba.manage E/AndroidRuntime: FATAL EXCEPTION: main Process: com.ba.manage, PID: 5797 java.lang.NoClassDefFoundError: Failed resolution of: Landroid/support/v4/app/FragmentActivity; at Caused by: java.lang.ClassNotFoundException: Didn't find class "android.support.v4.app.FragmentActivity" on path: DexPathList[[zip file "/data/app/com.ba.manage-F9vM0zF4Kv55g0wDN8D-XA==/base.apk"],nativeLibraryDirectories=[/data/app/com.ba.manage-F9vM0zF4Kv55g0wDN8D-XA==/lib/arm64, /data/app/com.wq.manage-F9vM0zF4Kv55g0wDN8D-XA==/base.apk!/lib/arm64-v8a, /system/lib64, /vendor/lib64]] at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:125) at java.lang.ClassLoader.loadClass(ClassLoader.java:379) at java.lang.ClassLoader.loadClass(ClassLoader.java:312) at
解決
只要在project 的gradle.properties 內加入
以下兩句
android.useAndroidX=true
android.enableJetifier=true
問題33
00 pc 00000000002300f0 /apex/com.android.runtime/lib64/libart.so (void art::mirror::Object::VisitReferences<true, (art::VerifyObjectFlags)0, (art::ReadBarrierOption)1, art::gc::collector::ConcurrentCopying::RefFieldsVisitor<false>, art::gc::collector::ConcurrentCopying::RefFieldsVisitor<false> >(art::gc::collector::ConcurrentCopying::RefFieldsVisitor<false> const&, art::gc::collector::ConcurrentCopying::RefFieldsVisitor<false> const&)+2008) [arm64-v8a::184faa3d168755a63d13dc4ef02c74fa] 201 pc 00000000002204b0 /apex/com.android.runtime/lib64/libart.so (art::gc::collector::ConcurrentCopying::ImmuneSpaceScanObjVisitor::Callback(art::mirror::Object*, void*)+120) [arm64-v8a::184faa3d168755a63d13dc4ef02c74fa]
解決方案:
打開AndroidStudio的Device File Explorer,如下:
找到/data/local/tmp/perfd文件夾,刪除它,就可以了。我上面的是已經刪除過的。為什么會這樣,不太清楚。如果你擔心刪除有問題,可以先備份下,再刪除
問題34
e: E:\studiowork\Navigation\app\src\main\java\com\eyuai\mvvm\MvvMActivity.kt: (6, 29): Unresolved reference: BR
解決方法:
問題35
Invalid Gradle JDK configuration found. Open Gradle Settings Change JDK location
解決方案:
1.可能是沒有設置jdk, 打開File-Project Structure-SDK Location,設置JDK Location
2.把項目下的 .idea/gradle.xml中 的gradleJvm由JDK改成1.8 ,如果沒有直接加上即可, 如下圖
問題36
Duplicate class android.support.v4.app.INotificationSideChannel$Stub found in modules classes.jar (androidx.core:core:1.0.1)
解決方法:
需要在gradle.properties中添加下面兩行代碼
這是因為混合支持庫。通過添加這些行選擇androidX作為您的支持庫
android.useAndroidX=true
android.enableJetifier=true
問題36
Caused by: org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
原因`
出現這個問題可能有兩個原因
Gradle JDK和JAVA_HOME的指向的不是一個編譯器引起的,本解決方案是針對這個原因
如果還同時有Unsupported java錯誤,那么就是另一個原因了,可以查看我下面解決Unsupported java的方案
解決方案
關閉android studio, 刪除項目中的.gradle文件夾,刪除項目中的.idea文件夾,(相當于重新配置),然后再啟動android studio就可以了
如果重啟后仍然有這個錯誤,然后需要修改gradle JDK,
File->Setting->Build, Execution, Deployment->Build Tools->Gradle->Gradle projects->選擇一個jdk版本
問題
Unsupported Java.
Your build is currently configured to use Java 17.0.6 and Gradle 5.6.4.
Possible solution:
- Upgrade Gradle wrapper to 7.2 version and re-import the project
原因
java版本和Gradle版本不匹配,
解決方案
不建議點擊Possible solution, 升級gradle以后,經常會導致其他問題,所以可以選擇降級Java版本
File->Setting->Build, Execution, Deployment->Build Tools->Gradle->Gradle projects,選擇一個較低版本的Gradle JDK,
版本降低后需要同步gradle設置 File->Sync Project with Gradle Files(或者直接在工具欄同步)
如果降低一個版本以后還是不行,而且還多出一個錯誤( Caused by: org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:),那么就繼續降低,直到版本匹配
問題37
Could not install Gradle distribution from 'https://services.gradle.org/distributions/gradle-5.4.1-all.zip'. Reason: java.net.SocketTimeoutException: Connect timed out
解決方法:
在build.gradle
mavenLocal()
maven { url=uri ("https://jitpack.io") }
maven { url=uri ("https://maven.aliyun.com/repository/releases") }
// maven { url 'https://maven.aliyun.com/repository/jcenter' }
maven { url=uri ("https://maven.aliyun.com/repository/google") }
maven { url=uri ("https://maven.aliyun.com/repository/central") }
maven { url=uri ("https://maven.aliyun.com/repository/gradle-plugin") }
maven { url=uri ("https://maven.aliyun.com/repository/public") }
google()
mavenCentral()
在gradle-wrapper.properties
改成:
distributionUrl=https://mirrors.cloud.tencent.com/gradle/gradle-6.7.1-bin.zip
問題38
解決Gradle報錯:Plugin [id: ‘com.android.application‘, version: ‘x.x.x‘, apply: false] was not found
添加maven鏡像源z
pluginManagement {
repositories {
maven { url=uri ("https://jitpack.io") }
maven { url=uri ("https://maven.aliyun.com/repository/releases") }
// maven { url 'https://maven.aliyun.com/repository/jcenter' }
maven { url=uri ("https://maven.aliyun.com/repository/google") }
maven { url=uri ("https://maven.aliyun.com/repository/central") }
maven { url=uri ("https://maven.aliyun.com/repository/gradle-plugin") }
maven { url=uri ("https://maven.aliyun.com/repository/public") }
google()
mavenCentral()
gradlePluginPortal()
}
}
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
maven { url=uri ("https://jitpack.io") }
maven { url=uri ("https://maven.aliyun.com/repository/releases") }
// maven { url 'https://maven.aliyun.com/repository/jcenter' }
maven { url=uri ("https://maven.aliyun.com/repository/google") }
maven { url=uri ("https://maven.aliyun.com/repository/central") }
maven { url=uri ("https://maven.aliyun.com/repository/gradle-plugin") }
maven { url=uri ("https://maven.aliyun.com/repository/public") }
google()
mavenCentral()
}
}
rootProject.name = "My Application"
include(":app")