Android studio我们那些年遇到的坑(一)

Android studio我们那些年遇到的坑(一)


总结一下最近多年遇到的andorid studio重大问题,常见错误,另奉上处理方法

有些是查找资料看到的,有些是自己遇到的持续更新中

1、无缘无故报这个错,Error:Protocol family unavailable

该错误很多地方都是说防火墙的问题其实不然。

参考http://bbs.csdn.net/topics/391951751?page=1

 在环境变量中增加新的变量  _JAVA_OPTIONS  

其变量值为-Djava.net.preferIPv4Stack=true   ,之后重启Android studio就好了

2、Error running app: Instant Run requires 'Tools | Android | Enable ADB integration' to be enabled.

解决方案:

菜单栏,Tools -> Adnroid -> enable ADB integration

3、Error:(1, 0) Cause: com/android/build/gradle/LibraryPlugin : Unsupported major.minor version 52.0

这个错误的原因是在 工程的build.gradle

文件中的gradle 工具配置使用了gradle:+

将它

classpath 'com.Android.tools.build:gradle:+'

替换为固定版本的gradle。问题解决

 classpath "com.android.tools.build:gradle:2.1.0"

Android—那些年我们曾经遇到过的坑。。。

http://mp.weixin.qq.com/s?__biz=MzI0NDQ4OTIxMQ==&mid=2247483681&idx=1&sn=e732910939f893d31f20175e7e268cef&scene=1&srcid=0804rAdY9dvxT5PTWX2loTk6#rd

写在前面的:

曾经有没有在为引入一个lib而出现各种问题而崩溃?有没有升级studio之后各种问题而烦恼?有没有被一些莫名其妙的问题而困扰?

那就好好看看下面的总结吧,,,,

(1)将Eclipse项目导入到Android studio 中 很多点9图出现问题解决方法:

在build.gradle里添加以下两句:

aaptOptions.cruncherEnabled = false    

aaptOptions.useNewCruncher = false

用来关闭Android Studio的PNG合法性检查的,直接不让它检查。

(2)Android Studio 错误: 非法字符: '\ufeff' 解决方案|错误: 需要class, interface或enum

原因:

Eclipse可以智能的把UTF-8+BOM文件转为普通的UTF-8文件,Android Studio还没有这个功能,所以使用Android Studio编译UTF-8+BOM编码的文件时会出现” 非法字符: '\ufeff' “之类的错误

解决方法:

手动将UTF-8+BOM编码的文件转为普通的UTF-8文件。用EdItPlus打开.java文件依次:文档》文本编辑》转换文本编码》选择UTF-8编码即可

(3)将项目导入到AS中出现以下问题:

Error:Execution failed for task

':app:transformResourcesWithMergeJavaResForDebug'

. > com.android.bui

解决方法:

在build.grade中添加以下代码:

android{

packagingOptions {

exclude 'META-INF/DEPENDENCIES.txt'exclude

'META-INF/NOTICE'exclude 'META-INF/NOTICE.txt'

exclude 'META-INF/LICENSE'exclude 'META-INF/LICENSE.txt'

}

}

(4)未知错误

Error:Timeout waiting to lock cp_proj class cache for

build file '/Users/Mr.xiao/Desktop/AndroidShopNC2014Mob

lieNew/androidShopNC2014Moblie/build.gradle'

(/Users/Mr.xiao/.gradle/caches/2.10/scripts

/build_3cyr7hzjurcc62ge3ixidshos/cp_proj).

It is currently in use by another Gradle instance.

Owner PID: unknownOur PID: 1412Owner Operation:

unknownOur operation: Initialize cacheLock

file: /Users/Mr.xiao/.gradle/caches/2.10/scripts/build_3

cyr7hzjurcc62ge3ixidshos/cp_proj/cache.properties.lock

解决方案

以上是错误提示。

解决的思路很简单只需要把cache.properties.lock文件删除了就可以了。当时我们删除的时候会被占用这时候需要进入任务管理器结束关于java的进程就行比如 java 的jdk 删除后重启让java jdk启动  启动Android Studio就能启动APK了。

(5)修改了Android项目的最小SDK版本之后出现很多stysle文件找不到

解决方案

compileSdkVersion 23buildToolsVersion "23.0.3"

defaultConfig {

applicationId "net.mmloo2014.android"minSdkVersion

14targetSdkVersion 23}

compileSdkVersion 是多少版本的

那么compile 'com.android.support:appcompat-v7:23.2.1’ 就是啥版本的。

(6)Android studio 编译问题:finished with non-zero exit value 2 问题:

Error:Execution failed for task '

:androidShopNC2014Moblie:transformClassesWithDexForDebug'

.>com.android.build.api.transform.TransformException:

com.android.ide.common.process.ProcessException:

java.util.concurrent.ExecutionException:

com.android.ide.common.process.ProcessException:

org.gradle.process.internal.ExecException:

Process 'command '/Library/Java/JavaVirtualMachines/

jdk1.7.0_79.jdk/Contents/Home/bin/java''

finished with non-zero exit value 2

解决方案

这个错误在app的build.gradle里面添加下面这句就好了。

android {

defaultConfig {

multiDexEnabled true

     }

}

(7)Android studio 编译问题:finished with non-zero exit value 1(由于导入的依赖出现重复造成的)

问题:

Error:Execution failed for task '

:app:transformClassesWithDexForDebug'.

> com.[Android](http://lib.csdn.net/base/15).build.api.

transform.TransformException:

com.android.ide.common.process.ProcessException:

org.gradle.process.internal.ExecException:

Process 'command 'F:\Program Files (x86)\[Java]

(http://lib.csdn.net/base/17)\jdk1.8.0_31\bin\java.exe'

' finished with non-zero exit value 1

解决方案

这个是因为依赖包重复了 (像v4和nineoldandroids),app中实现了对easeUI的依赖,但是app和easeUI都添加了对这个包的依赖。所以就报这个错误,修改之后再报,就clean,rebuild一下。

(8)问题

Error:Execution failed for task

':app:transformClassesWithJarMergingForDebug'.>

com.android.build.api.transform.TransformException:

java.util.zip.ZipException:duplicate entry:

org/apache/http/ConnectionClosedException.class

解决方案

这个是在我们启动的时候报错的,而不是在编译的时候,原因是这样的,报这个错是因为有2个库中存在相同的类。大家可以看到stackoverflow上有人也提了这样的问题。只需要删除其中的一个就可以解决了。

(9)添加第三方依赖出现的问题

Error:Execution failed for task ':

app:processDebugManifest'.

>

Manifest merger failed :

uses-sdk:minSdkVersion 14 cannot be smaller than version

19 declared in library [com.github.meikoz:basic:2.0.3]

/AndroidStudioCode/EnjoyLife/app/build/intermediates/

exploded-aar/

com.github.meikoz/basic/2.0.3/AndroidManifest.xml

Suggestion: use tools:overrideLibrary="com.android.core"

to force usage

错误原因

出现这个错误的原因是我引入的第三方库最低支持版本高于我的项目的最低支持版本,异常中的信息显示:我的项目的最低支持版本为14,而第三方库的最低支持版本为19,所以抛出了这个异常。

解决方案

在AndroidManifest.xml文件中标签中添加

其中的xxx.xxx.xxx为第三方库包名,如果存在多个库有此异常,则用逗号分割它们,例如:

这样做是为了项目中的AndroidManifest.xml和第三方库的AndroidManifest.xml合并时可以忽略最低版本限制。

(10)Android studio 编译问题:finished with non-zero exit value 1(由于buildtools版本太高造成的)

错误

Error:Execution failed for task ':app:

transformClassesWithDexForDebug'.

> com.android.ide.common.process.ProcessException:

org.gradle.process.internal.ExecException:

Process 'command '/Library/Java/JavaVirtualMachines/

jdk1.7.0_79.jdk/Contents/Home/bin/java''

finished with non-zero exit value 1

错误原因

buildToolsVersion版本太高,我原来的 buildToolsVersion "24.0.0” 需要jdk1.8,而我的是jdk1.7,所以一直报这个错,刚开始以为是v4包和V7包冲突,因为之前遇到这样的问题,而这次删除V4包之后依然报这个错,上stackoverflow搜了一下,把buildTools版本降下来就好了。

解决方案

android {

compileSdkVersion 23

buildToolsVersion "23.0.3"

}

(11)Android studio 编译问题:Gradle DSL not found 'android()'


Android studio我们那些年遇到的坑(一)_第1张图片

clipboard.png

解决方案

配置build.gradle:

buildscript {

repositories {  

jcenter()

}

dependencies {  

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

  }

}

allprojects {  

repositories {    

jcenter()

  }

}

buildscript {

repositories {      

jcenter()

}

dependencies {

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

   }

}

allprojects {

repositories {

jcenter()

   }

}

配置app/build.gradle:

apply plugin: 'com.android.application'android {

compileSdkVersion 23

buildToolsVersion '23.0.3'

defaultConfig {

minSdkVersion 9 targetSdkVersion 23 versionCode 1

versionName '1.0'

            }

}

dependencies {

compile 'com.android.support:appcompat-v7:23.2.1'

}

最后再同步一下sync即可。

(12)Android studio 编译问题:Gradle DSL not found 'android()'

问题描述

Error:(51, 52) 错误: -source 1.6 中不支持 diamond 运算符

(请使用 -source 7 或更高版本以启用 diamond 运算符)

解决方案

方案一


Android studio我们那些年遇到的坑(一)_第2张图片

将标红处设置为1.7.png


Android studio我们那些年遇到的坑(一)_第3张图片

修改soure为1.7.png

方案二

在build gradle中进行配置如下代码:

android {

compileOptions {sourceCompatibility JavaVersion.VERSION_1_7

targetCompatibility JavaVersion.VERSION_1_7

}

}

最后同步一下即可

(13)Android studio Build时没问题就是Run不起来。

问题描述:尤其是在加入一些依赖之后,这时build可以就表示 compile一些libs已经生成了sdk,但是run得时候 AS走了自己的缓存,导致运行上次错误的缓存的,这时候无论怎么clean、rebuild等都是没有效果的,因为AS的缓存一直存在。。。。

解决方案:这时候只有重启AS清除缓存之后重新run就好了,极端的情况下,重启电脑也是不错的选择。关于AS缓存问题稍后会作详细总结。。。


Android studio我们那些年遇到的坑(一)_第4张图片

快速编辑模式去掉

File Setting instant Run

(13)Android studio 从java 1.7修改至1.8导致的bug。

使用androidstudio2.2.0编译提出需要java.

Error:Jack is required to support java 8 language features. Either enable Jack or remove sourceCompatibility JavaVersion.VERSION_1_8.

原因:

2016 年 3 月 10 日, Google 向外界发布了 Android N 的预览版,并宣布了 Android N 的 Roadmap ,Android N 的最终版源代码将于今年 8 或 9 月份释出到 AOSP 项目。

在众多的 Android N 新特性中,有一项新工具链的出现与 Android 生态圈的所有开发者息息相关,即 Jack & Jill 编译器的引入。在依赖了 Sun/Oracle 的 Java 编译器十年之后,Jack 是 Java Android Compiler Kit 的缩写,它可以将 Java 代码直接编译为 Dalvik 字节码,并负责 Minification, Obfuscation, Repackaging, Multidexing, Incremental compilation。它试图取代 javac/dx/proguard/jarjar/multidex 库等工具。

Android 终于有了自己的 Java 编译器。Android7.0(API24)在对JAVA8的支持上,需要使用新的编译器。

解决方法:

defaultConfig {

        applicationId "com.xxx"

        minSdkVersion 19

        targetSdkVersion 24

        versionCode 1

        versionName "1.0"

        jackOptions {

            enabled true

        }

}

在defaultConfig中添加红色部分即可

(14)下载不了 

Error:Failed to open zip file.

Gradle's dependency cache may be corrupt (this sometimes occurs after a network connection timeout.)

Re-download dependencies and sync project (requires network)

Re-download dependencies and sync project (requires network)

解决这个问题的办法有好几个:

1.可以把gradle-wrapper.properties里修改了gradle的版本,与之前没有报错的gradle版本一致,然后再修改项目build.gradle文件中的com.android.tools.build:gradle的版本号,具体是多少也是参照以前那些没有报错的项目。

2.直接在网上找到gradle-3.3-all.zip下载下来,不要解压缩,放在类似下面的目录中 C:\Users\Administrator\.gradle\wrapper\dists\gradle-3.3-all\55gk2rcmfc6p2dg9u9ohc3hw9,这个办法没有试过,按理说是可以的。下载地址在这里找:http://services.gradle.org/distributions/ ,里面各个版本都有。

3. 最简单的方法,也是我采用的方法,就是改一下gradle-wrapper.properties中的distributionUrl

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

改成

distributionUrl=http\://services.gradle.org/distributions/gradle-3.3-all.zip

以上都解决不了的话就直接把项目的的gradle文件夹删掉重新try

(15)将Eclipse项目导入到Android studio 中 很多点9图出现问题解决方法:

在build.gradle里添加以下两句:

aaptOptions.cruncherEnabled = false   

aaptOptions.useNewCruncher = false

用来关闭Android Studio的PNG合法性检查的,直接不让它检查。

(16)Android Studio 错误: 非法字符: '\ufeff' 解决方案|错误: 需要class, interface或enum

原因:

Eclipse可以智能的把UTF-8+BOM文件转为普通的UTF-8文件,Android Studio还没有这个功能,所以使用Android Studio编译UTF-8+BOM编码的文件时会出现”非法字符: '\ufeff' “之类的错误

解决方法:

手动将UTF-8+BOM编码的文件转为普通的UTF-8文件。**

**用EdItPlus打开.java文件依次:文档》文本编辑》转换文本编码》选择UTF-8编码即可

(3)将项目导入到AS中出现以下问题:

Error:Execution failed for task ':app:transformResourcesWithMergeJavaResForDebug'. > com.android.bui

解决方法:

在build.grade中添加以下代码:

android{

packagingOptions {

exclude 'META-INF/DEPENDENCIES.txt'

exclude 'META-INF/NOTICE'

exclude 'META-INF/NOTICE.txt'

exclude 'META-INF/LICENSE'

exclude 'META-INF/LICENSE.txt'

          }

}

(17)未知错误

Error:Timeout waiting to lock cp_proj class cache for build file '/Users/Mr.xiao/Desktop/AndroidShopNC2014MoblieNew/androidShopNC2014Moblie/build.gradle'

(/Users/Mr.xiao/.gradle/caches/2.10/scripts/build_3cyr7hzjurcc62ge3ixidshos/cp_proj).

It is currently in use by another Gradle instance.

Owner PID: unknown

Our PID: 1412

Owner Operation: unknown

Our operation: Initialize cache

Lock file: /Users/Mr.xiao/.gradle/caches/2.10/scripts/build_3cyr7hzjurcc62ge3ixidshos/cp_proj/cache.properties.lock

解决方案

以上是错误提示。

解决的思路很简单只需要把cache.properties.lock文件删除了就可以了。当时我们删除的时候会被占用这时候需要进入任务管理器结束关于java的进程就行比如 java 的jdk 删除后重启让java jdk启动  启动Android Studio就能启动APK了。

(18)修改了Android项目的最小SDK版本之后出现很多stysle文件找不到

解决方案

compileSdkVersion 23

buildToolsVersion "23.0.3"

defaultConfig {

applicationId "net.mmloo2014.android"

minSdkVersion 14

targetSdkVersion 23

}

compileSdkVersion 是多少版本的

那么compile 'com.android.support:appcompat-v7:23.2.1’ 就是啥版本的。

(19)Android studio 编译问题:finished with non-zero exit value 2

问题:

Error:Execution failed for task ':androidShopNC2014Moblie:transformClassesWithDexForDebug'.

>

com.android.build.api.transform.TransformException:

com.android.ide.common.process.ProcessException:

java.util.concurrent.ExecutionException:

com.android.ide.common.process.ProcessException:

org.gradle.process.internal.ExecException:

Process 'command '/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/bin/java'' finished with non-zero exit value 2

解决方案

这个错误在app的build.gradle里面添加下面这句就好了。

android {

defaultConfig {

multiDexEnabled true

      }

}

(20)Failed to finalize session : INSTALL_FAILED_INTERNAL_ERROR

    Session 'app': Error Installing APKs


Android studio我们那些年遇到的坑(一)_第5张图片

网上解决方案不一, 对自己有用的方案如下:

“File”-->“Settings”-->“Build, Exexution,Deployment”-->“Instant Run”

将如下勾选框去掉,确定,


Android studio我们那些年遇到的坑(一)_第6张图片

(21)Error:Please select Android SDK

解决方法:


Android studio我们那些年遇到的坑(一)_第7张图片

.iml文件里面


Android studio我们那些年遇到的坑(一)_第8张图片

加入上面这行

(22)Error:This Gradle plugin requires Studio 3.0 minimum

Android studio版本太低,导入的项目版本高其实也就是Gradle从高版本导入到低版本里面了

 今天遇到了一个Error:This Gradle plugin requires Studio 3.0 minimum这样的问题,我觉得是我的studio的版本不够高,我的studio是2.3.3版本的,导入的项目的版本应该是3.0的,其实我们可以这样,将以下内容添加到gradle.properties中:

解决方法:

1.升级现有的Android studio

2.其实我们可以这样,将以下内容添加到gradle.properties中:android.injected.build.model.only.versioned = 3


Android studio我们那些年遇到的坑(一)_第9张图片

*****************************************************

最近一直想将自己编写程序时遇到的错误总结一下,但因为诸多原因一直都没付诸行动。这个错误总结本人将会不断更新,以下错误是本人遇到并解决了,编程工具Android studio 2.0。

错误提示一:

Error:Execution failed for task ':app:processDebugResources'.

> com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'C:\Users\Administrator\AppData\Local\Android\sdk1\build-tools\23.0.3\aapt.exe'' finished with non-zero exit value 1

问题描述及解决办法:如果你只改动了程序的某个小的部分,但是报这个错,只要点击Build->clear project就可以解决。

错误提示二:

Error:A problem occurred configuring project ':app'.> Could not resolve all dependencies for configuration ':app:_debugApkCopy'.  > Could not find com.android.support:appcompat-v7:23.4.0.    Required by:

        xcmg:app:unspecified

  > Could not find com.google.android.gms:play-services-appindexing:8.1.0.    Required by:

        xcmg:app:unspecified

  > Could not find com.android.support:support-v4:23.4.0.    Required by:

        xcmg:app:unspecified

问题描述及解决办法:如果你是导入新的已存在的代码,按如下步骤可解决问题(这是本人遇到的问题,不一定适合所有此类问题) 

步骤1 

点击SDK Manager——>SDK Tools 勾选google respository——>apply然后跟着提示走即可。 

Android studio我们那些年遇到的坑(一)_第10张图片


步骤2:上述步骤完成后,再点击Build——>clean project即可

Android studio我们那些年遇到的坑(一)_第11张图片

错误提示三:

Error:A problem occurred configuring project ':app'.> Could not resolve all dependencies for configuration ':app:_debugApkCopy'.  > Could not find com.android.support:appcompat-v7:23.4.0.    Required by:

        xcmg:app:unspecified

  > Could not find com.android.support:support-v4:23.4.0.    Required by:

        xcmg:app:unspecified

  > Could not find com.android.support:support-v4:23.4.0.    Required by:

        xcmg:app:unspecified > com.google.android.gms:play-services-appindexing:8.1.0 > com.google.android.gms:play-services-basement:8.1.0

问题描述及解决办法:如果你是导入新的已存在的代码,按如下步骤可解决问题(这是本人遇到的问题,不一定适合所有此类问题) 

步骤1 

点击SDK Manager——>SDK Tools 勾选android support respository——>apply然后跟着提示走即可。 


Android studio我们那些年遇到的坑(一)_第12张图片

步骤2 

上述步骤完成后,再点击Build——>clean project即可

错误提示四

Error:(1, 0) Plugin is too old, please update to a more recent version, or set ANDROID_DAILY_OVERRIDE environment variable to "e0a7992f192675817297767391b8206ce7252324"Fix plugin version and sync project
Open File

问题描述及解决办法:如果你是在导入一个包时出现这个问题,那么按以下步骤来修改。

步骤一:打开build.gradle,找到classpath,如图

是这里的classpath值不对,那么,怎么设置这里的值呢?

步骤二:File——>project structure 


Android studio我们那些年遇到的坑(一)_第13张图片

步骤三:project——>将android plugin version里的内容写入步骤一的classpath里。


Android studio我们那些年遇到的坑(一)_第14张图片

步骤四:上述步骤完成后,再点击Build——>clean project即可 

(未完待续……)

错误提示五 

Error:warning: Ignoring InnerClasses attribute for an anonymous inner class


Android studio我们那些年遇到的坑(一)_第15张图片

解决方案:在工程的混淆配置文件 proguard-rules.pro 中加入下面这句代码即可: 

-keepattributes EnclosingMethod

错误提示六 

All packages are not available for download!The following packages are not available:-Package id platforms;android-1 


Android studio我们那些年遇到的坑(一)_第16张图片

解决方案:抽出数据线然后重新插上。嗯,不要问我为什么,我就是这样解决的。

错误提示七 

Error:(16, 0) Could not find method android() for arguments

解决方案:在工程的最外层的build.gradle文件里删除android{}


Android studio我们那些年遇到的坑(一)_第17张图片

问题提示八 

Could not find method compile() for arguments

解决方案:在工程的最外层的build.gradle文件里的dependencies删除complie内容。然后rebuild project和clean project. 


Android studio我们那些年遇到的坑(一)_第18张图片

问题提示九:

Error:Unable to start the daemon process.

This problem might be caused by incorrect configuration of the daemon.

For example, an unrecognized jvm option is used.

Please refer to the user guide chapter on the daemon at https://docs.gradle.org/3.3/userguide/gradle_daemon.htmlPlease read the following process output to find out more:-----------------------Error occurred during initialization of VM

Could not reserve enough space for 2097152KB object heap

Java HotSpot(TM) Client VM warning: ignoring option MaxPermSize=512m; support was removed in 8.0

解决方案一:在gradle.properties里添加


Android studio我们那些年遇到的坑(一)_第19张图片

org.gradle.jvmargs=-Xmx1024m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8org.gradle.parallel=true

解决方案二:在C:\Users\yds(当前电脑用户名).gradle(如果没有新建)gradle.properties 文件里写下:

org.gradle.jvmargs=-Xmx1024m

错误提示十

android.view.InflateException: Binary XML file line #243: Attempt to invoke virtual method 'boolean java.lang.String.equals(java.lang.Object)' on a null object reference

解决方案:布局文件中写了个view(布局文件中我写的v为小写,应该大写),改为View就行了。

错误提示十一:Failed to create jvm:error code -6


Android studio我们那些年遇到的坑(一)_第20张图片

解决方案:在C:\Users\xxx(这里是电脑用户名,没有就是Admination).AndroidStudioxx.xx目录下删除studio.exe.vmoptions

错误提示十二:

android.content.res.Resources$NotFoundException: String resource ID #0x2

解决方案:当调用setText()方法时如果传入int型是不会被当成内容而是resourceID来使用!所以把int转成字符串类型

错误提示十三:

当使用NagivationView时报错:java.lang.reflect.InvocationTargetException

解决方案:(1)将Activity(入口Activity)写成CompatActivity;(2)将Manifest里将该Activity的theme改为@style/Theme.AppCompat的主题。

错误提示十四:

Error:(1, 1) A problem occurred evaluating project ':app'.

> Failed to apply plugin [id 'com.android.application']

  > Could not create plugin of type 'AppPlugin'.


Android studio我们那些年遇到的坑(一)_第21张图片

解决方案:是build.grade文件出问题,问题如下: 


Android studio我们那些年遇到的坑(一)_第22张图片

替换成如下所示 


Android studio我们那些年遇到的坑(一)_第23张图片

然后clear project

错误十四

No such property: FOR_RUNTIME for class: org.gradle.api.attributes.Usage

自从Android studio升级到3.1版本,谷歌又折腾出让你意想不到的错误。。。。

从github上下了个项目用来学习,却出现了如下错误:

1No such property: FOR_RUNTIME for class: org.gradle.api.attributes.Usage

 在网上搜索到的解决方法大都是让把Gradle降级,但是新版本的AS最低Gradle版本是4.4,没有办法降级,这就让人头疼了。

查了很久,才找到解决办法:

产生这个问题的原因是项目中导入的一个module使用了bintray插件导致的,在module的build.gradle文件中将bintray相关代码注释掉,之后进行编译,有可能会报其他错误,这个时候就继续删错误指向的语句,之后便能正常运行。

错误十五

Android:Gradle报错——No resource found that matches the given name (at 'dialogCornerRadius' with value '?android:attr/dialogCornerRadius')

今天在使用科大讯飞语音识别SDK进行语音识别功能实现时,莫名的引入了这个错误。不得不吐槽Android Studio再引入别的包时太容易出现冲突,然后导致无法找到R文件,项目无法执行。

1. 具体报错

app/build/intermediates/res/merged/debug/values-v28/values-v28.xml Error:(7, 41) No resource found that matches the given name (at 'dialogCornerRadius' with value '?android:attr/dialogCornerRadius').

...

Error:Execution failed for task ':app:processDebugResources'. com.android.ide.common.process.ProcessException: Failed to execute aapt


2. 报错原因

在build项目时默认使用了values-v28下的style.xml,但无法找到与该style.xml相匹配的资源


3. 解决办法

修改build.gradle文件,取消动态依赖,指定特定版本的依赖

PS:最好将所有引用的包都改成同一版本的依赖

修改前:

compileSdkVersion 26buildToolsVersion '26.0.2'targetSdkVersion 26compile 'com.android.support:recyclerview-v7:+'compile 'com.android.support:appcompat-v7:+'

修改后:

compileSdkVersion 26buildToolsVersion '26.0.2'targetSdkVersion 26compile 'com.android.support:recyclerview-v7:26.0.2'compile 'com.android.support:appcompat-v7:26.0.2'


使用“+”时,会自动使用最新版本的values进行build,所以最好指定SDK的版本,避免不必要的错误

当项目编译不过的时候可以尝试以下方法


Android studio我们那些年遇到的坑(一)_第24张图片

遇鉴问题修复记录

Android Studio and Gradle are using different locations for the JDK.

Android Studio: D:\RDTool\Android\Studio\jre

Gradle: C:\Program Files\Java\jdk1.8.0_191

Using different JDK locations might cause Gradle to spawn multiple daemons

when executing tasks for Android Studio and other external processes.


Android studio我们那些年遇到的坑(一)_第25张图片

在Android studio升级后,打开好久没打开的项目打包,突然就报这个错误了,一直打包失败

gradle的版本是

gradle-5.1.1-all.zip

百度都是clear和build,完全没有用。


最后发现Event log有个提示

Android Studio is using this JDK location:

            D:\Android\Android Studio\jre

            which is different to what Gradle uses by default:

            C:\java\jdk1.8.0_101

            Using different locations may spawn multiple Gradle daemons if

            Gradle tasks are run from command line while using Android Studio.

            More info...

            Set Android Studio to use the same JDK as Gradle and sync project

            Do not show this warning again


原来是我的jdk配置被改掉了。。。。。

最后选择Set Android Studio to use the same JDK as Gradle and sync project

设置一下jdk就可以成功打包了

Unable to load class 'org.gradle.api.internal.component.Usage'

我的运行环境:

Ubuntu16.04系统

Android Studio 3.0 版本

下载https://github.com/JessYanCoding/ProgressManager示例后,在工程的build.gradle里面修该成我本地的版本如下:

在编译的时候就出现了以下错误:

Error:Unable to load class 'org.gradle.api.internal.component.Usage'.

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.


Android studio我们那些年遇到的坑(一)_第26张图片

解决

这是由于插件兼容问题导致的错误,如果有com.novoda:bintray-release请把版本修改为0.5.0。

感谢weixin_41101173的提示,对于大于AndroidStudio3.14版本的,请改为0.8.0

再次编译就ok了。

解决Error:All flavors must now belong to a named flavor dimension. Learn more at https://d.android.com

这个问题是Android studio升级到3.0之后,运行的时候会提示gradle要升级到3.5版本才能编译。于是我把我的gradle升级到了

 gradle-4.1-milestone-1 版本,是2017年7月份最新版本了。

于是我把主程序的build.gradle中的gradle版本改成了这个,具体指定哪个版本我也不知道,于是就写了个3.0+

 dependencies {

        classpath 'com.android.tools.build:gradle:3.0+' 

}

然后再次编译,又发现了毒。

提示:Error:All flavors must now belong to a named flavor dimension.Learn more at https://d.android.com/r/tools/flavorDimensions-missing-error-message.html 

这个一个错误,意思是:所有的flavors都必须属于同一个风格。

=。=懵逼

去翻墙看了它提供的地址才知道:

 Plugin 3.0.0 includes a new dependency mechanism that automatically matches variants when consuming a library. This means an app's debug variant automatically consumes a library's debug variant, and so on. It also works when using flavors—an app's redDebug variant will consume a library's redDebug variant. To make this work, the plugin now requires that all flavors belong to a named flavor dimension —even if you intend to use only a single dimension. Otherwise, you will get the following build error:

Error:All flavors must now belong to a named flavor dimension.

The flavor 'flavor_name' is not assigned to a flavor dimension.

 To resolve this error, assign each flavor to a named dimension, as shown in the sample below. Because dependency matching is now taken care of by the plugin, you should name your flavor dimensions carefully. For example, if all your app and library modules use the foo dimension, you'll have less control over which flavors are matched by the plugin. 

// Specifies a flavor dimension.

flavorDimensions "color"

productFlavors {

    red {

      // Assigns this product flavor to the 'color' flavor dimension.

      // This step is optional if you are using only one dimension.

      dimension "color"

      ...

    }

    blue {

      dimension "color"

      ...

    }

}

大致是说,Plugin 3.0.0之后有一种自动匹配消耗库的机制,便于debug variant 自动消耗一个库,然后就是必须要所有的flavor 都属于同一个维度。

为了避免flavor 不同产生误差的问题,应该在所有的库模块都使用同一个foo尺寸。

= 。=还是懵逼。说一堆依然不是很理解。

但是我们从中已经知道解决方案了:

在主app的build.gradle里面的

 defaultConfig {

 targetSdkVersion:***

minSdkVersion :***

versionCode:***

 versionName :***

//版本名后面添加一句话,意思就是flavor dimension 它的维度就是该版本号,这样维度就是都是统一的了

flavorDimensions "versionCode"

示例

flavorDimensions "default"

}

就直接解决这个问题。然后app 就可以happy的运行起来了。

解决Error:All flavors must now belong to a named flavor dimension. Learn more at...

低版本的gradle里面不会出现这个错误,高版本出现,不多说,看如何解决

在defaultConfig{}中添加:

flavorDimensions "default"

保证所有的flavor 都属于同一个维度

defaultConfig {        applicationId "com.status.channel"        minSdkVersion 15        targetSdkVersion 28        versionCode 1        versionName "1.0"        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"        flavorDimensions "default"    }

How to Fix Error:(59, 8) error: cannot access ActivityCompatApi23 class file for android.support.v4.app.ActivityCompatApi23 not found

或者

Cannot access android.support.ActivityCompatApi23.RequestPermissionsRequestCodeVa;odator


不同的版本所致的可以使用下面这个解决方案

Code to fix cannot access ActivityCompatApi23 in Android Studio

configurations.all {

    resolutionStrategy.eachDependency { DependencyResolveDetails details ->

        def requested = details.requested

        if (requested.group == 'com.android.support') {

            if (!requested.name.startsWith("multidex")) {

                details.useVersion '25.3.0'

            }

        }

    }

}


Android studio我们那些年遇到的坑(一)_第27张图片

关于 '@android:attr/windowEnterAnimation' not found.的问题(解决)

问题描述:准备要写个dialog展示和隐藏的动画,很小的一个动画就可以解决,但是写的过程中遇到了这个error: style attribute '@android:attr/windowEnterAnimation' not found.这个问题,菜鸡的我,立即开始百度,看了很多,综合一下,有2种解决方案

1.把@去掉,因为已经不支持@开头的 android自带属性了

2.在gradle.properties 中添加android.enableAapt2=false  因为默认Aapt是开启的(不知道你们理解不,反正我是不知道Aapt是啥)

我先尝试了第一种方法,发现没有效果,还是报错,而且看到网上有人和我一样情况,我就确定这个确定不管用,于是我就尝试了第二种方法

成功了,这个问题就这样被我解决了

事实并不是这样,等第二天我来到公司的时候,在运行项目报错了 


Android studio我们那些年遇到的坑(一)_第28张图片

这个问题把我难住了,菜鸡的我还是直接百度,但是这次百度啥也没说,说是增强for使用的时候出错了,我擦,我没用呀,重点是我这边没有日志,就这一条,苦逼的我,下载了最新版的as,这次错误信息出来了,结果就是因为加了android.enableAapt2=false  这句话导致的,没办法只能删了这句话,最后我全局搜了一下@android:attr/windowEnterAnimation 这个,发现其他地方没改,我改了之后项目没毛病了,还是第一种解决方案是对的

粗心大意的我。。。

C:\Users\Administrator\.gradle\caches\transforms-1\files-1.1\appcompat-v7-26.1.0.aar\6a8b09efde42f84982ba083742b4753d\res\values\values.xml

Error:(1050, 5) error: resource style/Widget.AppCompat.DrawerArrowToggle (aka com.wcyq.wolfmvvmdemo:style/Widget.AppCompat.DrawerArrowToggle) not found.

Error:(862, 5) error: resource style/Widget.AppCompat.DrawerArrowToggle (aka com.wcyq.wolfmvvmdemo:style/Widget.AppCompat.DrawerArrowToggle) not found.

1.http://blog.csdn.net/qq_33337504/article/details/79129625

    在gradle.properties 文件下添加 android.enableAapt2=false

2.http://blog.csdn.net/lyc088456/article/details/79011385 

   在AS 的左上角 选择 -->File-->invalidated and Restart 一下

操作了,没解决我的问题.

一时间搞得很烦躁.后来自己改了下依赖版本号,结果就好了,操

没改之前; 这个是studio自动生成的.

dependencies {

    implementation fileTree(dir: 'libs', include: ['*.jar'])

    implementation 'com.android.support:appcompat-v7:26.+'

    implementation 'com.android.support.constraint:constraint-layout:1.0.2'

    testImplementation 'junit:junit:4.12'

    androidTestImplementation 'com.android.support.test:runner:1.0.1'

    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'

}

改了之后;

dependencies {

    implementation fileTree(dir: 'libs', include: ['*.jar'])

    implementation 'com.android.support:appcompat-v7:25.+'

    implementation 'com.android.support.constraint:constraint-layout:1.0.2'

    testImplementation 'junit:junit:4.12'

    androidTestImplementation 'com.android.support.test:runner:1.0.1'

    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'

}

 程序能跑起来了.真是毙了狗了,studio一升级,尽是些狗屁问题,建议没有升级的还是不要升级这些新版本,问题搞的头大!

27.Android app运行到vivo手机上是弹出安装失败,安装包损坏。

我的解决方法是在 项目的 gradle.properties中加入一行这个代码,重新运行即可解决运行安装失败的问题。

android.injected.testOnly = false

28.Androidstudio 运行app安装失败

Android studio我们那些年遇到的坑(一)_第29张图片

该方法慎用

未完待续

你可能感兴趣的:(Android studio我们那些年遇到的坑(一))