Android开发各类常见错误解决方案

Posted 竹山一叶

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android开发各类常见错误解决方案相关的知识,希望对你有一定的参考价值。

本文属于个人平时项目开发过程遇到的一些问题,记录下来并总结解决方案,希望能帮到大家解决问题,有些问题的解决方案是在StackoverFlow上找到的,建议大家遇到问题多去上面找,基本上都能找到解决方案的。

(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/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 cacheLock 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了。

(5)修改了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’ 就是啥版本的。

(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文件中标签中添加

<uses-sdk tools:overrideLibrary="xxx.xxx.xxx"/>

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

<uses-sdk tools:overrideLibrary="xxx.xxx.aaa, xxx.xxx.bbb"/>

这样做是为了项目中的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 23buildToolsVersion "23.0.3"

}

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

  • 问题

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 运算符)
  • 解决方案
  • 方案一

将标红处设置为1.7.png

修改soure为1.7.png
  • 方案二
    在build gradle中进行配置如下代码:
    android {
    compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_7
    targetCompatibility JavaVersion.VERSION_1_7
    }
    }
    最后同步一下即可

(13)Glide使用问题:使用Glide加载圆角图片,第一次显示占位图

  • 问题描述
    最近在项目中使用Glide加载圆形图片,并且设置placehloder和error两个占位图,运行发现,第一次加载图片只显示占位图,需要第二次进入的时候才会正常显示。
    如果你刚好使用了这个圆形Imageview库或者其他的一些自定义的圆形Imageview,而你又刚好设置了占位的话,那么,你就会遇到第一个问题。如何解决呢?

  • 方案一
    不设置占位图

  • 方案二
    使用Glide的Transformation API自定义圆形Bitmap的转换

   /**
     * Glide圆形图片处理
     */static class CircleTransform extends BitmapTransformation {
        public CircleTransform(Context context) {
            以上是关于Android开发各类常见错误解决方案的主要内容,如果未能解决你的问题,请参考以下文章

错误记录Flutter 混合开发获取 BinaryMessenger 报错 ( FlutterActivityAndFragmentDelegate.getFlutterEngine() )(代码片段

片段中的 Xamarin Android Google 地图错误

错误记录Android Studio 编译报错 ( Could not determine java version from ‘11.0.8‘. | Android Studio 降级 )(代码片段

错误记录Android Studio 编译报错 ( Could not determine java version from ‘11.0.8‘. | Android Studio 降级 )(代码片段

ADSL(中国电信电信)常见故障代码…

Android 实用代码片段