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

来源:互联网 发布:知乎 朱炫 西游记 编辑:程序博客网 时间:2024/06/04 01:18

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


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


aaptOptions.cruncherEnabled = false     aaptOptions.useNewCruncher = false

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


2. 添加第三方依赖出现的问题

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.xmlSuggestion: 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合并时可以忽略最低版本限制。


3. JAR包冲突问题


  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个库中存在相同的类。只需要删除其中的一个就可以解决了。

4. 修改了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’ 就是啥版本的。


5. 将项目导入到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'        }}

6. 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编码即可

7. 未知错误

   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: unknownOur PID: 1412Owner Operation: unknownOur 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了。

8. 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      }   }

9. 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"
   }

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


  • 问题描述
    Error:(51, 52) 错误: -source 1.6 中不支持 diamond 运算符   (请使用 -source 7 或更高版本以启用 diamond 运算符)
  • 解决方案
  • 在build gradle中进行配置如下代码:
    android {compileOptions {sourceCompatibility JavaVersion.VERSION_1_7targetCompatibility JavaVersion.VERSION_1_7}}
  • 最后同步一下即可


11.json数据解析问题:json串头部出现字符:"\ufeff" 解决方法


异常信息

org.json.JSONException: Value  of type java.lang.String cannot be converted to JSONObject

解析服务器返回 的json格式数据时,我们可能会发现,数据格式上是没有问题的,但是仔细对比会发现,在json串头部发现字符:"\ufeff"

客户端解决方案:

/** * 异常信息:org.json.JSONException: Value  of type java.lang.String cannot be converted to JSONObject * json串头部出现字符:"\ufeff" 解决方法* @param data * @return */public static final String removeBOM(String data) {    if (TextUtils.isEmpty(data)) {                 return data;    }    if (data.startsWith("\ufeff")) {                return data.substring(1);           } else {                return data;            }}

服务器端解决方案:


将输出此json的PHP源码重新用editplus之类用utf-8无BOM的编码保存。不要用windows系统自带的记事本编辑php源码,这个BOM就是记事本这些windows自带的编辑器引入的。




















0 0
原创粉丝点击