<meta charset="utf-8">
问题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行的ndk
问题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 'https://maven.aliyun.com/repository/public/' }
mavenCentral()
maven { url 'https://maven.aliyun.com/repository/gradle-plugin' }
在gradle-wrapper.properties
改成:
distributionUrl=https://mirrors.cloud.tencent.com/gradle/gradle-6.7.1-bin.zip